Merge branch 'master' into 352217-new-admin-console
Conflicts:
org.eclipse.virgo.apps.admin.core/.classpath
org.eclipse.virgo.apps.admin.web/.classpath
diff --git a/build-apps/build.xml b/build-apps/build.xml
index b7ced4d..aaa0264 100644
--- a/build-apps/build.xml
+++ b/build-apps/build.xml
@@ -3,8 +3,7 @@
<path id="unit.test.bundles">
<pathelement location="../org.eclipse.virgo.apps.splash"/>
- <pathelement location="../org.eclipse.virgo.apps.admin.core"/>
- <pathelement location="../org.eclipse.virgo.apps.admin.web"/>
+ <pathelement location="../org.eclipse.virgo.apps.admin"/>
<pathelement location="../org.eclipse.virgo.apps.repository.core"/>
<pathelement location="../org.eclipse.virgo.apps.repository.web"/>
</path>
diff --git a/build-apps/virgo.profile.js b/build-apps/virgo.profile.js
deleted file mode 100644
index e002bdc..0000000
--- a/build-apps/virgo.profile.js
+++ /dev/null
@@ -1,31 +0,0 @@
-// How to build the dojo libary
-// author Christopher Frost (vmware employee)
-
-// The virgo dojo build is run by calling:
-// ./build.sh profile=virgo action=clean,release
-// from the /util/buildscripts directory of dojo source
-
-dependencies = {
- stripConsole: "normal",
-
- layers: [
- {
- name: "virgo-dojo.js",
- dependencies: [
- "dijit.TitlePane",
- "dijit.tree.ForestStoreModel",
- "dijit.Tree",
- "dojox.data.QueryReadStore",
- "dijit.form.Button"
- ]
- }
- ],
-
- prefixes: [
- [ "dijit", "../dijit" ],
- [ "dojox", "../dojox" ]
- ]
-}
-// After running this to produce the required build layers the following can be deleted.
-// ./dojox
-// much more can be deleted but there is no need to do so as it will only mean extra work adding them back in if these features are required later.
\ No newline at end of file
diff --git a/build.versions b/build.versions
index 14e529c..d6452e4 100644
--- a/build.versions
+++ b/build.versions
@@ -22,6 +22,8 @@
org.springframework=3.0.5.RELEASE
org.eclipse.osgi.services=3.3.0.v20110513
org.eclipse.equinox.cm=1.0.300.v20101204
+org.jolokia.osgi=1.0.0
+org.eclipse.gemini.management=1.0.0.M01-incubation
# Test
org.eclipse.virgo.teststubs=3.5.0.D-20120329112850
diff --git a/org.eclipse.virgo.apps.admin.core/.classpath b/org.eclipse.virgo.apps.admin.core/.classpath
deleted file mode 100644
index 5c878ea..0000000
--- a/org.eclipse.virgo.apps.admin.core/.classpath
+++ /dev/null
@@ -1,48 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<classpath>
- <classpathentry kind="src" path="src/main/java">
- <attributes>
- <attribute name="com.springsource.server.ide.jdt.core.test.classpathentry" value="false"/>
- </attributes>
- </classpathentry>
- <classpathentry kind="src" path="src/main/resources">
- <attributes>
- <attribute name="com.springsource.server.ide.jdt.core.test.classpathentry" value="false"/>
- </attributes>
- </classpathentry>
- <classpathentry kind="src" output="target/test-classes" path="src/test/java">
- <attributes>
- <attribute name="com.springsource.server.ide.jdt.core.test.classpathentry" value="true"/>
- </attributes>
- </classpathentry>
- <classpathentry kind="src" output="target/test-classes" path="src/test/resources">
- <attributes>
- <attribute name="com.springsource.server.ide.jdt.core.test.classpathentry" value="true"/>
- </attributes>
- </classpathentry>
- <classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER"/>
- <classpathentry kind="var" path="APPS_IVY_CACHE/org.junit/com.springsource.org.junit/4.7.0/com.springsource.org.junit-4.7.0.jar" sourcepath="/APPS_IVY_CACHE/org.junit/com.springsource.org.junit/4.7.0/com.springsource.org.junit-sources-4.7.0.jar"/>
- <classpathentry kind="var" path="APPS_IVY_CACHE/org.eclipse.virgo.kernel/org.eclipse.virgo.kernel.services/3.5.0.D-20120403111529/org.eclipse.virgo.kernel.services-3.5.0.D-20120403111529.jar"/>
- <classpathentry kind="var" path="APPS_IVY_CACHE/org.eclipse.virgo.nano/org.eclipse.virgo.kernel.core/3.5.0.D-20120403110031/org.eclipse.virgo.kernel.core-3.5.0.D-20120403110031.jar" sourcepath="/APPS_IVY_CACHE/org.eclipse.virgo.kernel/org.eclipse.virgo.kernel.core/2.0.0.D-164/org.eclipse.virgo.kernel.core-sources-2.0.0.D-164.jar"/>
- <classpathentry kind="var" path="APPS_IVY_CACHE/org.springframework/org.springframework.context/3.0.5.RELEASE/org.springframework.context-3.0.5.RELEASE.jar" sourcepath="/APPS_IVY_CACHE/org.springframework/org.springframework.context/3.0.5.RELEASE/org.springframework.context-sources-3.0.5.RELEASE.jar"/>
- <classpathentry kind="var" path="APPS_IVY_CACHE/org.springframework/org.springframework.core/3.0.5.RELEASE/org.springframework.core-3.0.5.RELEASE.jar" sourcepath="/APPS_IVY_CACHE/org.springframework/org.springframework.core/3.0.5.RELEASE/org.springframework.core-sources-3.0.5.RELEASE.jar"/>
- <classpathentry kind="var" path="APPS_IVY_CACHE/org.springframework/org.springframework.beans/3.0.5.RELEASE/org.springframework.beans-3.0.5.RELEASE.jar" sourcepath="/APPS_IVY_CACHE/org.springframework/org.springframework.beans/3.0.5.RELEASE/org.springframework.beans-sources-3.0.5.RELEASE.jar"/>
- <classpathentry kind="var" path="APPS_IVY_CACHE/org.eclipse.virgo.kernel/org.eclipse.virgo.kernel.deployer/3.5.0.D-20120403111529/org.eclipse.virgo.kernel.deployer-3.5.0.D-20120403111529.jar" sourcepath="/APPS_IVY_CACHE/org.eclipse.virgo.kernel/org.eclipse.virgo.kernel.deployer.core/3.5.0.D-20120403111529/org.eclipse.virgo.kernel.deployer.core-sources-3.5.0.D-20120403111529.jar"/>
- <classpathentry kind="var" path="APPS_IVY_CACHE/org.eclipse.osgi/org.eclipse.osgi/3.7.1.R37x_v20110808-1106/org.eclipse.osgi-3.7.1.R37x_v20110808-1106.jar" sourcepath="/APPS_IVY_CACHE/org.eclipse.osgi/org.eclipse.osgi/3.7.1.R37x_v20110808-1106/org.eclipse.osgi-sources-3.7.1.R37x_v20110808-1106.jar"/>
- <classpathentry kind="var" path="APPS_IVY_CACHE/org.eclipse.virgo.kernel/org.eclipse.virgo.kernel.osgi/3.5.0.D-20120403111529/org.eclipse.virgo.kernel.osgi-3.5.0.D-20120403111529.jar" sourcepath="/APPS_IVY_CACHE/org.eclipse.virgo.kernel/org.eclipse.virgo.kernel.osgi/3.5.0.D-20120403111529/org.eclipse.virgo.kernel.osgi-sources-3.5.0.D-20120403111529.jar"/>
- <classpathentry kind="var" path="APPS_IVY_CACHE/org.eclipse.virgo.util/org.eclipse.virgo.util.common/3.5.0.D-20120403104609/org.eclipse.virgo.util.common-3.5.0.D-20120403104609.jar"/>
- <classpathentry kind="var" path="APPS_IVY_CACHE/org.eclipse.gemini/org.eclipse.gemini.blueprint.core/1.0.0.RELEASE/org.eclipse.gemini.blueprint.core-1.0.0.RELEASE.jar"/>
- <classpathentry kind="var" path="APPS_IVY_CACHE/org.eclipse.osgi/org.eclipse.osgi.services/3.3.0.v20110513/org.eclipse.osgi.services-3.3.0.v20110513.jar" sourcepath="/APPS_IVY_CACHE/org.apache.felix/org.apache.felix.configadmin/1.2.4/org.apache.felix.configadmin-sources-1.2.4.jar"/>
- <classpathentry kind="var" path="APPS_IVY_CACHE/org.eclipse.virgo.teststubs/org.eclipse.virgo.teststubs.osgi/3.5.0.D-20120403105015/org.eclipse.virgo.teststubs.osgi-3.5.0.D-20120403105015.jar" sourcepath="/APPS_IVY_CACHE/org.eclipse.virgo.test/org.eclipse.virgo.teststubs.osgi/3.5.0.D-20120403105015/org.eclipse.virgo.teststubs.osgi-sources-3.5.0.D-20120403105015.jar"/>
- <classpathentry kind="var" path="APPS_IVY_CACHE/org.eclipse.virgo.kernel/org.eclipse.virgo.kernel.shell/3.5.0.D-20120403111529/org.eclipse.virgo.kernel.shell-3.5.0.D-20120403111529.jar" sourcepath="/APPS_IVY_CACHE/org.eclipse.virgo.kernel/org.eclipse.virgo.kernel.shell/3.5.0.D-20120403111529/org.eclipse.virgo.kernel.shell-sources-3.5.0.D-20120403111529.jar"/>
- <classpathentry kind="var" path="APPS_IVY_CACHE/org.aspectj/com.springsource.org.aspectj.runtime/1.6.12.RELEASE/com.springsource.org.aspectj.runtime-1.6.12.RELEASE.jar"/>
- <classpathentry kind="var" path="APPS_IVY_CACHE/org.eclipse.virgo.kernel/org.eclipse.virgo.kernel.model/3.5.0.D-20120403111529/org.eclipse.virgo.kernel.model-3.5.0.D-20120403111529.jar" sourcepath="/APPS_IVY_CACHE/org.eclipse.virgo.kernel/org.eclipse.virgo.kernel.model/2.0.0.D-20091006155952/org.eclipse.virgo.kernel.model-sources-2.0.0.D-20091006155952.jar"/>
- <classpathentry kind="var" path="APPS_IVY_CACHE/org.slf4j/com.springsource.slf4j.api/1.6.1/com.springsource.slf4j.api-1.6.1.jar"/>
- <classpathentry kind="var" path="APPS_IVY_CACHE/org.slf4j/com.springsource.slf4j.nop/1.6.1/com.springsource.slf4j.nop-1.6.1.jar"/>
- <classpathentry kind="var" path="APPS_IVY_CACHE/org.easymock/com.springsource.org.easymock/2.3.0/com.springsource.org.easymock-2.3.0.jar"/>
- <classpathentry kind="var" path="APPS_IVY_CACHE/org.eclipse.virgo.util/org.eclipse.virgo.util.io/3.5.0.D-20120403104609/org.eclipse.virgo.util.io-3.5.0.D-20120403104609.jar"/>
- <classpathentry kind="var" path="APPS_IVY_CACHE/org.eclipse.virgo.util/org.eclipse.virgo.util.osgi.manifest/3.5.0.D-20120403104609/org.eclipse.virgo.util.osgi.manifest-3.5.0.D-20120403104609.jar"/>
- <classpathentry kind="var" path="APPS_IVY_CACHE/org.eclipse.virgo.kernel/org.eclipse.virgo.kernel.artifact/3.5.0.D-20120403111529/org.eclipse.virgo.kernel.artifact-3.5.0.D-20120403111529.jar"/>
- <classpathentry kind="var" path="APPS_IVY_CACHE/org.eclipse.virgo.nano/org.eclipse.virgo.deployer.api/3.5.0.D-20120403110031/org.eclipse.virgo.deployer.api-3.5.0.D-20120403110031.jar"/>
- <classpathentry kind="output" path="target/classes"/>
-</classpath>
diff --git a/org.eclipse.virgo.apps.admin.core/.project b/org.eclipse.virgo.apps.admin.core/.project
deleted file mode 100644
index 0a6f985..0000000
--- a/org.eclipse.virgo.apps.admin.core/.project
+++ /dev/null
@@ -1,35 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<projectDescription>
- <name>org.eclipse.virgo.apps.admin.core</name>
- <comment></comment>
- <projects>
- </projects>
- <buildSpec>
- <buildCommand>
- <name>org.eclipse.wst.common.project.facet.core.builder</name>
- <arguments>
- </arguments>
- </buildCommand>
- <buildCommand>
- <name>org.eclipse.jdt.core.javabuilder</name>
- <arguments>
- </arguments>
- </buildCommand>
- <buildCommand>
- <name>org.springframework.ide.eclipse.core.springbuilder</name>
- <arguments>
- </arguments>
- </buildCommand>
- <buildCommand>
- <name>com.springsource.server.ide.bundlor.core.builder</name>
- <arguments>
- </arguments>
- </buildCommand>
- </buildSpec>
- <natures>
- <nature>com.springsource.server.ide.facet.core.bundlenature</nature>
- <nature>org.springframework.ide.eclipse.core.springnature</nature>
- <nature>org.eclipse.jdt.core.javanature</nature>
- <nature>org.eclipse.wst.common.project.facet.core.nature</nature>
- </natures>
-</projectDescription>
diff --git a/org.eclipse.virgo.apps.admin.core/.settings/org.eclipse.virgo.ide.bundlor.core.prefs b/org.eclipse.virgo.apps.admin.core/.settings/org.eclipse.virgo.ide.bundlor.core.prefs
deleted file mode 100644
index ff53e65..0000000
--- a/org.eclipse.virgo.apps.admin.core/.settings/org.eclipse.virgo.ide.bundlor.core.prefs
+++ /dev/null
@@ -1,3 +0,0 @@
-#Mon Dec 07 16:22:36 GMT 2009
-org.eclipse.virgo.ide.bundlor.core.template.properties.files=../build.properties;../build.versions
-eclipse.preferences.version=1
diff --git a/org.eclipse.virgo.apps.admin.core/.settings/org.eclipse.wst.common.project.facet.core.xml b/org.eclipse.virgo.apps.admin.core/.settings/org.eclipse.wst.common.project.facet.core.xml
deleted file mode 100644
index 801f856..0000000
--- a/org.eclipse.virgo.apps.admin.core/.settings/org.eclipse.wst.common.project.facet.core.xml
+++ /dev/null
@@ -1,4 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<faceted-project>
- <installed facet="com.springsource.server.bundle" version="1.0"/>
-</faceted-project>
diff --git a/org.eclipse.virgo.apps.admin.core/.settings/org.springframework.ide.eclipse.core.prefs b/org.eclipse.virgo.apps.admin.core/.settings/org.springframework.ide.eclipse.core.prefs
deleted file mode 100644
index 5bdb54c..0000000
--- a/org.eclipse.virgo.apps.admin.core/.settings/org.springframework.ide.eclipse.core.prefs
+++ /dev/null
@@ -1,32 +0,0 @@
-#Mon Dec 07 16:22:36 GMT 2009
-eclipse.preferences.version=1
-org.springframework.ide.eclipse.core.builders.enable.beanmetadatabuilder=true
-org.springframework.ide.eclipse.core.enable.project.preferences=false
-org.springframework.ide.eclipse.core.validator.enable.com.springsource.server.ide.manifest.core.manifestvalidator=true
-org.springframework.ide.eclipse.core.validator.enable.org.springframework.ide.eclipse.beans.core.beansvalidator=true
-org.springframework.ide.eclipse.core.validator.enable.org.springframework.ide.eclipse.core.springvalidator=false
-org.springframework.ide.eclipse.core.validator.rule.enable.com.springsource.server.ide.manifest.core.applicationSymbolicNameRule-com.springsource.server.ide.manifest.core.manifestvalidator=true
-org.springframework.ide.eclipse.core.validator.rule.enable.com.springsource.server.ide.manifest.core.applicationVersionRule-com.springsource.server.ide.manifest.core.manifestvalidator=true
-org.springframework.ide.eclipse.core.validator.rule.enable.com.springsource.server.ide.manifest.core.bundleActivationPolicyRule-com.springsource.server.ide.manifest.core.manifestvalidator=true
-org.springframework.ide.eclipse.core.validator.rule.enable.com.springsource.server.ide.manifest.core.bundleActivatorRule-com.springsource.server.ide.manifest.core.manifestvalidator=true
-org.springframework.ide.eclipse.core.validator.rule.enable.com.springsource.server.ide.manifest.core.bundleManifestVersionRule-com.springsource.server.ide.manifest.core.manifestvalidator=true
-org.springframework.ide.eclipse.core.validator.rule.enable.com.springsource.server.ide.manifest.core.bundleSymbolicNameRule-com.springsource.server.ide.manifest.core.manifestvalidator=true
-org.springframework.ide.eclipse.core.validator.rule.enable.com.springsource.server.ide.manifest.core.bundleVersionRule-com.springsource.server.ide.manifest.core.manifestvalidator=true
-org.springframework.ide.eclipse.core.validator.rule.enable.com.springsource.server.ide.manifest.core.exportPackageRule-com.springsource.server.ide.manifest.core.manifestvalidator=true
-org.springframework.ide.eclipse.core.validator.rule.enable.com.springsource.server.ide.manifest.core.importRule-com.springsource.server.ide.manifest.core.manifestvalidator=true
-org.springframework.ide.eclipse.core.validator.rule.enable.com.springsource.server.ide.manifest.core.parsingProblemsRule-com.springsource.server.ide.manifest.core.manifestvalidator=true
-org.springframework.ide.eclipse.core.validator.rule.enable.com.springsource.server.ide.manifest.core.requireBundleRule-com.springsource.server.ide.manifest.core.manifestvalidator=true
-org.springframework.ide.eclipse.core.validator.rule.enable.org.springframework.ide.eclipse.beans.core.beanAlias-org.springframework.ide.eclipse.beans.core.beansvalidator=true
-org.springframework.ide.eclipse.core.validator.rule.enable.org.springframework.ide.eclipse.beans.core.beanClass-org.springframework.ide.eclipse.beans.core.beansvalidator=true
-org.springframework.ide.eclipse.core.validator.rule.enable.org.springframework.ide.eclipse.beans.core.beanConstructorArgument-org.springframework.ide.eclipse.beans.core.beansvalidator=true
-org.springframework.ide.eclipse.core.validator.rule.enable.org.springframework.ide.eclipse.beans.core.beanDefinition-org.springframework.ide.eclipse.beans.core.beansvalidator=true
-org.springframework.ide.eclipse.core.validator.rule.enable.org.springframework.ide.eclipse.beans.core.beanDefinitionHolder-org.springframework.ide.eclipse.beans.core.beansvalidator=true
-org.springframework.ide.eclipse.core.validator.rule.enable.org.springframework.ide.eclipse.beans.core.beanFactory-org.springframework.ide.eclipse.beans.core.beansvalidator=true
-org.springframework.ide.eclipse.core.validator.rule.enable.org.springframework.ide.eclipse.beans.core.beanInitDestroyMethod-org.springframework.ide.eclipse.beans.core.beansvalidator=true
-org.springframework.ide.eclipse.core.validator.rule.enable.org.springframework.ide.eclipse.beans.core.beanProperty-org.springframework.ide.eclipse.beans.core.beansvalidator=true
-org.springframework.ide.eclipse.core.validator.rule.enable.org.springframework.ide.eclipse.beans.core.beanReference-org.springframework.ide.eclipse.beans.core.beansvalidator=true
-org.springframework.ide.eclipse.core.validator.rule.enable.org.springframework.ide.eclipse.beans.core.methodOverride-org.springframework.ide.eclipse.beans.core.beansvalidator=true
-org.springframework.ide.eclipse.core.validator.rule.enable.org.springframework.ide.eclipse.beans.core.parsingProblems-org.springframework.ide.eclipse.beans.core.beansvalidator=true
-org.springframework.ide.eclipse.core.validator.rule.enable.org.springframework.ide.eclipse.beans.core.requiredProperty-org.springframework.ide.eclipse.beans.core.beansvalidator=false
-org.springframework.ide.eclipse.core.validator.rule.enable.org.springframework.ide.eclipse.beans.core.toolAnnotation-org.springframework.ide.eclipse.beans.core.beansvalidator=false
-org.springframework.ide.eclipse.core.validator.rule.enable.org.springframework.ide.eclipse.core.springClasspath-org.springframework.ide.eclipse.core.springvalidator=false
diff --git a/org.eclipse.virgo.apps.admin.core/.springBeans b/org.eclipse.virgo.apps.admin.core/.springBeans
deleted file mode 100644
index 34b281c..0000000
--- a/org.eclipse.virgo.apps.admin.core/.springBeans
+++ /dev/null
@@ -1,13 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<beansProjectDescription>
- <version>1</version>
- <pluginVersion><![CDATA[2.3.0.200912170948-RELEASE]]></pluginVersion>
- <configSuffixes>
- <configSuffix><![CDATA[xml]]></configSuffix>
- </configSuffixes>
- <enableImports><![CDATA[false]]></enableImports>
- <configs>
- </configs>
- <configSets>
- </configSets>
-</beansProjectDescription>
diff --git a/org.eclipse.virgo.apps.admin.core/build.xml b/org.eclipse.virgo.apps.admin.core/build.xml
deleted file mode 100644
index 03c2a83..0000000
--- a/org.eclipse.virgo.apps.admin.core/build.xml
+++ /dev/null
@@ -1,8 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<project name="org.eclipse.virgo.apps.admin.core">
-
- <property file="${basedir}/../build.properties"/>
- <property file="${basedir}/../build.versions"/>
- <import file="${basedir}/../virgo-build/standard/default.xml"/>
-
-</project>
diff --git a/org.eclipse.virgo.apps.admin.core/ivy.xml b/org.eclipse.virgo.apps.admin.core/ivy.xml
deleted file mode 100644
index 805467e..0000000
--- a/org.eclipse.virgo.apps.admin.core/ivy.xml
+++ /dev/null
@@ -1,53 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<?xml-stylesheet type="text/xsl" href="http://ivyrep.jayasoft.org/ivy-doc.xsl"?>
-<ivy-module
- xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
- xsi:noNamespaceSchemaLocation="http://incubator.apache.org/ivy/schemas/ivy.xsd"
- version="1.3">
-
- <info organisation="org.eclipse.virgo.apps" module="${ant.project.name}"/>
-
- <configurations>
- <include file="${virgo.build.dir}/common/default-ivy-configurations.xml"/>
- </configurations>
-
- <publications>
- <artifact name="${ant.project.name}"/>
- <artifact name="${ant.project.name}-sources" type="src" ext="jar"/>
- </publications>
-
- <dependencies>
- <!-- === PROVIDED-COMPILE============================================ -->
- <dependency org="org.eclipse.virgo.nano" name="org.eclipse.virgo.kernel.core" rev="${org.eclipse.virgo.nano}" conf="provided->compile"/>
- <dependency org="org.eclipse.virgo.nano" name="org.eclipse.virgo.deployer.api" rev="${org.eclipse.virgo.nano}" conf="provided->compile"/>
- <dependency org="org.eclipse.virgo.kernel" name="org.eclipse.virgo.kernel.deployer" rev="${org.eclipse.virgo.kernel}" conf="provided->compile"/>
- <dependency org="org.eclipse.virgo.kernel" name="org.eclipse.virgo.kernel.osgi" rev="${org.eclipse.virgo.kernel}" conf="provided->compile"/>
- <dependency org="org.eclipse.virgo.kernel" name="org.eclipse.virgo.kernel.model" rev="${org.eclipse.virgo.kernel}" conf="provided->compile"/>
- <dependency org="org.eclipse.virgo.kernel" name="org.eclipse.virgo.kernel.services" rev="${org.eclipse.virgo.kernel}" conf="provided->compile"/>
- <dependency org="org.eclipse.virgo.kernel" name="org.eclipse.virgo.kernel.shell" rev="${org.eclipse.virgo.kernel}" conf="provided->compile"/>
- <dependency org="org.eclipse.virgo.kernel" name="org.eclipse.virgo.kernel.artifact" rev="${org.eclipse.virgo.kernel}" conf="provided->compile"/>
- <dependency org="org.eclipse.virgo.util" name="org.eclipse.virgo.util.io" rev="${org.eclipse.virgo.util}" conf="provided->compile"/>
- <dependency org="org.eclipse.virgo.util" name="org.eclipse.virgo.util.osgi.manifest" rev="${org.eclipse.virgo.util}" conf="provided->compile"/>
- <!-- === RUNTIME-DEFAULT =========================================== -->
-
- <!-- === PROVIDED-RUNTIME =========================================== -->
- <dependency org="org.eclipse.osgi" name="org.eclipse.osgi" rev="${org.eclipse.osgi}" conf="provided->runtime"/>
- <dependency org="org.eclipse.osgi" name="org.eclipse.osgi.services" rev="${org.eclipse.osgi.services}" conf="provided->runtime"/>
- <dependency org="org.eclipse.osgi" name="org.eclipse.equinox.cm" rev="${org.eclipse.equinox.cm}" conf="provided->runtime"/>
- <dependency org="org.apache.commons" name="com.springsource.org.apache.commons.fileupload" rev="${org.apache.commons.fileupload}" conf="provided->runtime"/>
- <dependency org="org.apache.commons" name="com.springsource.org.apache.commons.io" rev="${org.apache.commons.io}" conf="provided->runtime"/>
- <dependency org="org.springframework" name="org.springframework.core" rev="${org.springframework}" conf="provided->runtime"/>
- <dependency org="org.springframework" name="org.springframework.context" rev="${org.springframework}" conf="provided->runtime"/>
- <dependency org="org.springframework" name="org.springframework.beans" rev="${org.springframework}" conf="provided->runtime"/>
- <dependency org="org.eclipse.gemini" name="org.eclipse.gemini.blueprint.core" rev="${org.eclipse.gemini.blueprint}" conf="provided->runtime"/>
- <dependency org="org.slf4j" name="com.springsource.slf4j.api" rev="${org.slf4j}" conf="compile->runtime"/>
- <!-- === TEST ====================================================== -->
- <dependency org="org.junit" name="com.springsource.org.junit" rev="${org.junit}" conf="test->runtime"/>
- <dependency org="org.eclipse.virgo.teststubs" name="org.eclipse.virgo.teststubs.osgi" rev="${org.eclipse.virgo.teststubs}" conf="test->runtime"/>
- <dependency org="org.easymock" name="com.springsource.org.easymock" rev="${org.easymock}" conf="test->runtime"/>
- <dependency org="org.slf4j" name="com.springsource.slf4j.nop" rev="${org.slf4j}" conf="test->runtime"/>
-
- <override org="org.springframework" rev="${org.springframework}"/>
- </dependencies>
-
-</ivy-module>
diff --git a/org.eclipse.virgo.apps.admin.core/serviceability/dumps/testDumpWithContent/dumpItem1.txt b/org.eclipse.virgo.apps.admin.core/serviceability/dumps/testDumpWithContent/dumpItem1.txt
deleted file mode 100644
index 0b00812..0000000
--- a/org.eclipse.virgo.apps.admin.core/serviceability/dumps/testDumpWithContent/dumpItem1.txt
+++ /dev/null
@@ -1,3 +0,0 @@
-Line1
-Line2
-Line3
\ No newline at end of file
diff --git a/org.eclipse.virgo.apps.admin.core/serviceability/dumps/testDumpWithContent/dumpItem2.foo b/org.eclipse.virgo.apps.admin.core/serviceability/dumps/testDumpWithContent/dumpItem2.foo
deleted file mode 100644
index e69de29..0000000
--- a/org.eclipse.virgo.apps.admin.core/serviceability/dumps/testDumpWithContent/dumpItem2.foo
+++ /dev/null
diff --git a/org.eclipse.virgo.apps.admin.core/serviceability/dumps/testDumpWithContent/osgi.zip b/org.eclipse.virgo.apps.admin.core/serviceability/dumps/testDumpWithContent/osgi.zip
deleted file mode 100644
index a4f59e9..0000000
--- a/org.eclipse.virgo.apps.admin.core/serviceability/dumps/testDumpWithContent/osgi.zip
+++ /dev/null
Binary files differ
diff --git a/org.eclipse.virgo.apps.admin.core/serviceability/dumps/testDumpWithNoContent/.gitignore b/org.eclipse.virgo.apps.admin.core/serviceability/dumps/testDumpWithNoContent/.gitignore
deleted file mode 100644
index e69de29..0000000
--- a/org.eclipse.virgo.apps.admin.core/serviceability/dumps/testDumpWithNoContent/.gitignore
+++ /dev/null
diff --git a/org.eclipse.virgo.apps.admin.core/src/main/java/org/eclipse/virgo/apps/admin/core/ArtifactService.java b/org.eclipse.virgo.apps.admin.core/src/main/java/org/eclipse/virgo/apps/admin/core/ArtifactService.java
deleted file mode 100644
index 3f1f597..0000000
--- a/org.eclipse.virgo.apps.admin.core/src/main/java/org/eclipse/virgo/apps/admin/core/ArtifactService.java
+++ /dev/null
@@ -1,41 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2008, 2010 VMware Inc.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- * VMware Inc. - initial contribution
- *******************************************************************************/
-
-package org.eclipse.virgo.apps.admin.core;
-
-import java.io.File;
-
-/**
- * <code>ApplicationManagerService</code> defines a simple service API for managing applications within the server.
- * <p />
- *
- * <strong>Concurrent Semantics</strong><br />
- *
- * Implementations should be thread-safe.
- *
- */
-public interface ArtifactService {
-
- /**
- * @param stagedFile
- * @return string describing result
- */
- String deploy(File stagedFile);
-
- /**
- * Request a reference to the staging directory where artefacts to be deployed should be placed.
- *
- * @return the staging directory.
- */
- File getStagingDirectory();
-
-
-}
diff --git a/org.eclipse.virgo.apps.admin.core/src/main/java/org/eclipse/virgo/apps/admin/core/BundleHolder.java b/org.eclipse.virgo.apps.admin.core/src/main/java/org/eclipse/virgo/apps/admin/core/BundleHolder.java
deleted file mode 100644
index 7710e8b..0000000
--- a/org.eclipse.virgo.apps.admin.core/src/main/java/org/eclipse/virgo/apps/admin/core/BundleHolder.java
+++ /dev/null
@@ -1,74 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2008, 2010 VMware Inc.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- * VMware Inc. - initial contribution
- *******************************************************************************/
-
-package org.eclipse.virgo.apps.admin.core;
-
-import java.util.List;
-
-import org.osgi.framework.Bundle;
-
-import org.eclipse.virgo.kernel.module.Component;
-
-/**
- * <p>
- * BundleHolder represents a bundle artifact with Spring information contained within it.
- * </p>
- *
- * <strong>Concurrent Semantics</strong><br />
- *
- * BundleHolder implementations should be thread safe
- *
- */
-public interface BundleHolder extends Comparable<BundleHolder>{
-
- public Long getBundleId();
-
- public String getSymbolicName();
-
- public String getState();
-
- public String getRegion();
-
- public boolean isResolved();
-
- public String getVersion();
-
- public String getBundleLocation();
-
- public String getSpringName();
-
- public List<Component> getBeans();
-
- public List<ExportedPackageHolder> getExportPackages();
-
- public List<ImportedPackageHolder> getImportPackages();
-
- public List<RequiredBundleHolder> getRequiredBundles();
-
- public List<BundleHolder> getHosts();
-
- public Bundle getRawBundle();
-
- public List<BundleHolder> getFragments();
-
- /**
- * A list of {@link ServiceHolder}s that are published by this {@link BundleHolder}
- * @return list of services
- */
- public List<ServiceHolder> getExportedServices();
-
- /**
- * A list of {@link ServiceHolder}s that are consumed by this {@link BundleHolder}
- * @return list of services
- */
- public List<ServiceHolder> getImportedServices();
-
-}
diff --git a/org.eclipse.virgo.apps.admin.core/src/main/java/org/eclipse/virgo/apps/admin/core/DumpInspectorService.java b/org.eclipse.virgo.apps.admin.core/src/main/java/org/eclipse/virgo/apps/admin/core/DumpInspectorService.java
deleted file mode 100644
index a2ac7a2..0000000
--- a/org.eclipse.virgo.apps.admin.core/src/main/java/org/eclipse/virgo/apps/admin/core/DumpInspectorService.java
+++ /dev/null
@@ -1,48 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2008, 2010 VMware Inc.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- * VMware Inc. - initial contribution
- *******************************************************************************/
-
-package org.eclipse.virgo.apps.admin.core;
-
-import java.io.File;
-import java.util.List;
-
-/**
- * <code>DumpManagerService</code> defines a simple service API for viewing dumps within the server.
- * <p />
- *
- * <strong>Concurrent Semantics</strong><br />
- *
- * Implementations should be thread-safe.
- *
- */
-public interface DumpInspectorService {
-
- /**
- * @return a list of {@link File} of the dumps available for inspection.
- */
- public List<File> findAvaliableDumps();
-
- /**
- * @param dumpID as returned by a call to {@link DumpInspectorService#findAvaliableDumps}.
- * @return list of Strings
- */
- public List<String> getDumpEntries(String dumpID);
-
- /**
- * Read the contents of a dump entry and return it as a string
- * @param dumpID of dump
- * @param entryName in dump
- *
- * @return the raw contents of the requested dump entry as a String
- */
- public String getDumpEntry(String dumpID, String entryName);
-
-}
diff --git a/org.eclipse.virgo.apps.admin.core/src/main/java/org/eclipse/virgo/apps/admin/core/DumpLocator.java b/org.eclipse.virgo.apps.admin.core/src/main/java/org/eclipse/virgo/apps/admin/core/DumpLocator.java
deleted file mode 100644
index a8e1a39..0000000
--- a/org.eclipse.virgo.apps.admin.core/src/main/java/org/eclipse/virgo/apps/admin/core/DumpLocator.java
+++ /dev/null
@@ -1,40 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2008, 2010 VMware Inc.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- * VMware Inc. - initial contribution
- *******************************************************************************/
-
-package org.eclipse.virgo.apps.admin.core;
-
-import java.io.File;
-import java.io.IOException;
-import java.util.zip.ZipException;
-
-/**
- * <p>
- * DumpExtractor provides an interface for clients to obtain dump directories.
- * </p>
- *
- * <strong>Concurrent Semantics</strong><br/>
- *
- * Implementations of this interface must be thread safe.
- *
- */
-public interface DumpLocator {
-
- /**
- * Returns a dump directory with the given dump name.
- *
- * @param dump name
- * @return the dump directory
- * @throws ZipException when zipping
- * @throws IOException when reading
- */
- public File getDumpDir(String dump) throws ZipException, IOException;
-
-}
diff --git a/org.eclipse.virgo.apps.admin.core/src/main/java/org/eclipse/virgo/apps/admin/core/ExportedPackageHolder.java b/org.eclipse.virgo.apps.admin.core/src/main/java/org/eclipse/virgo/apps/admin/core/ExportedPackageHolder.java
deleted file mode 100644
index bdc4625..0000000
--- a/org.eclipse.virgo.apps.admin.core/src/main/java/org/eclipse/virgo/apps/admin/core/ExportedPackageHolder.java
+++ /dev/null
@@ -1,68 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2008, 2010 VMware Inc.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- * VMware Inc. - initial contribution
- *******************************************************************************/
-
-package org.eclipse.virgo.apps.admin.core;
-
-import java.util.List;
-import java.util.Map;
-
-
-/**
- * <p>
- * PackageRelationHolder represents a single mapping of and exported
- * </p>
- *
- * <strong>Concurrent Semantics</strong><br />
- *
- * Implementations of PackageRelationHolder should be threadsafe
- *
- */
-public interface ExportedPackageHolder {
-
- /**
- *
- * @return the name of the package being exported
- */
- public String getPackageName();
-
- /**
- *
- * @return the <code>Version</code> that the package is exported at as a String.
- */
- public String getVersion();
-
- /**
- *
- * @return the {@link BundleHolder} that provides this <code>ExportedPackageHolder</code>
- */
- public BundleHolder getExportingBundle();
-
- /**
- *
- * @return A list {@link ImportedPackageHolder}s that are consuming this export
- */
- public List<ImportedPackageHolder> getConsumers();
-
- /**
- * Returns the directives for a header.
- *
- * @return a map containing the directives
- */
- Map<String, String> getDirectives();
-
- /**
- * Returns the attributes for a header.
- *
- * @return a map containing the attributes
- */
- Map<String, String> getAttributes();
-
-}
diff --git a/org.eclipse.virgo.apps.admin.core/src/main/java/org/eclipse/virgo/apps/admin/core/FailedResolutionHolder.java b/org.eclipse.virgo.apps.admin.core/src/main/java/org/eclipse/virgo/apps/admin/core/FailedResolutionHolder.java
deleted file mode 100644
index c075761..0000000
--- a/org.eclipse.virgo.apps.admin.core/src/main/java/org/eclipse/virgo/apps/admin/core/FailedResolutionHolder.java
+++ /dev/null
@@ -1,40 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2008, 2010 VMware Inc.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- * VMware Inc. - initial contribution
- *******************************************************************************/
-
-package org.eclipse.virgo.apps.admin.core;
-
-/**
- * <p>
- * FailedResolutionHolder represents the cause of a bundle failing to resovle.
- * </p>
- *
- * <strong>Concurrent Semantics</strong><br />
- *
- * Implementations of FailedResolutionHolder must be thread-safe
- *
- */
-public interface FailedResolutionHolder {
-
- /**
- * Gets a human readable description of the failure.
- *
- * @return a human readable String
- */
- String getDescription();
-
- /**
- * Gets the unresolved {@link BundleHolder}.
- *
- * @return the unresolved <code>BundleHolder</code>
- */
- BundleHolder getUnresolvedBundle();
-
-}
diff --git a/org.eclipse.virgo.apps.admin.core/src/main/java/org/eclipse/virgo/apps/admin/core/ImportedPackageHolder.java b/org.eclipse.virgo.apps.admin.core/src/main/java/org/eclipse/virgo/apps/admin/core/ImportedPackageHolder.java
deleted file mode 100644
index acf7b5b..0000000
--- a/org.eclipse.virgo.apps.admin.core/src/main/java/org/eclipse/virgo/apps/admin/core/ImportedPackageHolder.java
+++ /dev/null
@@ -1,78 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2008, 2010 VMware Inc.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- * VMware Inc. - initial contribution
- *******************************************************************************/
-
-package org.eclipse.virgo.apps.admin.core;
-
-import java.util.Map;
-
-/**
- * <p>
- * PackageRelationHolder represents a single mapping of and exported
- * </p>
- *
- * <strong>Concurrent Semantics</strong><br />
- *
- * Implementations of PackageRelationHolder should be threadsafe
- *
- */
-public interface ImportedPackageHolder {
-
- /**
- * The name of the package being imported.
- *
- * @return The package name
- */
- public String getPackageName();
-
- /**
- * The version range that the exporting package must be within to satisfy this <code>ImportedPackageHolder</code>.
- *
- * @return The VersionRange constraint as a String
- */
- public String getVersionConstraint();
-
- /**
- * Returns whether or not this import is resolved.
- *
- * @return true if this import is resolved
- */
- public boolean isResolved();
-
- /**
- * If this import is resolved, return the {@link ExportedPackageHolder} that satisfies it. If this import is not
- * resolved or if it is resolved but is an optional import that was not satisfied, return null.
- *
- * @return The <code>ExportedPackageHolder</code> that satisfies this import.
- */
- public ExportedPackageHolder getProvider();
-
- /**
- * The {@link BundleHolder} that specifies this import package.
- *
- * @return The specifying <code>BundleHolder</code>.
- */
- public BundleHolder getImportingBundle();
-
- /**
- * Returns the directives for a header.
- *
- * @return a map containing the directives
- */
- Map<String, String> getDirectives();
-
- /**
- * Returns the attributes for a header.
- *
- * @return a map containing the attributes
- */
- Map<String, String> getAttributes();
-
-}
diff --git a/org.eclipse.virgo.apps.admin.core/src/main/java/org/eclipse/virgo/apps/admin/core/PackagesCollection.java b/org.eclipse.virgo.apps.admin.core/src/main/java/org/eclipse/virgo/apps/admin/core/PackagesCollection.java
deleted file mode 100644
index 51e02a6..0000000
--- a/org.eclipse.virgo.apps.admin.core/src/main/java/org/eclipse/virgo/apps/admin/core/PackagesCollection.java
+++ /dev/null
@@ -1,51 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2008, 2010 VMware Inc.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- * VMware Inc. - initial contribution
- *******************************************************************************/
-
-package org.eclipse.virgo.apps.admin.core;
-
-import java.util.List;
-
-/**
- * <p>
- * PackagesCollection holds an exclusive collection of packages sorted by imports and exports.
- * </p>
- *
- * <strong>Concurrent Semantics</strong><br />
- *
- * PackagesCollection implementations should be thread-safe
- *
- */
-public interface PackagesCollection {
-
-
- /**
- * The name of the package this {@link PackagesCollection} represents.
- * Will never be null.
- *
- * @return packageName
- */
- public String getPackageName();
-
- /**
- * A list of all the {@link ImportedPackageHolder}s that are imports of this package.
- *
- * @return list of imports
- */
- public List<ImportedPackageHolder> getImported();
-
- /**
- * A list of all the {@link ExportedPackageHolder}s that are exports of this package.
- *
- * @return list of exports
- */
- public List<ExportedPackageHolder> getExported();
-
-}
diff --git a/org.eclipse.virgo.apps.admin.core/src/main/java/org/eclipse/virgo/apps/admin/core/RequiredBundleHolder.java b/org.eclipse.virgo.apps.admin.core/src/main/java/org/eclipse/virgo/apps/admin/core/RequiredBundleHolder.java
deleted file mode 100644
index 90c8cf2..0000000
--- a/org.eclipse.virgo.apps.admin.core/src/main/java/org/eclipse/virgo/apps/admin/core/RequiredBundleHolder.java
+++ /dev/null
@@ -1,76 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2008, 2010 VMware Inc.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- * VMware Inc. - initial contribution
- *******************************************************************************/
-
-package org.eclipse.virgo.apps.admin.core;
-
-import java.util.Map;
-
-/**
- * <p>
- * RequiredBundleHolder represents a requirement from one bundle to another.
- * </p>
- *
- * <strong>Concurrent Semantics</strong><br />
- *
- * RequiredBundleHolder implementations should be thread-safe
- *
- */
-public interface RequiredBundleHolder {
-
- /**
- * If this require bundle is resolved, return any specific {@link BundleHolder} that satisfies it. If this require
- * bundle is not resolved or if it is resolved but is optional and was not satisfied, return null.
- *
- * @return any <code>BundleHolder</code> that satisfies this <code>RequiredBundleHolder</code>
- */
- public BundleHolder getProvider();
-
- /**
- * @return The symbolic name of the Bundle required.
- */
- public String getRequiredBundleName();
-
- /**
- * The version range that must be satisfied by any matching bundles.
- *
- * @return the <code>VersionRange</code> constraint as a String
- */
- public String getVersionConstraint();
-
- /**
- * Returns whether this require bundle is resolved.
- *
- * @return true if this require bundle is resolved
- */
- public boolean isResolved();
-
- /**
- * Returns the directives for a header.
- *
- * @return a map containing the directives
- */
- Map<String, String> getDirectives();
-
- /**
- * Returns the attributes for a header.
- *
- * @return a map containing the attributes
- */
- Map<String, String> getAttributes();
-
- /**
- * The {@link BundleHolder} that specifies this <code>RequiredBundleHolder</code> clause.
- *
- * @return The requiring QuasiBundle
- */
- public BundleHolder getRequiringBundle();
-
-}
diff --git a/org.eclipse.virgo.apps.admin.core/src/main/java/org/eclipse/virgo/apps/admin/core/ServiceHolder.java b/org.eclipse.virgo.apps.admin.core/src/main/java/org/eclipse/virgo/apps/admin/core/ServiceHolder.java
deleted file mode 100644
index 69870f2..0000000
--- a/org.eclipse.virgo.apps.admin.core/src/main/java/org/eclipse/virgo/apps/admin/core/ServiceHolder.java
+++ /dev/null
@@ -1,60 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2008, 2010 VMware Inc.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- * VMware Inc. - initial contribution
- *******************************************************************************/
-
-package org.eclipse.virgo.apps.admin.core;
-
-import java.util.List;
-import java.util.Map;
-
-
-/**
- * <p>
- * ServiceHolder represents a single service within OSGi. It will have a single provider and zero to many consumers.
- * </p>
- *
- * <strong>Concurrent Semantics</strong><br />
- *
- * Implementations of ServiceHolder should be thread-safe
- *
- */
-public interface ServiceHolder extends Comparable<ServiceHolder> {
-
- /**
- * Return the Id of this service within OSGi.
- *
- * @return long service Id
- */
- long getServiceId();
-
- String getFormattedObjectClass();
-
- /**
- * A list of {@link BundleHolder}s of bundles that use the service of this {@link ServiceHolder}.
- *
- * @return List of <code>QuasiLiveBundle</code>s that are using this service
- */
- List<BundleHolder> getConsumers();
-
- /**
- * The {@link BundleHolder} of a bundle that provides the service of this {@link ServiceHolder}.
- *
- * @return <code>BundleHolder</code> of bundle that registered this service
- */
- BundleHolder getProvider();
-
- /**
- * A map of the Service's properties.
- *
- * @return The service's properties
- */
- Map<String, String> getProperties();
-
-}
diff --git a/org.eclipse.virgo.apps.admin.core/src/main/java/org/eclipse/virgo/apps/admin/core/StateHolder.java b/org.eclipse.virgo.apps.admin.core/src/main/java/org/eclipse/virgo/apps/admin/core/StateHolder.java
deleted file mode 100644
index a6714b1..0000000
--- a/org.eclipse.virgo.apps.admin.core/src/main/java/org/eclipse/virgo/apps/admin/core/StateHolder.java
+++ /dev/null
@@ -1,106 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2008, 2010 VMware Inc.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- * VMware Inc. - initial contribution
- *******************************************************************************/
-
-package org.eclipse.virgo.apps.admin.core;
-
-import java.util.List;
-
-/**
- * <p>
- * <code>StateInspectorService</code>
- * </p>
- *
- * <strong>Concurrent Semantics</strong><br />
- *
- * Implementations should be thread-safe.
- *
- */
-public interface StateHolder {
-
- /**
- * Obtains {@link BundleHolder} representations of all the bundles present
- * in the underlying state.
- *
- * @param dumpName can be null to request the live state
- * @return all the bundles or the empty list if the source can't be found
- */
- public List<BundleHolder> getAllBundles(String dumpName);
-
- /**
- * Obtains {@link ServiceHolder} representations of all the services present
- * in the underlying osgi instance.
- *
- * @param dumpName can be null to request the live state
- * @return all the services or the empty list if the source can't be found
- */
- public List<ServiceHolder> getAllServices(String dumpName);
-
- /**
- * Looks at all the bundles in the underlying state and return the one with
- * the given id, if no such bundle exists then null is returned.
- *
- * @param dumpName can be null to request the live state
- * @param bundleId of required bundle
- * @return the requested bundle or null
- */
- public BundleHolder getBundle(String dumpName, long bundleId);
-
- /**
- * Looks at all the bundles in the underlying state and return the one with
- * the given name and version, if no such bundle exists then null is returned.
- *
- * @param source dump name
- * @param name of bundle
- * @param version of bundle
- * @param region to look in
- * @return holder holding bundle
- */
- public BundleHolder getBundle(String source, String name, String version, String region);
-
- /**
- * Returns the {@link ServiceHolder} that represents the service with
- * the requested service Id. If no such service exists then null is
- * returned.
- *
- * @param dumpName can be null to request the live state
- * @param serviceId of service to look for
- * @return service representation
- */
- public ServiceHolder getService(String dumpName, long serviceId) ;
-
- /**
- * Will return {@link FailedResolutionHolder} for the requested bundle.
- * If there are no resolution failures then null will be returned.
- *
- * @param dumpName can be null to request the live state
- * @param bundleId of the fail bundle
- * @return <code>FailedResolutionHolder</code>
- */
- public List<FailedResolutionHolder> getResolverReport(String dumpName, long bundleId);
-
- /**
- *
- * @param dumpName can be null to request the live state
- * @param packageName to find
- * @return packages matching packageName
- */
- public PackagesCollection getPackages(String dumpName, String packageName);
-
- /**
- * Search the requested state for bundles matching the given string
- *
- * @param dumpName can be null to request the live state
- * @param term to search for
- * @return list of matching bundles
- */
- public List<BundleHolder> search(String dumpName, String term);
-
-}
diff --git a/org.eclipse.virgo.apps.admin.core/src/main/java/org/eclipse/virgo/apps/admin/core/artifact/StandardArtifactService.java b/org.eclipse.virgo.apps.admin.core/src/main/java/org/eclipse/virgo/apps/admin/core/artifact/StandardArtifactService.java
deleted file mode 100644
index 10c9ef1..0000000
--- a/org.eclipse.virgo.apps.admin.core/src/main/java/org/eclipse/virgo/apps/admin/core/artifact/StandardArtifactService.java
+++ /dev/null
@@ -1,69 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2008, 2010 VMware Inc.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- * VMware Inc. - initial contribution
- *******************************************************************************/
-
-package org.eclipse.virgo.apps.admin.core.artifact;
-
-import java.io.File;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-import org.eclipse.virgo.apps.admin.core.ArtifactService;
-import org.eclipse.virgo.kernel.deployer.core.ApplicationDeployer;
-import org.eclipse.virgo.kernel.deployer.core.DeploymentException;
-import org.eclipse.virgo.kernel.services.work.WorkArea;
-
-/**
- * Standard implementation of {@link ArtifactService}.
- *
- */
-final class StandardArtifactService implements ArtifactService {
-
- private static final Logger LOGGER = LoggerFactory.getLogger(StandardArtifactService.class);
-
- private final ApplicationDeployer applicationDeployer;
-
- private final File stagingDir;
-
- /**
- * @param applicationDeployer
- * @param subsystemRegistry
- * @param workAreaManager
- * @param bundleContext
- * @param serverApplicationInfoSource
- */
- StandardArtifactService(ApplicationDeployer applicationDeployer, WorkArea workArea) {
- this.applicationDeployer = applicationDeployer;
- this.stagingDir = workArea.getWorkDirectory().newChild("upload").createDirectory().toFile();
- }
-
- /**
- * {@inheritDoc}
- */
- public String deploy(File stagedFile) {
- try {
- this.applicationDeployer.deploy(stagedFile.toURI());
- return "Artifact deployed";
- } catch (DeploymentException e) {
- if (!stagedFile.delete()) {
- LOGGER.warn(String.format("Failed to delete %s after a deployment exception.", stagedFile));
- }
- return String.format("Deployment Error '%s'", e.getMessage());
- }
- }
-
- /**
- * {@inheritDoc}
- */
- public File getStagingDirectory() {
- return this.stagingDir;
- }
-
-}
diff --git a/org.eclipse.virgo.apps.admin.core/src/main/java/org/eclipse/virgo/apps/admin/core/dump/DumpPathLocator.java b/org.eclipse.virgo.apps.admin.core/src/main/java/org/eclipse/virgo/apps/admin/core/dump/DumpPathLocator.java
deleted file mode 100644
index 7caab85..0000000
--- a/org.eclipse.virgo.apps.admin.core/src/main/java/org/eclipse/virgo/apps/admin/core/dump/DumpPathLocator.java
+++ /dev/null
@@ -1,53 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2008, 2010 VMware Inc.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- * VMware Inc. - initial contribution
- *******************************************************************************/
-
-package org.eclipse.virgo.apps.admin.core.dump;
-
-import java.io.File;
-
-
-/**
- * <p>
- * DumpPathLocator is used internally to locate the location of the dumps
- * folder, the dumps within it and the individual dump entries within those.
- * </p>
- *
- * <strong>Concurrent Semantics</strong><br />
- *
- * Implementations of DumpPathLocator should be threadsafe
- *
- */
-public interface DumpPathLocator {
-
- /**
- * @return directory where the dumps are to be found.
- */
- File getDumpDirectory();
-
- /**
- * When given a folder name, this will return that dump as a directory
- * Will return null if there is no such dump.
- *
- * @param folderName
- * @return dump directory
- */
- File getDumpFolder(String folderName);
-
- /**
- * When given a folder name and an entry name, this will return a file representing that dump entry.
- * Will return null if there is no such entry.
- *
- * @param folderName
- * @param fileName
- * @return entry in dump
- */
- File getDumpEntryFile(String folderName, String fileName);
-}
diff --git a/org.eclipse.virgo.apps.admin.core/src/main/java/org/eclipse/virgo/apps/admin/core/dump/StandardDumpInspectorService.java b/org.eclipse.virgo.apps.admin.core/src/main/java/org/eclipse/virgo/apps/admin/core/dump/StandardDumpInspectorService.java
deleted file mode 100644
index 901eb9e..0000000
--- a/org.eclipse.virgo.apps.admin.core/src/main/java/org/eclipse/virgo/apps/admin/core/dump/StandardDumpInspectorService.java
+++ /dev/null
@@ -1,138 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2008, 2010 VMware Inc.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- * VMware Inc. - initial contribution
- *******************************************************************************/
-
-package org.eclipse.virgo.apps.admin.core.dump;
-
-import java.io.File;
-import java.io.FileFilter;
-import java.io.FileReader;
-import java.io.IOException;
-import java.io.LineNumberReader;
-import java.util.ArrayList;
-import java.util.Arrays;
-import java.util.Collections;
-import java.util.List;
-
-import org.eclipse.virgo.apps.admin.core.DumpInspectorService;
-import org.eclipse.virgo.util.io.FileSystemUtils;
-
-
-
-/**
- * <p>
- * StandardDumpInspectorService is an implementation of {@link DumpInspectorService}
- * that uses a {@link DumpPathLocator} to find dumps that the system has produced.
- * </p>
- *
- * <strong>Concurrent Semantics</strong><br />
- *
- * StandardDumpInspectorService is threadsafe
- *
- */
-final class StandardDumpInspectorService implements DumpInspectorService {
-
- private final static String LINE_SEPARATOR = System.getProperty("line.separator");
-
- private final DumpPathLocator dumpPathLocator;
-
- public StandardDumpInspectorService(DumpPathLocator dumpPathLocator) {
- this.dumpPathLocator = dumpPathLocator;
-
- }
-
- /**
- * {@inheritDoc}
- */
- public List<File> findAvaliableDumps() {
- List<File> dumps = new ArrayList<File>();
- File dumpDir = this.dumpPathLocator.getDumpDirectory();
- if(dumpDir != null){
- File[] dumpFolders = FileSystemUtils.listFiles(dumpDir, new FileFilter(){
-
- public boolean accept(File pathname) {
- return pathname.isDirectory();
- }
-
- });
- if(dumpFolders.length > 0){
- for(File dumpFolder : dumpFolders){
- dumps.add(dumpFolder);
- }
- }
- }
- return dumps;
- }
-
- /**
- * {@inheritDoc}
- */
- public List<String> getDumpEntries(String dumpID) {
- if(dumpID == null){
- return Collections.emptyList();
- }
- List<String> dumpEntries = new ArrayList<String>();
- File dumpDir = this.dumpPathLocator.getDumpFolder(dumpID);
- if(dumpDir == null){
- dumpEntries.add(String.format("No Entries have been found for '%s'", dumpID));
- }else{
- String[] dumpEntriesArray = FileSystemUtils.list(dumpDir);
- if(dumpEntriesArray.length ==0){
- dumpEntries.add(String.format("No Entries have been found for '%s'", dumpID));
- } else {
- dumpEntries.addAll(Arrays.asList(dumpEntriesArray));
- }
- }
- return dumpEntries;
- }
-
- /**
- * {@inheritDoc}
- */
- public String getDumpEntry(String dumpID, String entryName) {
- if(dumpID == null || entryName == null){
- return "";
- }
- StringBuilder inspection = new StringBuilder();
- File dumpEntry = this.dumpPathLocator.getDumpEntryFile(dumpID, entryName);
- if(dumpEntry != null){
- LineNumberReader reader = null;
- try {
- reader = new LineNumberReader(new FileReader(dumpEntry));
- while (reader.ready()){
- String rawLine = reader.readLine();
- if(rawLine != null){
- inspection.append(this.escapeAngleBrackets(rawLine));
- inspection.append(LINE_SEPARATOR);
- }
- }
- reader.close();
- } catch (IOException e) {
- try {
- if(reader != null){
- reader.close();
- }
- } catch (IOException e1) {
- // no-op to close stream
- }
- // no-op just return the default null value and let the jsp deal with it
- }
- }
- return inspection.toString();
- }
-
- private String escapeAngleBrackets(String unfriendlyHTML) {
- String processed = unfriendlyHTML.replace("<", "<");
- processed = processed.replace(">", ">");
- processed = processed.replace("°", "∞");
- return processed;
- }
-
-}
diff --git a/org.eclipse.virgo.apps.admin.core/src/main/java/org/eclipse/virgo/apps/admin/core/dump/StandardDumpPathLocator.java b/org.eclipse.virgo.apps.admin.core/src/main/java/org/eclipse/virgo/apps/admin/core/dump/StandardDumpPathLocator.java
deleted file mode 100644
index 1ad78ca..0000000
--- a/org.eclipse.virgo.apps.admin.core/src/main/java/org/eclipse/virgo/apps/admin/core/dump/StandardDumpPathLocator.java
+++ /dev/null
@@ -1,96 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2008, 2010 VMware Inc.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- * VMware Inc. - initial contribution
- *******************************************************************************/
-
-package org.eclipse.virgo.apps.admin.core.dump;
-
-import java.io.File;
-import java.lang.management.ManagementFactory;
-
-import javax.management.MBeanServer;
-import javax.management.ObjectName;
-import javax.management.openmbean.CompositeDataSupport;
-import javax.management.openmbean.TabularDataSupport;
-
-import org.osgi.framework.InvalidSyntaxException;
-
-
-/**
- * <p>
- * StandardDumpPathLocator is an implementation of {@link DumpPathLocator} that
- * gets the location of the dumps directory from config admin.
- * </p>
- *
- * <strong>Concurrent Semantics</strong><br />
- *
- * StandardDumpPathLocator is threadsafe
- *
- */
-final class StandardDumpPathLocator implements DumpPathLocator{
-
- private final static String FILE_SEPARATOR = System.getProperty("file.separator");
-
- private static final String CONFIG_PROPERTY = "dump.root.directory";
-
- private static final String MEDIC_MBEAN_QUERY = "org.eclipse.virgo.kernel:type=Configuration,name=org.eclipse.virgo.medic";
-
- private String dumpConfigValue;
-
- public StandardDumpPathLocator() throws InvalidSyntaxException {
- MBeanServer mBeanServer = ManagementFactory.getPlatformMBeanServer();
- try {
- Object attribute = mBeanServer.getAttribute(new ObjectName(MEDIC_MBEAN_QUERY), "Properties");
- TabularDataSupport table = (TabularDataSupport) attribute;
- CompositeDataSupport composite = (CompositeDataSupport) table.get(new Object[]{CONFIG_PROPERTY});
- this.dumpConfigValue = composite.get("value").toString();
- } catch (Exception e) {
- //no-op
- }
- }
-
- /**
- * {@inheritDoc}
- */
- public File getDumpDirectory(){
- String path = this.dumpConfigValue;
- if(path != null){
- File dumpDir = new File(path);
- if(dumpDir.exists() && dumpDir.isDirectory()){
- return dumpDir;
- }
- }
- return null;
- }
-
- /**
- * {@inheritDoc}
- */
- public File getDumpFolder(String folderName){
- String path = String.format("%s%s%s", this.dumpConfigValue, FILE_SEPARATOR, folderName);
- File dumpDir = new File(path);
- if(dumpDir.exists() && dumpDir.isDirectory()){
- return dumpDir;
- }
- return null;
- }
-
- /**
- * {@inheritDoc}
- */
- public File getDumpEntryFile(String folderName, String fileName){
- String path = String.format("%s%s%s%s%s", this.dumpConfigValue, FILE_SEPARATOR, folderName, FILE_SEPARATOR, fileName);
- File dumpEntry = new File(path);
- if(dumpEntry.exists() && dumpEntry.isFile()){
- return dumpEntry;
- }
- return null;
- }
-
-}
diff --git a/org.eclipse.virgo.apps.admin.core/src/main/java/org/eclipse/virgo/apps/admin/core/state/ObjectFormatter.java b/org.eclipse.virgo.apps.admin.core/src/main/java/org/eclipse/virgo/apps/admin/core/state/ObjectFormatter.java
deleted file mode 100644
index b3e334d..0000000
--- a/org.eclipse.virgo.apps.admin.core/src/main/java/org/eclipse/virgo/apps/admin/core/state/ObjectFormatter.java
+++ /dev/null
@@ -1,57 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2008, 2010 VMware Inc.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- * VMware Inc. - initial contribution
- *******************************************************************************/
-
-package org.eclipse.virgo.apps.admin.core.state;
-
-import java.util.HashMap;
-import java.util.Map;
-import java.util.Map.Entry;
-
-import org.springframework.util.StringUtils;
-
-
-/**
- */
-final class ObjectFormatter {
-
-
- private ObjectFormatter() {
- // stop construction
- }
-
- /**
- * Return the object after a best attempt to format the object as a string
- *
- * @param value object
- * @return best attempt to convert object to string representation
- */
- public static String formatObject(Object value) {
- if(value instanceof Object[]) {
- return StringUtils.arrayToDelimitedString((Object[]) value, ", ");
- }
- return value.toString();
- }
-
- /**
- * Will return a Map<String, String> after doing a best attempt to make the values nicely formatted Strings.
- *
- * @param properties arbitrary property map
- * @return String->String version of properties
- */
- public static Map<String, String> formatMapValues(Map<String, Object> properties){
- Map<String, String> formattedProperties = new HashMap<String, String>();
- for(Entry<String, Object> entry : properties.entrySet()) {
- formattedProperties.put(entry.getKey(), formatObject(entry.getValue()));
- }
- return formattedProperties;
- }
-
-}
diff --git a/org.eclipse.virgo.apps.admin.core/src/main/java/org/eclipse/virgo/apps/admin/core/state/StandardBundleHolder.java b/org.eclipse.virgo.apps.admin.core/src/main/java/org/eclipse/virgo/apps/admin/core/state/StandardBundleHolder.java
deleted file mode 100644
index ca1d9c9..0000000
--- a/org.eclipse.virgo.apps.admin.core/src/main/java/org/eclipse/virgo/apps/admin/core/state/StandardBundleHolder.java
+++ /dev/null
@@ -1,286 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2008, 2010 VMware Inc.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- * VMware Inc. - initial contribution
- *******************************************************************************/
-
-package org.eclipse.virgo.apps.admin.core.state;
-
-import java.util.ArrayList;
-import java.util.List;
-
-import org.osgi.framework.Bundle;
-
-import org.eclipse.virgo.apps.admin.core.BundleHolder;
-import org.eclipse.virgo.apps.admin.core.ExportedPackageHolder;
-import org.eclipse.virgo.apps.admin.core.ImportedPackageHolder;
-import org.eclipse.virgo.apps.admin.core.RequiredBundleHolder;
-import org.eclipse.virgo.apps.admin.core.ServiceHolder;
-import org.eclipse.virgo.kernel.module.Component;
-import org.eclipse.virgo.kernel.module.ModuleContext;
-import org.eclipse.virgo.kernel.module.ModuleContextAccessor;
-import org.eclipse.virgo.kernel.module.NoSuchComponentException;
-import org.eclipse.virgo.kernel.osgi.quasi.QuasiBundle;
-import org.eclipse.virgo.kernel.osgi.quasi.QuasiExportPackage;
-import org.eclipse.virgo.kernel.osgi.quasi.QuasiImportPackage;
-import org.eclipse.virgo.kernel.osgi.quasi.QuasiRequiredBundle;
-import org.eclipse.virgo.kernel.shell.state.QuasiLiveBundle;
-import org.eclipse.virgo.kernel.shell.state.QuasiLiveService;
-import org.eclipse.virgo.kernel.shell.state.StateService;
-
-/**
- * <p>
- * StandardArtifactHolder is the standard implementation of BundleHolder. It represents a
- * bundle artifact and will provide formatting friendly strings where possible.
- * </p>
- *
- * <strong>Concurrent Semantics</strong><br />
- *
- * StandardArtifactHolder is thread-safe
- *
- */
-final class StandardBundleHolder implements BundleHolder {
-
- private final ModuleContextAccessor moduleContextAccessor;
-
- private final QuasiBundle quasiBundle;
-
- private final StateService stateService;
-
- public StandardBundleHolder(QuasiBundle bundle, ModuleContextAccessor moduleContextAccessor, StateService stateService) {
- if(bundle == null || moduleContextAccessor == null) {
- throw new IllegalArgumentException("StandardBundleHolder must be provided with non-null QuasiBundle and ModuleContextAccessor.");
- }
- this.quasiBundle = bundle;
- this.moduleContextAccessor = moduleContextAccessor;
- this.stateService = stateService;
- }
-
- /**
- * {@inheritDoc}
- */
- public Long getBundleId() {
- return this.quasiBundle.getBundleId();
- }
-
- /**
- * {@inheritDoc}
- */
- public String getRegion(){
- return this.stateService.getBundleRegionName(getBundleId());
- }
-
- /**
- * {@inheritDoc}
- */
- public String getSymbolicName() {
- return quasiBundle.getSymbolicName();
- }
-
- /**
- * {@inheritDoc}
- */
- public String getState() {
- if(this.quasiBundle instanceof QuasiLiveBundle) {
- QuasiLiveBundle quasiLiveBundle = (QuasiLiveBundle) this.quasiBundle;
- return quasiLiveBundle.getState();
- }
- return this.quasiBundle.isResolved() ? "Resolved" : "Unresolved";
- }
-
- /**
- * {@inheritDoc}
- */
- public boolean isResolved() {
- return this.quasiBundle.isResolved();
- }
-
- /**
- * {@inheritDoc}
- */
- public String getVersion() {
- return quasiBundle.getVersion().toString();
- }
-
- /**
- * {@inheritDoc}
- */
- public Bundle getRawBundle() {
- return this.quasiBundle.getBundle();
- }
-
- /**
- * {@inheritDoc}
- */
- public String getBundleLocation() {
- Bundle bundle2 = this.quasiBundle.getBundle();
- if(bundle2 != null) {
- return bundle2.getLocation();
- }
- return "";
- }
-
- /**
- * {@inheritDoc}
- */
- public String getSpringName() {
- Bundle realBundle = quasiBundle.getBundle();
- if(realBundle != null) {
- ModuleContext moduleContext = this.moduleContextAccessor.getModuleContext(realBundle);
- if(moduleContext != null) {
- return moduleContext.getDisplayName();
- }
- }
- return "";
- }
-
- /**
- * {@inheritDoc}
- */
- public List<Component> getBeans(){
- List<Component> beans = new ArrayList<Component>();
- Bundle realBundle = quasiBundle.getBundle();
- if(realBundle != null) {
- ModuleContext moduleContext = this.moduleContextAccessor.getModuleContext(realBundle);
- if(moduleContext != null) {
- for(String name : moduleContext.getComponentNames()) {
- try {
- beans.add(moduleContext.getComponent(name));
- } catch (NoSuchComponentException e) {
- // no-op it is possible the bean has been removed since getting the list of names, thread safety.
- }
- }
- }
- }
- return beans;
- }
-
- /**
- * {@inheritDoc}
- */
- public List<ExportedPackageHolder> getExportPackages() {
- List<ExportedPackageHolder> exportedPackageHolders = new ArrayList<ExportedPackageHolder>();
- List<QuasiExportPackage> exportPackages = quasiBundle.getExportPackages();
- for(QuasiExportPackage exportPackage : exportPackages) {
- exportedPackageHolders.add(new StandardExportedPackageHolder(exportPackage, this.moduleContextAccessor, this.stateService));
- }
- return exportedPackageHolders;
- }
-
- /**
- * {@inheritDoc}
- */
- public List<ImportedPackageHolder> getImportPackages() {
- List<ImportedPackageHolder> importedPackageHolders = new ArrayList<ImportedPackageHolder>();
- List<QuasiImportPackage> importPackages = quasiBundle.getImportPackages();
- for(QuasiImportPackage importPackage : importPackages) {
- importedPackageHolders.add(new StandardImportedPackageHolder(importPackage, this.moduleContextAccessor, this.stateService));
- }
- return importedPackageHolders;
- }
-
- /**
- * {@inheritDoc}
- */
- public List<RequiredBundleHolder> getRequiredBundles(){
- List<QuasiRequiredBundle> quasiRequiredBundles = this.quasiBundle.getRequiredBundles();
- List<RequiredBundleHolder> requiredBundleHolders = new ArrayList<RequiredBundleHolder>();
- if(quasiRequiredBundles != null) {
- for(QuasiRequiredBundle quasiRequiredBundle : quasiRequiredBundles) {
- requiredBundleHolders.add(new StandardRequiredBundleHolder(quasiRequiredBundle, this.moduleContextAccessor, this.stateService));
- }
- }
- return requiredBundleHolders;
- }
-
- /**
- * {@inheritDoc}
- */
- public List<BundleHolder> getHosts() {
- List<BundleHolder> artifactHolders = new ArrayList<BundleHolder>();
- List<QuasiBundle> hosts = quasiBundle.getHosts();
- if(hosts != null) {
- for(QuasiBundle hostQuasiBundle : hosts) {
- artifactHolders.add(new StandardBundleHolder(hostQuasiBundle, this.moduleContextAccessor, this.stateService));
- }
- }
- return artifactHolders;
- }
-
- /**
- * {@inheritDoc}
- */
- public List<BundleHolder> getFragments() {
- List<BundleHolder> artifactHolders = new ArrayList<BundleHolder>();
- List<QuasiBundle> fragments = quasiBundle.getFragments();
- if(fragments != null) {
- for(QuasiBundle fragmentQuasiBundle : fragments) {
- artifactHolders.add(new StandardBundleHolder(fragmentQuasiBundle, this.moduleContextAccessor, this.stateService));
- }
- }
- return artifactHolders;
- }
-
- /**
- * {@inheritDoc}
- */
- public List<ServiceHolder> getExportedServices(){
- List<ServiceHolder> serviceHolders = new ArrayList<ServiceHolder>();
- if(this.quasiBundle instanceof QuasiLiveBundle) {
- QuasiLiveBundle quasiLiveBundle = (QuasiLiveBundle) this.quasiBundle;
- List<QuasiLiveService> exportedServices = quasiLiveBundle.getExportedServices();
- for(QuasiLiveService quasiLiveService : exportedServices) {
- serviceHolders.add(new StandardServiceHolder(quasiLiveService, this.moduleContextAccessor, this.stateService));
- }
- }
- return serviceHolders;
- }
-
- /**
- * {@inheritDoc}
- */
- public List<ServiceHolder> getImportedServices(){
- List<ServiceHolder> serviceHolders = new ArrayList<ServiceHolder>();
- if(this.quasiBundle instanceof QuasiLiveBundle) {
- QuasiLiveBundle quasiLiveBundle = (QuasiLiveBundle) this.quasiBundle;
- List<QuasiLiveService> importedServices = quasiLiveBundle.getImportedServices();
- for(QuasiLiveService quasiLiveService : importedServices) {
- serviceHolders.add(new StandardServiceHolder(quasiLiveService, this.moduleContextAccessor, this.stateService));
- }
- }
- return serviceHolders;
- }
-
- public int compareTo(BundleHolder o) {
- return getBundleId().compareTo(o.getBundleId());
- }
-
- @Override
- public int hashCode() {
- final int prime = 31;
- int result = 1;
- result = prime * result + (int) this.quasiBundle.getBundleId();
- return result;
- }
-
- @Override
- public boolean equals(Object obj) {
- if (this == obj)
- return true;
- if (obj == null)
- return false;
- if (getClass() != obj.getClass())
- return false;
- StandardBundleHolder other = (StandardBundleHolder) obj;
- if (quasiBundle.getBundleId() != other.quasiBundle.getBundleId()) {
- return false;
- }
- return true;
- }
-
-}
diff --git a/org.eclipse.virgo.apps.admin.core/src/main/java/org/eclipse/virgo/apps/admin/core/state/StandardDumpLocator.java b/org.eclipse.virgo.apps.admin.core/src/main/java/org/eclipse/virgo/apps/admin/core/state/StandardDumpLocator.java
deleted file mode 100644
index bcedae9..0000000
--- a/org.eclipse.virgo.apps.admin.core/src/main/java/org/eclipse/virgo/apps/admin/core/state/StandardDumpLocator.java
+++ /dev/null
@@ -1,56 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2008, 2010 VMware Inc.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- * VMware Inc. - initial contribution
- *******************************************************************************/
-
-package org.eclipse.virgo.apps.admin.core.state;
-
-import java.io.File;
-import java.io.IOException;
-
-import org.eclipse.virgo.apps.admin.core.DumpLocator;
-import org.eclipse.virgo.apps.admin.core.dump.DumpPathLocator;
-
-/**
- * <p>
- * DumpStateExtractor can extract the osgi state from an equinox dump and place it in a staging location for use by
- * clients of this class.
- * </p>
- *
- * <strong>Concurrent Semantics</strong><br />
- *
- * DumpStateExtractor is threadsafe
- *
- */
-final class StandardDumpLocator implements DumpLocator {
-
- private final DumpPathLocator dumpPathLocator;
-
- /**
- * @param dumpPathLocator to get dumps from
- */
- public StandardDumpLocator(DumpPathLocator dumpPathLocator) {
- this.dumpPathLocator = dumpPathLocator;
- }
-
- /**
- * {@inheritDoc}
- */
- public File getDumpDir(String dump) throws IOException {
- if (dump == null) {
- throw new IllegalArgumentException("Requested dump cannot be null");
- }
- File dumpFolder = this.dumpPathLocator.getDumpFolder(dump);
- if (dumpFolder == null) {
- throw new IOException(String.format("Requested dump does not exist or is not a folder '%s'", dump));
- }
- return dumpFolder;
- }
-
-}
diff --git a/org.eclipse.virgo.apps.admin.core/src/main/java/org/eclipse/virgo/apps/admin/core/state/StandardExportedPackageHolder.java b/org.eclipse.virgo.apps.admin.core/src/main/java/org/eclipse/virgo/apps/admin/core/state/StandardExportedPackageHolder.java
deleted file mode 100644
index ab169c5..0000000
--- a/org.eclipse.virgo.apps.admin.core/src/main/java/org/eclipse/virgo/apps/admin/core/state/StandardExportedPackageHolder.java
+++ /dev/null
@@ -1,105 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2008, 2010 VMware Inc.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- * VMware Inc. - initial contribution
- *******************************************************************************/
-
-package org.eclipse.virgo.apps.admin.core.state;
-
-import java.util.ArrayList;
-import java.util.List;
-import java.util.Map;
-
-import org.eclipse.virgo.apps.admin.core.BundleHolder;
-import org.eclipse.virgo.apps.admin.core.ExportedPackageHolder;
-import org.eclipse.virgo.apps.admin.core.ImportedPackageHolder;
-import org.eclipse.virgo.kernel.module.ModuleContextAccessor;
-import org.eclipse.virgo.kernel.osgi.quasi.QuasiBundle;
-import org.eclipse.virgo.kernel.osgi.quasi.QuasiExportPackage;
-import org.eclipse.virgo.kernel.osgi.quasi.QuasiImportPackage;
-import org.eclipse.virgo.kernel.shell.state.StateService;
-
-/**
- * <p>
- * StandardExportedPackageHolder is the standard implementation of {@link ExportedPackageHolder}.
- * </p>
- *
- * <strong>Concurrent Semantics</strong><br />
- *
- * StandardExportedPackageHolder is thread-safe
- *
- */
-final class StandardExportedPackageHolder implements ExportedPackageHolder {
-
- private final QuasiExportPackage exportPackage;
-
- private final ModuleContextAccessor moduleContextAccessor;
-
- private final StateService stateService;
-
- public StandardExportedPackageHolder(QuasiExportPackage exportPackage, ModuleContextAccessor moduleContextAccessor, StateService stateService) {
- this.exportPackage = exportPackage;
- this.moduleContextAccessor = moduleContextAccessor;
- this.stateService = stateService;
- }
-
- /**
- * {@inheritDoc}
- */
- public String getPackageName() {
- return this.exportPackage.getPackageName();
- }
-
- /**
- * {@inheritDoc}
- */
- public List<ImportedPackageHolder> getConsumers() {
- List<QuasiImportPackage> consumers = this.exportPackage.getConsumers();
- List<ImportedPackageHolder> importedPackageHolders = new ArrayList<ImportedPackageHolder>();
- if(consumers != null) {
- for(QuasiImportPackage quasiImportPackage : consumers) {
- importedPackageHolders.add(new StandardImportedPackageHolder(quasiImportPackage, this.moduleContextAccessor, this.stateService));
- }
- }
- return importedPackageHolders;
- }
-
- /**
- * {@inheritDoc}
- */
- public BundleHolder getExportingBundle() {
- QuasiBundle exportingBundle = this.exportPackage.getExportingBundle();
- if(exportingBundle != null) {
- return new StandardBundleHolder(exportingBundle, this.moduleContextAccessor, this.stateService) ;
- }
- return null;
- }
-
- /**
- * {@inheritDoc}
- */
- public String getVersion() {
- return this.exportPackage.getVersion().toString();
- }
-
-
- /**
- * {@inheritDoc}
- */
- public Map<String, String> getAttributes() {
- return ObjectFormatter.formatMapValues(this.exportPackage.getAttributes());
- }
-
- /**
- * {@inheritDoc}
- */
- public Map<String, String> getDirectives() {
- return ObjectFormatter.formatMapValues(this.exportPackage.getDirectives());
- }
-
-}
diff --git a/org.eclipse.virgo.apps.admin.core/src/main/java/org/eclipse/virgo/apps/admin/core/state/StandardFailedResolutionHolder.java b/org.eclipse.virgo.apps.admin.core/src/main/java/org/eclipse/virgo/apps/admin/core/state/StandardFailedResolutionHolder.java
deleted file mode 100644
index 690d603..0000000
--- a/org.eclipse.virgo.apps.admin.core/src/main/java/org/eclipse/virgo/apps/admin/core/state/StandardFailedResolutionHolder.java
+++ /dev/null
@@ -1,72 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2008, 2010 VMware Inc.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- * VMware Inc. - initial contribution
- *******************************************************************************/
-
-package org.eclipse.virgo.apps.admin.core.state;
-
-import org.eclipse.virgo.apps.admin.core.BundleHolder;
-import org.eclipse.virgo.apps.admin.core.FailedResolutionHolder;
-import org.eclipse.virgo.kernel.module.ModuleContextAccessor;
-import org.eclipse.virgo.kernel.osgi.quasi.QuasiResolutionFailure;
-import org.eclipse.virgo.kernel.shell.state.StateService;
-
-
-/**
- * <p>
- * StandardFailedResolutionHolder represents a single cause of a bundle resolution
- * failure. A bundle may fail to resolve for many reasons.
- * </p>
- *
- * <strong>Concurrent Semantics</strong><br />
- *
- * StandardFailedResolutionHolder is threadsafe
- *
- */
-final class StandardFailedResolutionHolder implements FailedResolutionHolder {
-
- private final ModuleContextAccessor moduleContextAccessor;
-
- private final QuasiResolutionFailure quasiResolutionFailure;
-
- private final StateService stateService;
-
- /**
- *
- * @param quasiResolutionFailure to be held
- * @param moduleContextAccessor used for {@link BundleHolder} creation
- */
- public StandardFailedResolutionHolder(QuasiResolutionFailure quasiResolutionFailure, ModuleContextAccessor moduleContextAccessor, StateService stateService) {
- this.quasiResolutionFailure = quasiResolutionFailure;
- this.moduleContextAccessor = moduleContextAccessor;
- this.stateService = stateService;
- }
-
- /**
- * {@inheritDoc}
- */
- public String getDescription() {
- return escapeAngleBrackets(this.quasiResolutionFailure.getDescription());
- }
-
- private String escapeAngleBrackets(String unfriendlyHTML) {
- String processed = unfriendlyHTML.replace("<", "<");
- processed = processed.replace(">", ">");
- processed = processed.replace("°", "∞");
- return processed;
- }
-
- /**
- * {@inheritDoc}
- */
- public BundleHolder getUnresolvedBundle() {
- return new StandardBundleHolder(this.quasiResolutionFailure.getUnresolvedQuasiBundle(), this.moduleContextAccessor, this.stateService);
- }
-
-}
diff --git a/org.eclipse.virgo.apps.admin.core/src/main/java/org/eclipse/virgo/apps/admin/core/state/StandardImportedPackageHolder.java b/org.eclipse.virgo.apps.admin.core/src/main/java/org/eclipse/virgo/apps/admin/core/state/StandardImportedPackageHolder.java
deleted file mode 100644
index e8f284b..0000000
--- a/org.eclipse.virgo.apps.admin.core/src/main/java/org/eclipse/virgo/apps/admin/core/state/StandardImportedPackageHolder.java
+++ /dev/null
@@ -1,109 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2008, 2010 VMware Inc.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- * VMware Inc. - initial contribution
- *******************************************************************************/
-
-package org.eclipse.virgo.apps.admin.core.state;
-
-import java.util.Map;
-
-import org.eclipse.virgo.apps.admin.core.BundleHolder;
-import org.eclipse.virgo.apps.admin.core.ExportedPackageHolder;
-import org.eclipse.virgo.apps.admin.core.ImportedPackageHolder;
-import org.eclipse.virgo.kernel.module.ModuleContextAccessor;
-import org.eclipse.virgo.kernel.osgi.quasi.QuasiBundle;
-import org.eclipse.virgo.kernel.osgi.quasi.QuasiExportPackage;
-import org.eclipse.virgo.kernel.osgi.quasi.QuasiImportPackage;
-import org.eclipse.virgo.kernel.shell.state.StateService;
-import org.eclipse.virgo.util.osgi.manifest.VersionRange;
-
-/**
- * <p>
- * StandardImportedPackageHolder is the standard implementation of {@link ImportedPackageHolder}.
- * It is backed by a {@link QuasiImportPackage}.
- * </p>
- *
- * <strong>Concurrent Semantics</strong><br />
- *
- * StandardImportedPackageHolder is thread-safe
- *
- */
-final class StandardImportedPackageHolder implements ImportedPackageHolder {
-
- private final ModuleContextAccessor moduleContextAccessor;
-
- private final QuasiImportPackage importPackage;
-
- private final StateService stateService;
-
- public StandardImportedPackageHolder(QuasiImportPackage importPackage, ModuleContextAccessor moduleContextAccessor, StateService stateService) {
- this.importPackage = importPackage;
- this.moduleContextAccessor = moduleContextAccessor;
- this.stateService = stateService;
- }
-
- /**
- * {@inheritDoc}
- */
- public BundleHolder getImportingBundle() {
- QuasiBundle importingBundle = this.importPackage.getImportingBundle();
- if(importingBundle != null) {
- return new StandardBundleHolder(importingBundle, this.moduleContextAccessor, this.stateService);
- }
- return null;
- }
-
- /**
- * {@inheritDoc}
- */
- public String getPackageName() {
- return this.importPackage.getPackageName();
- }
-
- /**
- * {@inheritDoc}
- */
- public String getVersionConstraint() {
- VersionRange versionConstraint = this.importPackage.getVersionConstraint();
- return versionConstraint.toString().replace("°", "∞");
- }
-
- /**
- * {@inheritDoc}
- */
- public ExportedPackageHolder getProvider() {
- QuasiExportPackage provider = this.importPackage.getProvider();
- if(provider != null) {
- return new StandardExportedPackageHolder(provider, this.moduleContextAccessor, this.stateService);
- }
- return null;
- }
-
- /**
- * {@inheritDoc}
- */
- public boolean isResolved() {
- return this.importPackage.isResolved();
- }
-
- /**
- * {@inheritDoc}
- */
- public Map<String, String> getAttributes() {
- return ObjectFormatter.formatMapValues(this.importPackage.getAttributes());
- }
-
- /**
- * {@inheritDoc}
- */
- public Map<String, String> getDirectives() {
- return ObjectFormatter.formatMapValues(this.importPackage.getDirectives());
- }
-
-}
diff --git a/org.eclipse.virgo.apps.admin.core/src/main/java/org/eclipse/virgo/apps/admin/core/state/StandardPackagesCollection.java b/org.eclipse.virgo.apps.admin.core/src/main/java/org/eclipse/virgo/apps/admin/core/state/StandardPackagesCollection.java
deleted file mode 100644
index 70896da..0000000
--- a/org.eclipse.virgo.apps.admin.core/src/main/java/org/eclipse/virgo/apps/admin/core/state/StandardPackagesCollection.java
+++ /dev/null
@@ -1,71 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2008, 2010 VMware Inc.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- * VMware Inc. - initial contribution
- *******************************************************************************/
-
-package org.eclipse.virgo.apps.admin.core.state;
-
-import java.util.ArrayList;
-import java.util.List;
-
-import org.eclipse.virgo.apps.admin.core.ExportedPackageHolder;
-import org.eclipse.virgo.apps.admin.core.ImportedPackageHolder;
-import org.eclipse.virgo.apps.admin.core.PackagesCollection;
-
-
-
-/**
- * <p>
- * StandardPackagesCollection is the an implementation of {@link PackagesCollection}.
- * </p>
- *
- * <strong>Concurrent Semantics</strong><br />
- *
- * StandardPackagesCollection is threadsafe
- *
- */
-final class StandardPackagesCollection implements PackagesCollection {
-
- private final List<ExportedPackageHolder> exported;
-
- private final List<ImportedPackageHolder> imported;
-
- private final String packageName;
-
- public StandardPackagesCollection(String packageName, List<ImportedPackageHolder> imported, List<ExportedPackageHolder> exported) {
- if(packageName == null) {
- throw new IllegalArgumentException("Package name must be specified for a collection of packages");
- }
- this.packageName = packageName;
- this.imported = imported == null ? new ArrayList<ImportedPackageHolder>() : imported;
- this.exported = exported == null ? new ArrayList<ExportedPackageHolder>() : exported;
- }
-
- /**
- * {@inheritDoc}
- */
- public List<ExportedPackageHolder> getExported() {
- return this.exported;
- }
-
- /**
- * {@inheritDoc}
- */
- public List<ImportedPackageHolder> getImported() {
- return this.imported;
- }
-
- /**
- * {@inheritDoc}
- */
- public String getPackageName() {
- return this.packageName;
- }
-
-}
diff --git a/org.eclipse.virgo.apps.admin.core/src/main/java/org/eclipse/virgo/apps/admin/core/state/StandardRequiredBundleHolder.java b/org.eclipse.virgo.apps.admin.core/src/main/java/org/eclipse/virgo/apps/admin/core/state/StandardRequiredBundleHolder.java
deleted file mode 100644
index 2d21a74..0000000
--- a/org.eclipse.virgo.apps.admin.core/src/main/java/org/eclipse/virgo/apps/admin/core/state/StandardRequiredBundleHolder.java
+++ /dev/null
@@ -1,101 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2008, 2010 VMware Inc.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- * VMware Inc. - initial contribution
- *******************************************************************************/
-
-package org.eclipse.virgo.apps.admin.core.state;
-
-import java.util.Map;
-
-import org.eclipse.virgo.apps.admin.core.BundleHolder;
-import org.eclipse.virgo.apps.admin.core.RequiredBundleHolder;
-import org.eclipse.virgo.kernel.module.ModuleContextAccessor;
-import org.eclipse.virgo.kernel.osgi.quasi.QuasiRequiredBundle;
-import org.eclipse.virgo.kernel.shell.state.StateService;
-import org.eclipse.virgo.util.osgi.manifest.VersionRange;
-
-
-/**
- * <p>
- * StandardRequiredBundleHolder is the standard implementation of {@link RequiredBundleHolder}.
- * </p>
- *
- * <strong>Concurrent Semantics</strong><br />
- *
- * StandardRequiredBundleHolder is thread-safe
- *
- */
-final class StandardRequiredBundleHolder implements RequiredBundleHolder {
-
- private final QuasiRequiredBundle quasiRequiredBundle;
-
- private final ModuleContextAccessor moduleContextAccessor;
-
- private final StateService stateService;
-
- public StandardRequiredBundleHolder(QuasiRequiredBundle quasiRequiredBundle, ModuleContextAccessor moduleContextAccessor, StateService stateService) {
- this.quasiRequiredBundle = quasiRequiredBundle;
- this.moduleContextAccessor = moduleContextAccessor;
- this.stateService = stateService;
- }
-
- /**
- * {@inheritDoc}
- */
- public BundleHolder getProvider() {
- return new StandardBundleHolder(this.quasiRequiredBundle.getProvider(), this.moduleContextAccessor, this.stateService);
- }
-
- /**
- * {@inheritDoc}
- */
- public String getRequiredBundleName() {
- return this.quasiRequiredBundle.getRequiredBundleName();
- }
-
- /**
- * {@inheritDoc}
- */
- public BundleHolder getRequiringBundle() {
- return new StandardBundleHolder(this.quasiRequiredBundle.getRequiringBundle(), this.moduleContextAccessor, this.stateService);
- }
-
- /**
- * {@inheritDoc}
- */
- public String getVersionConstraint() {
- VersionRange versionConstraint = this.quasiRequiredBundle.getVersionConstraint();
- if(versionConstraint == null) {
- versionConstraint = VersionRange.NATURAL_NUMBER_RANGE;
- }
- return versionConstraint.toString().replace(", oo]", ", ∞]").replace(", oo)", ", ∞)");
- }
-
- /**
- * {@inheritDoc}
- */
- public Map<String, String> getAttributes() {
- return ObjectFormatter.formatMapValues(this.quasiRequiredBundle.getAttributes());
- }
-
- /**
- * {@inheritDoc}
- */
- public Map<String, String> getDirectives() {
- return ObjectFormatter.formatMapValues(this.quasiRequiredBundle.getDirectives());
- }
-
- /**
- * {@inheritDoc}
- */
- public boolean isResolved() {
- return this.quasiRequiredBundle.isResolved();
- }
-
-}
diff --git a/org.eclipse.virgo.apps.admin.core/src/main/java/org/eclipse/virgo/apps/admin/core/state/StandardServiceHolder.java b/org.eclipse.virgo.apps.admin.core/src/main/java/org/eclipse/virgo/apps/admin/core/state/StandardServiceHolder.java
deleted file mode 100644
index 402e49e..0000000
--- a/org.eclipse.virgo.apps.admin.core/src/main/java/org/eclipse/virgo/apps/admin/core/state/StandardServiceHolder.java
+++ /dev/null
@@ -1,155 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2008, 2010 VMware Inc.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- * VMware Inc. - initial contribution
- *******************************************************************************/
-
-package org.eclipse.virgo.apps.admin.core.state;
-
-import java.util.ArrayList;
-import java.util.List;
-import java.util.Map;
-
-import org.osgi.framework.Constants;
-import org.springframework.util.StringUtils;
-
-import org.eclipse.virgo.apps.admin.core.BundleHolder;
-import org.eclipse.virgo.apps.admin.core.ServiceHolder;
-import org.eclipse.virgo.kernel.module.ModuleContextAccessor;
-import org.eclipse.virgo.kernel.shell.state.QuasiLiveBundle;
-import org.eclipse.virgo.kernel.shell.state.QuasiLiveService;
-import org.eclipse.virgo.kernel.shell.state.StateService;
-
-/**
- * <p>
- * StandardServiceHolder is the default implementation of ServiceHolder
- * </p>
- *
- * <strong>Concurrent Semantics</strong><br />
- *
- * StandardServiceHolder is thread-safe
- *
- */
-final class StandardServiceHolder implements ServiceHolder {
-
- private static final String MULTIPLE_OBJECT_CLASSES_SUFFIX = ", ...";
-
- private final QuasiLiveService quasiLiveService;
-
- private final ModuleContextAccessor moduleContextAccessor;
-
- private final StateService stateService;
-
- public StandardServiceHolder(QuasiLiveService quasiLiveService, ModuleContextAccessor moduleContextAccessor, StateService stateService) {
- if(quasiLiveService == null || moduleContextAccessor == null) {
- throw new IllegalArgumentException("QuasiLiveService and ModuleContextAccessor must not be null");
- }
- this.quasiLiveService = quasiLiveService;
- this.moduleContextAccessor = moduleContextAccessor;
- this.stateService = stateService;
- }
-
- /**
- * {@inheritDoc}
- */
- public long getServiceId() {
- return this.quasiLiveService.getServiceId();
- }
-
- /**
- * {@inheritDoc}
- */
- public String getFormattedObjectClass() {
- return this.formatObjectClass(this.quasiLiveService.getProperties().get(Constants.OBJECTCLASS));
- }
-
- /**
- * {@inheritDoc}
- */
- public List<BundleHolder> getConsumers() {
- List<QuasiLiveBundle> consumers = this.quasiLiveService.getConsumers();
- List<BundleHolder> bundleHolders = new ArrayList<BundleHolder>();
- for(QuasiLiveBundle quasiLiveBundle : consumers) {
- bundleHolders.add(new StandardBundleHolder(quasiLiveBundle, this.moduleContextAccessor, this.stateService));
- }
- return bundleHolders;
- }
-
- /**
- * {@inheritDoc}
- */
- public Map<String, String> getProperties() {
- return ObjectFormatter.formatMapValues(this.quasiLiveService.getProperties());
- }
-
- /**
- * {@inheritDoc}
- */
- public BundleHolder getProvider() {
- return new StandardBundleHolder(this.quasiLiveService.getProvider(), this.moduleContextAccessor, this.stateService);
- }
-
- /**
- * {@inheritDoc}
- */
- public int compareTo(ServiceHolder o) {
- return Long.valueOf(this.getServiceId()).compareTo(Long.valueOf(o.getServiceId()));
- }
-
- @Override
- public int hashCode() {
- final int prime = 31;
- int result = 1;
- result = prime * result + quasiLiveService.hashCode();
- return result;
- }
-
- @Override
- public boolean equals(Object obj) {
- if (this == obj)
- return true;
- if (obj == null)
- return false;
- if (getClass() != obj.getClass())
- return false;
- StandardServiceHolder other = (StandardServiceHolder) obj;
- if (!quasiLiveService.equals(other.quasiLiveService))
- return false;
- return true;
- }
-
- private String formatObjectClass(Object objectClass) {
- StringBuilder sb = new StringBuilder();
- if(objectClass == null) {
- objectClass = new String[0];
- }
- String[] objectClasses;
- if(objectClass instanceof String) {
- objectClasses = StringUtils.commaDelimitedListToStringArray((String) objectClass);
- } else if(objectClass instanceof Object[]) {
- objectClasses = (String[]) objectClass;
- } else {
- objectClasses = StringUtils.commaDelimitedListToStringArray(objectClass.toString());
- }
-
- if (objectClasses.length == 0) {
- sb.append("<none>");
- } else {
-
- String formattedObjectClass = objectClasses[0];
- sb.append(formattedObjectClass);
-
- if (objectClasses.length > 1) {
- sb.append(MULTIPLE_OBJECT_CLASSES_SUFFIX);
- }
- }
-
- return sb.toString();
- }
-
-}
diff --git a/org.eclipse.virgo.apps.admin.core/src/main/java/org/eclipse/virgo/apps/admin/core/state/StandardStateHolder.java b/org.eclipse.virgo.apps.admin.core/src/main/java/org/eclipse/virgo/apps/admin/core/state/StandardStateHolder.java
deleted file mode 100644
index d0611fb..0000000
--- a/org.eclipse.virgo.apps.admin.core/src/main/java/org/eclipse/virgo/apps/admin/core/state/StandardStateHolder.java
+++ /dev/null
@@ -1,260 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2008, 2010 VMware Inc.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- * VMware Inc. - initial contribution
- *******************************************************************************/
-
-package org.eclipse.virgo.apps.admin.core.state;
-
-import java.io.File;
-import java.util.ArrayList;
-import java.util.List;
-
-import org.eclipse.virgo.apps.admin.core.BundleHolder;
-import org.eclipse.virgo.apps.admin.core.DumpLocator;
-import org.eclipse.virgo.apps.admin.core.ExportedPackageHolder;
-import org.eclipse.virgo.apps.admin.core.FailedResolutionHolder;
-import org.eclipse.virgo.apps.admin.core.ImportedPackageHolder;
-import org.eclipse.virgo.apps.admin.core.PackagesCollection;
-import org.eclipse.virgo.apps.admin.core.ServiceHolder;
-import org.eclipse.virgo.apps.admin.core.StateHolder;
-import org.eclipse.virgo.kernel.module.ModuleContextAccessor;
-import org.eclipse.virgo.kernel.osgi.quasi.QuasiBundle;
-import org.eclipse.virgo.kernel.osgi.quasi.QuasiExportPackage;
-import org.eclipse.virgo.kernel.osgi.quasi.QuasiFramework;
-import org.eclipse.virgo.kernel.osgi.quasi.QuasiFrameworkFactory;
-import org.eclipse.virgo.kernel.osgi.quasi.QuasiImportPackage;
-import org.eclipse.virgo.kernel.osgi.quasi.QuasiResolutionFailure;
-import org.eclipse.virgo.kernel.shell.state.QuasiLiveService;
-import org.eclipse.virgo.kernel.shell.state.StateService;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-/**
- * <p>
- * StandardStateInspectorService is the standard implementation of {@link StateHolder}.
- * </p>
- *
- * <strong>Concurrent Semantics</strong><br />
- *
- * StandardStateInspectorService is Thread-safe
- *
- */
-final class StandardStateHolder implements StateHolder {
-
- private static final Logger LOGGER = LoggerFactory.getLogger(StandardStateHolder.class);
-
- private static final String LIVE = "Live";
-
- private static final Object KERNEL_REGION_NAME = "org.eclipse.equinox.region.kernel";
-
- private final StateService stateService;
-
- private final DumpLocator dumpLocator;
-
- private final ModuleContextAccessor moduleContextAccessor;
-
- private final QuasiFrameworkFactory quasiFrameworkFactory;
-
- public StandardStateHolder(StateService stateService, DumpLocator dumpLocator, ModuleContextAccessor moduleContextAccessor,
- QuasiFrameworkFactory quasiFrameworkFactory) {
- this.stateService = stateService;
- this.dumpLocator = dumpLocator;
- this.moduleContextAccessor = moduleContextAccessor;
- this.quasiFrameworkFactory = quasiFrameworkFactory;
- }
-
- /**
- * {@inheritDoc}
- */
- public List<BundleHolder> getAllBundles(String source) {
- File dumpDirectory = null;
- if (source != null && !LIVE.equals(source)) {
- dumpDirectory = this.getDumpDirectory(source);
- }
- List<QuasiBundle> allBundles = this.stateService.getAllBundles(dumpDirectory);
- List<BundleHolder> heldBundles = new ArrayList<BundleHolder>();
- for (QuasiBundle quasiBundle : allBundles) {
- if (quasiBundle != null && (!KERNEL_REGION_NAME.equals(this.stateService.getBundleRegionName(quasiBundle.getBundleId())) || 0l == quasiBundle.getBundleId())) {
- heldBundles.add(new StandardBundleHolder(quasiBundle, this.moduleContextAccessor, this.stateService));
- }
- }
- return heldBundles;
- }
-
- /**
- * {@inheritDoc}
- */
- public List<ServiceHolder> getAllServices(String source) {
- File dumpDirectory = null;
- List<ServiceHolder> serviceHolders = new ArrayList<ServiceHolder>();
- if (source != null && !LIVE.equals(source)) {
- dumpDirectory = this.getDumpDirectory(source);
- }
- List<QuasiLiveService> allServices = this.stateService.getAllServices(dumpDirectory);
- for (QuasiLiveService quasiLiveService : allServices) {
- serviceHolders.add(new StandardServiceHolder(quasiLiveService, moduleContextAccessor, this.stateService));
- }
- return serviceHolders;
- }
-
- /**
- * {@inheritDoc}
- */
- public BundleHolder getBundle(String source, long bundleId) {
- File dumpDirectory = null;
- if (source != null && !LIVE.equals(source)) {
- dumpDirectory = this.getDumpDirectory(source);
- }
-
- QuasiBundle bundle = stateService.getBundle(dumpDirectory, bundleId);
- if (bundle != null) {
- return new StandardBundleHolder(bundle, this.moduleContextAccessor, this.stateService);
- }
- return null;
- }
-
- /**
- * {@inheritDoc}
- */
- public BundleHolder getBundle(String source, String name, String version, String region) {
- File dumpDirectory = null;
- if (source != null && !LIVE.equals(source)) {
- dumpDirectory = this.getDumpDirectory(source);
- }
- QuasiBundle result = null;
- if (name != null && version != null) {
- List<QuasiBundle> allBundles = this.stateService.getAllBundles(dumpDirectory);
- for (QuasiBundle quasiBundle : allBundles) {
- if (quasiBundle.getSymbolicName().equals(name) && quasiBundle.getVersion().toString().equals(version) && this.stateService.getBundleRegionName(quasiBundle.getBundleId()).equals(region)) {
- result = quasiBundle;
- }
- }
- }
- if (result != null) {
- return new StandardBundleHolder(result, this.moduleContextAccessor, this.stateService);
- }
- return null;
- }
-
- /**
- * {@inheritDoc}
- */
- public ServiceHolder getService(String source, long serviceId) {
- File dumpDirectory = null;
- if (source != null && !LIVE.equals(source)) {
- dumpDirectory = this.getDumpDirectory(source);
- }
- QuasiLiveService service = this.stateService.getService(dumpDirectory, serviceId);
- if (service != null) {
- return new StandardServiceHolder(service, this.moduleContextAccessor, this.stateService);
- }
- return null;
- }
-
- /**
- * {@inheritDoc}
- */
- public PackagesCollection getPackages(String source, String packageName) {
- QuasiFramework quasiFramework = this.getQuasiFramework(source);
- List<QuasiBundle> bundles = quasiFramework.getBundles();
-
- List<ImportedPackageHolder> importedPackageHolders = new ArrayList<ImportedPackageHolder>();
- List<ExportedPackageHolder> exportedPackageHolders = new ArrayList<ExportedPackageHolder>();
-
- for (QuasiBundle qBundle : bundles) {
- ImportedPackageHolder importPackage = processImporters(qBundle, packageName);
- if (importPackage != null) {
- importedPackageHolders.add(importPackage);
- }
- ExportedPackageHolder exportPackage = processExporters(qBundle, packageName);
- if (exportPackage != null) {
- exportedPackageHolders.add(exportPackage);
- }
- }
- return new StandardPackagesCollection(packageName, importedPackageHolders, exportedPackageHolders);
- }
-
- /**
- * {@inheritDoc}
- */
- public List<FailedResolutionHolder> getResolverReport(String source, long bundleId) {
- File dumpDirectory = null;
- if (source != null && !LIVE.equals(source)) {
- dumpDirectory = this.getDumpDirectory(source);
- }
- List<QuasiResolutionFailure> resolverReport = this.stateService.getResolverReport(dumpDirectory, bundleId);
- List<FailedResolutionHolder> failedResolutionHolders = new ArrayList<FailedResolutionHolder>();
- if (resolverReport != null) {
- for (QuasiResolutionFailure quasiResolutionFailure : resolverReport) {
- failedResolutionHolders.add(new StandardFailedResolutionHolder(quasiResolutionFailure, this.moduleContextAccessor, this.stateService));
- }
- }
- return failedResolutionHolders;
- }
-
- /**
- * {@inheritDoc}
- */
- public List<BundleHolder> search(String source, String term) {
- File dumpDirectory = null;
- if (source != null && !LIVE.equals(source)) {
- dumpDirectory = this.getDumpDirectory(source);
- }
- List<QuasiBundle> matchingBundles = this.stateService.search(dumpDirectory, term);
- List<BundleHolder> heldMatchingBundles = new ArrayList<BundleHolder>();
- for (QuasiBundle quasiBundle : matchingBundles) {
- if (quasiBundle != null) {
- heldMatchingBundles.add(new StandardBundleHolder(quasiBundle, this.moduleContextAccessor, this.stateService));
- }
- }
- return heldMatchingBundles;
- }
-
- private File getDumpDirectory(String source) {
- File dumpDirectory = null;
- try {
- dumpDirectory = this.dumpLocator.getDumpDir(source);
- } catch (Exception e) {
- LOGGER.warn(String.format("Unable to obtain the dump directory '%s'", source), e);
- }
- return dumpDirectory;
- }
-
- private QuasiFramework getQuasiFramework(String source) {
- File dumpDirectory = getDumpDirectory(source);
- if (dumpDirectory != null) {
- try {
- return this.quasiFrameworkFactory.create(dumpDirectory);
- } catch (Exception e) {
- throw new RuntimeException("Failed to create quasi-framework", e);
- }
- } else {
- return this.quasiFrameworkFactory.create();
- }
- }
-
- private ImportedPackageHolder processImporters(QuasiBundle qBundle, String packageName) {
- for (QuasiImportPackage qImportPackage : qBundle.getImportPackages()) {
- if (qImportPackage.getPackageName().equals(packageName)) {
- return new StandardImportedPackageHolder(qImportPackage, this.moduleContextAccessor, this.stateService);
- }
- }
- return null;
- }
-
- private ExportedPackageHolder processExporters(QuasiBundle qBundle, String packageName) {
- for (QuasiExportPackage qExportPackage : qBundle.getExportPackages()) {
- if (qExportPackage.getPackageName().equals(packageName)) {
- return new StandardExportedPackageHolder(qExportPackage, this.moduleContextAccessor, this.stateService);
- }
- }
- return null;
- }
-
-}
diff --git a/org.eclipse.virgo.apps.admin.core/src/main/resources/META-INF/spring/module-context.xml b/org.eclipse.virgo.apps.admin.core/src/main/resources/META-INF/spring/module-context.xml
deleted file mode 100644
index 7607dfb..0000000
--- a/org.eclipse.virgo.apps.admin.core/src/main/resources/META-INF/spring/module-context.xml
+++ /dev/null
@@ -1,34 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<beans xmlns="http://www.springframework.org/schema/beans"
- xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
- xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd">
-
-<!-- ARTEFACT MANAGER -->
-
- <bean id="artefactManagerContent" class="org.eclipse.virgo.apps.admin.core.artifact.StandardArtifactService">
- <constructor-arg ref="applicationDeployer"/>
- <constructor-arg ref="workArea"/>
- </bean>
-
-<!-- DUMP INSPECTOR -->
-
- <bean id="dumpPathLocator" class="org.eclipse.virgo.apps.admin.core.dump.StandardDumpPathLocator" />
-
- <bean id="dumpInspectorService" class="org.eclipse.virgo.apps.admin.core.dump.StandardDumpInspectorService">
- <constructor-arg ref="dumpPathLocator"/>
- </bean>
-
-<!-- STATE INSPECTOR -->
-
- <bean id="dumpLocator" class="org.eclipse.virgo.apps.admin.core.state.StandardDumpLocator">
- <constructor-arg ref="dumpPathLocator"/>
- </bean>
-
- <bean id="stateHolder" class="org.eclipse.virgo.apps.admin.core.state.StandardStateHolder">
- <constructor-arg ref="stateService" />
- <constructor-arg ref="dumpLocator"/>
- <constructor-arg ref="moduleContextAccessor"/>
- <constructor-arg ref="quasiFrameworkFactory" />
- </bean>
-
-</beans>
diff --git a/org.eclipse.virgo.apps.admin.core/src/main/resources/META-INF/spring/osgi-context.xml b/org.eclipse.virgo.apps.admin.core/src/main/resources/META-INF/spring/osgi-context.xml
deleted file mode 100644
index ec795f4..0000000
--- a/org.eclipse.virgo.apps.admin.core/src/main/resources/META-INF/spring/osgi-context.xml
+++ /dev/null
@@ -1,29 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
- xmlns:osgi="http://www.springframework.org/schema/osgi"
- xsi:schemaLocation="
- http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd
- http://www.springframework.org/schema/osgi http://www.springframework.org/schema/osgi/spring-osgi.xsd">
-
-<!-- ARTEFACT MANAGER -->
- <osgi:reference id="applicationDeployer" interface="org.eclipse.virgo.kernel.deployer.core.ApplicationDeployer" />
-
- <osgi:reference id="workArea" interface="org.eclipse.virgo.kernel.services.work.WorkArea" />
-
- <osgi:service ref="artefactManagerContent" interface="org.eclipse.virgo.apps.admin.core.ArtifactService"/>
-
- <osgi:reference id="moduleContextAccessor" interface="org.eclipse.virgo.kernel.module.ModuleContextAccessor"/>
-
-<!-- DUMP INSPECTOR -->
-
- <osgi:service ref="dumpInspectorService" interface="org.eclipse.virgo.apps.admin.core.DumpInspectorService"/>
-
-<!-- STATE INSPECTOR -->
-
- <osgi:reference id="quasiFrameworkFactory" interface="org.eclipse.virgo.kernel.osgi.quasi.QuasiFrameworkFactory" />
-
- <osgi:reference id="stateService" interface="org.eclipse.virgo.kernel.shell.state.StateService" />
-
- <osgi:service ref="stateHolder" interface="org.eclipse.virgo.apps.admin.core.StateHolder"/>
-
-</beans>
diff --git a/org.eclipse.virgo.apps.admin.core/src/test/java/org/eclipse/virgo/apps/admin/core/artifact/StandardArtifactServiceTests.java b/org.eclipse.virgo.apps.admin.core/src/test/java/org/eclipse/virgo/apps/admin/core/artifact/StandardArtifactServiceTests.java
deleted file mode 100644
index 387494e..0000000
--- a/org.eclipse.virgo.apps.admin.core/src/test/java/org/eclipse/virgo/apps/admin/core/artifact/StandardArtifactServiceTests.java
+++ /dev/null
@@ -1,57 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2008, 2010 VMware Inc.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- * VMware Inc. - initial contribution
- *******************************************************************************/
-
-package org.eclipse.virgo.apps.admin.core.artifact;
-
-import static org.junit.Assert.assertEquals;
-import static org.junit.Assert.assertTrue;
-
-import java.io.File;
-
-import org.easymock.EasyMock;
-import org.junit.Test;
-
-import org.eclipse.virgo.apps.admin.core.artifact.StandardArtifactService;
-import org.eclipse.virgo.apps.admin.core.stubs.StubWorkArea;
-import org.eclipse.virgo.kernel.deployer.core.ApplicationDeployer;
-import org.eclipse.virgo.kernel.deployer.core.DeploymentException;
-
-/**
- */
-public class StandardArtifactServiceTests {
-
- private final ApplicationDeployer deployer = EasyMock.createNiceMock(ApplicationDeployer.class);
-
- private final StandardArtifactService standardArtifactService = new StandardArtifactService(this.deployer, new StubWorkArea());
-
- @Test
- public void testDeploy() {
- String deploy = this.standardArtifactService.deploy(new File("IExist"));
- assertEquals("Artifact deployed", deploy);
- }
-
- @Test
- public void testDeployError() throws DeploymentException {
- File stagedFile = new File("IDontExist");
-
- EasyMock.expect(this.deployer.deploy(stagedFile.toURI())).andThrow(new DeploymentException("it went wrong"));
- EasyMock.replay(this.deployer);
-
- String deploy = this.standardArtifactService.deploy(stagedFile);
- assertEquals("Deployment Error 'it went wrong'", deploy);
- }
-
- @Test
- public void testGetStagingDirectory() {
- assertTrue(this.standardArtifactService.getStagingDirectory().getPath().contains("target"));
- }
-
-}
diff --git a/org.eclipse.virgo.apps.admin.core/src/test/java/org/eclipse/virgo/apps/admin/core/dump/StandardDumpManagerServiceTests.java b/org.eclipse.virgo.apps.admin.core/src/test/java/org/eclipse/virgo/apps/admin/core/dump/StandardDumpManagerServiceTests.java
deleted file mode 100644
index c3c35ae..0000000
--- a/org.eclipse.virgo.apps.admin.core/src/test/java/org/eclipse/virgo/apps/admin/core/dump/StandardDumpManagerServiceTests.java
+++ /dev/null
@@ -1,122 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2008, 2010 VMware Inc.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- * VMware Inc. - initial contribution
- *******************************************************************************/
-
-package org.eclipse.virgo.apps.admin.core.dump;
-
-import static org.junit.Assert.assertEquals;
-import static org.junit.Assert.assertNotNull;
-
-import java.io.File;
-import java.util.List;
-
-import org.eclipse.virgo.apps.admin.core.dump.StandardDumpInspectorService;
-import org.eclipse.virgo.apps.admin.core.stubs.StubDumpPathLocator;
-import org.junit.Before;
-import org.junit.Test;
-
-
-/**
- */
-public final class StandardDumpManagerServiceTests {
-
- private StandardDumpInspectorService dumpInspectorService;
-
- private final String DUMP_FOLDER_CONTENT = "testDumpWithContent";
-
- private final String DUMP_FOLDER_NO_CONTENT = "testDumpWithNoContent";
-
- private final String DUMP_FOLDER_NOT_EXIST = "notHere";
-
- private final String DUMP_ITEM_ONE = "dumpItem1.txt";
-
- private final String DUMP_ITEM_TWO = "dumpItem2.foo";
-
- private final String DUMP_ITEM_FAKE = "Not_Here";
-
- private final static String LINE_SEPARATOR = System.getProperty("line.separator");
-
- @Before
- public void setup() {
- this.dumpInspectorService = new StandardDumpInspectorService(new StubDumpPathLocator());
- }
-
- @Test
- public void testFindAvaliableDumps(){
- List<File> result = this.dumpInspectorService.findAvaliableDumps();
- assertNotNull(result);
- assertEquals(2, result.size());
- }
-
- @Test
- public void testGetDumpEntriesNoFolder() {
- List<String> result = this.dumpInspectorService.getDumpEntries(DUMP_FOLDER_NOT_EXIST);
- assertNotNull(result);
- assertEquals(1, result.size());
- }
-
- @Test
- public void testGetDumpEntriesNotExists() {
- List<String> result = this.dumpInspectorService.getDumpEntries(DUMP_FOLDER_NO_CONTENT);
- assertNotNull(result);
- assertEquals(1, result.size());
- }
-
- @Test
- public void testGetDumpEntriesExists() {
- List<String> result = this.dumpInspectorService.getDumpEntries(DUMP_FOLDER_CONTENT);
- assertNotNull(result);
- assertEquals(3, result.size());
- }
-
- @Test
- public void testGetDumpEntriesWithNullFolderName() {
- List<String> result = this.dumpInspectorService.getDumpEntries(null);
- assertNotNull(result);
- assertEquals(0, result.size());
- }
-
- @Test
- public void testGetEntryNoFolder() {
- String result = this.dumpInspectorService.getDumpEntry(DUMP_FOLDER_NOT_EXIST, DUMP_ITEM_TWO);
- assertEquals("", result);
- }
-
- @Test
- public void testGetEntryNotExists() {
- String result = this.dumpInspectorService.getDumpEntry(DUMP_FOLDER_NO_CONTENT, DUMP_ITEM_TWO);
- assertEquals("", result);
- }
-
- @Test
- public void testGetEntryNotExists2() {
- String result = this.dumpInspectorService.getDumpEntry(DUMP_FOLDER_CONTENT, DUMP_ITEM_FAKE);
- assertEquals("", result);
- }
-
- @Test
- public void testGetEntryExists() {
- String result = this.dumpInspectorService.getDumpEntry(DUMP_FOLDER_CONTENT, DUMP_ITEM_ONE);
- assertEquals("Line1" + LINE_SEPARATOR + "Line2" + LINE_SEPARATOR + "Line3" + LINE_SEPARATOR, result);
- }
-
- @Test
- public void testGetEntryNullDump() {
- String result = this.dumpInspectorService.getDumpEntry(null, DUMP_ITEM_ONE);
- assertEquals("", result);
- }
-
- @Test
- public void testGetEntryNullItem() {
- String result = this.dumpInspectorService.getDumpEntry(DUMP_FOLDER_CONTENT, null);
- assertEquals("", result);
- }
-
-}
diff --git a/org.eclipse.virgo.apps.admin.core/src/test/java/org/eclipse/virgo/apps/admin/core/dump/StandardDumpPathLocatorTests.java b/org.eclipse.virgo.apps.admin.core/src/test/java/org/eclipse/virgo/apps/admin/core/dump/StandardDumpPathLocatorTests.java
deleted file mode 100644
index 5ad71cc..0000000
--- a/org.eclipse.virgo.apps.admin.core/src/test/java/org/eclipse/virgo/apps/admin/core/dump/StandardDumpPathLocatorTests.java
+++ /dev/null
@@ -1,137 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2008, 2010 VMware Inc.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- * VMware Inc. - initial contribution
- *******************************************************************************/
-
-package org.eclipse.virgo.apps.admin.core.dump;
-
-import static org.junit.Assert.assertEquals;
-import static org.junit.Assert.assertNotNull;
-import static org.junit.Assert.assertNull;
-
-import java.io.File;
-import java.lang.management.ManagementFactory;
-import java.util.HashMap;
-import java.util.Map;
-
-import javax.management.InstanceNotFoundException;
-import javax.management.MBeanRegistrationException;
-import javax.management.MBeanServer;
-import javax.management.MXBean;
-import javax.management.MalformedObjectNameException;
-import javax.management.ObjectName;
-
-import org.junit.Before;
-import org.junit.Test;
-import org.osgi.framework.InvalidSyntaxException;
-
-/**
- */
-public class StandardDumpPathLocatorTests {
-
- private final static String FILE_SEPARATOR = System.getProperty("file.separator");
-
- private static final String CONFIG_PROPERTY = "dump.root.directory";
-
- private static final String MEDIC_MBEAN_QUERY = "org.eclipse.virgo.kernel:type=Configuration,name=org.eclipse.virgo.medic";
-
- private static final String TEST_DUMPS_FOLDER = "serviceability" + FILE_SEPARATOR + "dumps";
-
- private static final String TEST_DUMP_CONTENT = "testDumpWithContent";
-
- private static final String TEST_DUMP_NO_CONTENT = "testDumpWithNoContent";
-
- private static final String TEST_DUMP_CONTENT_ITEM = "dumpItem2.foo";
-
- private static final String TEST_DUMP_CONTENT_STATE = "osgi.zip";
-
- private StandardDumpPathLocator standardDumpPathLocator;
-
- @Before
- public void setUp() throws Exception {
- MBeanServer mBeanServer = ManagementFactory.getPlatformMBeanServer();
- if(!mBeanServer.isRegistered(new ObjectName(MEDIC_MBEAN_QUERY))){
- mBeanServer.registerMBean(new MedicMXBean(), new ObjectName(MEDIC_MBEAN_QUERY));
- }
- this.standardDumpPathLocator = new StandardDumpPathLocator();
- }
-
- @Test
- public void testGetDumpDirectory() {
- File dumpDirectory = standardDumpPathLocator.getDumpDirectory();
- assertNotNull(dumpDirectory);
- assertEquals(TEST_DUMPS_FOLDER, dumpDirectory.getPath());
- }
-
- @Test
- public void testGetDumpDirectoryNoConfig() throws InvalidSyntaxException, MBeanRegistrationException, InstanceNotFoundException, MalformedObjectNameException, NullPointerException {
- MBeanServer mBeanServer = ManagementFactory.getPlatformMBeanServer();
- mBeanServer.unregisterMBean(new ObjectName(MEDIC_MBEAN_QUERY));
- standardDumpPathLocator = new StandardDumpPathLocator();
- File dumpDirectory = standardDumpPathLocator.getDumpDirectory();
- assertNull(dumpDirectory);
- }
-
- @Test
- public void testGetDumpFolder() {
- File dumpFolder = standardDumpPathLocator.getDumpFolder(TEST_DUMP_CONTENT);
- assertNotNull(dumpFolder);
- assertEquals(TEST_DUMPS_FOLDER + FILE_SEPARATOR + TEST_DUMP_CONTENT, dumpFolder.getPath());
- }
-
- @Test
- public void testGetDumpFolderNotExist() {
- File dumpFolder = standardDumpPathLocator.getDumpFolder("Im not a folder");
- assertNull(dumpFolder);
- }
-
- @Test
- public void testGetDumpFolderNull() {
- File dumpFolder = standardDumpPathLocator.getDumpFolder(null);
- assertNull(dumpFolder);
- }
-
- @Test
- public void testGetDumpEntryFileContent() {
- File dumpEntryFile = standardDumpPathLocator.getDumpEntryFile(TEST_DUMP_CONTENT, TEST_DUMP_CONTENT_ITEM);
- assertNotNull(dumpEntryFile);
- }
-
- @Test
- public void testGetDumpEntryFileNoContent() {
- File dumpEntryFile = standardDumpPathLocator.getDumpEntryFile(TEST_DUMP_NO_CONTENT, TEST_DUMP_CONTENT_STATE);
- assertNull(dumpEntryFile);
- }
-
- @Test
- public void testGetDumpEntryFileNullFolder() {
- File dumpEntryFile = standardDumpPathLocator.getDumpEntryFile(null, TEST_DUMP_CONTENT);
- assertNull(dumpEntryFile);
- }
-
- @Test
- public void testGetDumpEntryFile() {
- File dumpEntryFile = standardDumpPathLocator.getDumpEntryFile(TEST_DUMPS_FOLDER, null);
- assertNull(dumpEntryFile);
- }
-
- public static class MedicMXBean implements MedicMXBeanAPI {
- public Map<String, String> getProperties(){
- HashMap<String, String> hashMap = new HashMap<String, String>();
- hashMap.put(CONFIG_PROPERTY, TEST_DUMPS_FOLDER);
- return hashMap;
- }
- }
-
- @MXBean
- public static interface MedicMXBeanAPI {
- public Map<String, String> getProperties();
- }
-
-}
diff --git a/org.eclipse.virgo.apps.admin.core/src/test/java/org/eclipse/virgo/apps/admin/core/state/ObjectFormatterTests.java b/org.eclipse.virgo.apps.admin.core/src/test/java/org/eclipse/virgo/apps/admin/core/state/ObjectFormatterTests.java
deleted file mode 100644
index db15840..0000000
--- a/org.eclipse.virgo.apps.admin.core/src/test/java/org/eclipse/virgo/apps/admin/core/state/ObjectFormatterTests.java
+++ /dev/null
@@ -1,70 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2008, 2010 VMware Inc.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- * VMware Inc. - initial contribution
- *******************************************************************************/
-
-package org.eclipse.virgo.apps.admin.core.state;
-
-import static org.junit.Assert.assertEquals;
-import static org.junit.Assert.assertTrue;
-
-import java.util.HashMap;
-import java.util.Map;
-
-import org.eclipse.virgo.apps.admin.core.state.ObjectFormatter;
-import org.junit.Test;
-
-
-/**
- */
-public class ObjectFormatterTests {
-
- /**
- * Test method for {@link org.eclipse.virgo.apps.admin.core.state.ObjectFormatter#formatObject(java.lang.Object)}.
- */
- @Test
- public void testFormatObject() {
- Object[] fooArray = new Object[3];
- fooArray[0] = "a";
- fooArray[1] = "b";
- fooArray[2] = "c";
- String formatObject = ObjectFormatter.formatObject(fooArray);
- assertTrue(formatObject.contains("a"));
- assertTrue(formatObject.contains("b"));
- assertTrue(formatObject.contains("c"));
- assertTrue(formatObject.contains(", "));
- }
-
- /**
- * Test method for {@link org.eclipse.virgo.apps.admin.core.state.ObjectFormatter#formatMapValues(java.util.Map)}.
- */
- @Test
- public void testFormatMapValues() {
- Map<String, Object> properties= new HashMap<String, Object>();
-
- properties.put("a", 56);
-
- Object[] fooArray = new Object[3];
- fooArray[0] = "a";
- fooArray[1] = "b";
- fooArray[2] = "c";
- properties.put("b", fooArray);
-
- Map<String, String> formatMapValues = ObjectFormatter.formatMapValues(properties);
-
- assertEquals(2, formatMapValues.size());
- assertEquals("56", formatMapValues.get("a"));
-
- assertTrue(formatMapValues.get("b").contains("a"));
- assertTrue(formatMapValues.get("b").contains("b"));
- assertTrue(formatMapValues.get("b").contains("c"));
- assertTrue(formatMapValues.get("b").contains(", "));
- }
-
-}
diff --git a/org.eclipse.virgo.apps.admin.core/src/test/java/org/eclipse/virgo/apps/admin/core/state/StandardFailedResolutionHolderTests.java b/org.eclipse.virgo.apps.admin.core/src/test/java/org/eclipse/virgo/apps/admin/core/state/StandardFailedResolutionHolderTests.java
deleted file mode 100644
index 1fba864..0000000
--- a/org.eclipse.virgo.apps.admin.core/src/test/java/org/eclipse/virgo/apps/admin/core/state/StandardFailedResolutionHolderTests.java
+++ /dev/null
@@ -1,48 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2008, 2010 VMware Inc.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- * VMware Inc. - initial contribution
- *******************************************************************************/
-
-package org.eclipse.virgo.apps.admin.core.state;
-
-import static org.junit.Assert.assertEquals;
-
-import org.eclipse.virgo.apps.admin.core.BundleHolder;
-import org.eclipse.virgo.apps.admin.core.state.StandardFailedResolutionHolder;
-import org.eclipse.virgo.apps.admin.core.stubs.StubModuleContextAccessor;
-import org.eclipse.virgo.apps.admin.core.stubs.StubQuasiResolutionFaliure;
-import org.eclipse.virgo.apps.admin.core.stubs.StubStateService;
-import org.junit.Before;
-import org.junit.Test;
-
-
-/**
- */
-public class StandardFailedResolutionHolderTests {
-
- private StandardFailedResolutionHolder standardFailedResolutionHolder;
-
- @Before
- public void setUp(){
- this.standardFailedResolutionHolder = new StandardFailedResolutionHolder(new StubQuasiResolutionFaliure("test", 5), new StubModuleContextAccessor(), new StubStateService());
- }
-
- @Test
- public void testGetDescription() {
- String result = this.standardFailedResolutionHolder.getDescription();
- assertEquals("test", result);
- }
-
- @Test
- public void testGetUnresolvedBundle() {
- BundleHolder unresolvedBundle = this.standardFailedResolutionHolder.getUnresolvedBundle();
- assertEquals(new Long(5), unresolvedBundle.getBundleId());
- }
-
-}
diff --git a/org.eclipse.virgo.apps.admin.core/src/test/java/org/eclipse/virgo/apps/admin/core/state/StandardPackagesCollectionTests.java b/org.eclipse.virgo.apps.admin.core/src/test/java/org/eclipse/virgo/apps/admin/core/state/StandardPackagesCollectionTests.java
deleted file mode 100644
index 61f063e..0000000
--- a/org.eclipse.virgo.apps.admin.core/src/test/java/org/eclipse/virgo/apps/admin/core/state/StandardPackagesCollectionTests.java
+++ /dev/null
@@ -1,94 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2008, 2010 VMware Inc.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- * VMware Inc. - initial contribution
- *******************************************************************************/
-
-package org.eclipse.virgo.apps.admin.core.state;
-
-import static org.junit.Assert.*;
-
-import java.util.ArrayList;
-import java.util.List;
-
-import org.eclipse.virgo.apps.admin.core.ExportedPackageHolder;
-import org.eclipse.virgo.apps.admin.core.ImportedPackageHolder;
-import org.eclipse.virgo.apps.admin.core.state.StandardPackagesCollection;
-import org.eclipse.virgo.apps.admin.core.stubs.StubExportedPackageHolder;
-import org.eclipse.virgo.apps.admin.core.stubs.StubImportedPackageHolder;
-import org.junit.Before;
-import org.junit.Test;
-
-
-
-/**
- */
-public class StandardPackagesCollectionTests {
-
- private static final String TEST_PACKAGE = "testPackage";
- private StandardPackagesCollection standardPackagesCollection;
-
- @Before
- public void setUp() {
- List<ImportedPackageHolder> imported = new ArrayList<ImportedPackageHolder>();
- imported.add(new StubImportedPackageHolder(TEST_PACKAGE));
- List<ExportedPackageHolder> exported = new ArrayList<ExportedPackageHolder>();
- exported.add(new StubExportedPackageHolder(TEST_PACKAGE));
- this.standardPackagesCollection = new StandardPackagesCollection(TEST_PACKAGE, imported, exported);
- }
-
- /**
- * Test method for {@link org.eclipse.virgo.apps.admin.core.state.StandardPackagesCollection#getPackageName()}.
- */
- @Test
- public void testGetPackageName() {
- assertEquals(TEST_PACKAGE, this.standardPackagesCollection.getPackageName());
- }
-
- /**
- * Test method for {@link org.eclipse.virgo.apps.admin.core.state.StandardPackagesCollection#getPackageName()}.
- */
- @Test(expected=IllegalArgumentException.class)
- public void testGetPackageNameNullName() {
- this.standardPackagesCollection = new StandardPackagesCollection(null, new ArrayList<ImportedPackageHolder>(), new ArrayList<ExportedPackageHolder>());
- }
-
- @Test
- public void testNullLists() {
- this.standardPackagesCollection = new StandardPackagesCollection(TEST_PACKAGE, null, null);
- List<ImportedPackageHolder> imported = this.standardPackagesCollection.getImported();
- assertNotNull(imported);
- assertEquals(0, imported.size());
- List<ExportedPackageHolder> exported = this.standardPackagesCollection.getExported();
- assertNotNull(exported);
- assertEquals(0, exported.size());
- }
-
- /**
- * Test method for {@link org.eclipse.virgo.apps.admin.core.state.StandardPackagesCollection#getImported()}.
- */
- @Test
- public void testGetImported() {
- List<ImportedPackageHolder> imported = this.standardPackagesCollection.getImported();
- assertNotNull(imported);
- assertEquals(1, imported.size());
- assertEquals(TEST_PACKAGE, imported.get(0).getPackageName());
- }
-
- /**
- * Test method for {@link org.eclipse.virgo.apps.admin.core.state.StandardPackagesCollection#getExported()}.
- */
- @Test
- public void testGetExported() {
- List<ExportedPackageHolder> exported = this.standardPackagesCollection.getExported();
- assertNotNull(exported);
- assertEquals(1, exported.size());
- assertEquals(TEST_PACKAGE, exported.get(0).getPackageName());
- }
-
-}
diff --git a/org.eclipse.virgo.apps.admin.core/src/test/java/org/eclipse/virgo/apps/admin/core/state/StandardRequiredBundleHolderTests.java b/org.eclipse.virgo.apps.admin.core/src/test/java/org/eclipse/virgo/apps/admin/core/state/StandardRequiredBundleHolderTests.java
deleted file mode 100644
index 9a42ac2..0000000
--- a/org.eclipse.virgo.apps.admin.core/src/test/java/org/eclipse/virgo/apps/admin/core/state/StandardRequiredBundleHolderTests.java
+++ /dev/null
@@ -1,81 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2008, 2010 VMware Inc.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- * VMware Inc. - initial contribution
- *******************************************************************************/
-
-package org.eclipse.virgo.apps.admin.core.state;
-
-import static org.junit.Assert.*;
-
-import org.eclipse.virgo.apps.admin.core.BundleHolder;
-import org.eclipse.virgo.apps.admin.core.state.StandardRequiredBundleHolder;
-import org.eclipse.virgo.apps.admin.core.stubs.StubModuleContextAccessor;
-import org.eclipse.virgo.apps.admin.core.stubs.StubQuasiRequiredBundle;
-import org.eclipse.virgo.apps.admin.core.stubs.StubStateService;
-import org.junit.Before;
-import org.junit.Test;
-
-
-/**
- */
-public class StandardRequiredBundleHolderTests {
-
- StandardRequiredBundleHolder standardRequiredBundleHolder;
-
- @Before
- public void setup(){
- this.standardRequiredBundleHolder = new StandardRequiredBundleHolder(new StubQuasiRequiredBundle("testBundle", 5, 6), new StubModuleContextAccessor(), new StubStateService());
- }
-
- /**
- * Test method for {@link org.eclipse.virgo.apps.admin.core.state.StandardRequiredBundleHolder#getProvider()}.
- */
- @Test
- public void testGetProvider() {
- BundleHolder provider = this.standardRequiredBundleHolder.getProvider();
- assertEquals(new Long(5), provider.getBundleId());
- }
-
- /**
- * Test method for {@link org.eclipse.virgo.apps.admin.core.state.StandardRequiredBundleHolder#getRequiredBundleName()}.
- */
- @Test
- public void testGetRequiredBundleName() {
- String requiredBundleName = this.standardRequiredBundleHolder.getRequiredBundleName();
- assertEquals("testBundle", requiredBundleName);
- }
-
- /**
- * Test method for {@link org.eclipse.virgo.apps.admin.core.state.StandardRequiredBundleHolder#getRequiringBundle()}.
- */
- @Test
- public void testGetRequiringBundle() {
- BundleHolder requiringBundle = this.standardRequiredBundleHolder.getRequiringBundle();
- assertEquals(new Long(6), requiringBundle.getBundleId());
- }
-
- /**
- * Test method for {@link org.eclipse.virgo.apps.admin.core.state.StandardRequiredBundleHolder#getVersionConstraint()}.
- */
- @Test
- public void testGetVersionConstraint() {
- String versionConstraint = this.standardRequiredBundleHolder.getVersionConstraint();
- assertEquals("[0.0.0, ∞)", versionConstraint);
- }
-
- /**
- * Test method for {@link org.eclipse.virgo.apps.admin.core.state.StandardRequiredBundleHolder#isResolved()}.
- */
- @Test
- public void testIsResolved() {
- boolean resolved = this.standardRequiredBundleHolder.isResolved();
- assertFalse(resolved);
- }
-
-}
diff --git a/org.eclipse.virgo.apps.admin.core/src/test/java/org/eclipse/virgo/apps/admin/core/state/StandardStateHolderTests.java b/org.eclipse.virgo.apps.admin.core/src/test/java/org/eclipse/virgo/apps/admin/core/state/StandardStateHolderTests.java
deleted file mode 100644
index fb0a755..0000000
--- a/org.eclipse.virgo.apps.admin.core/src/test/java/org/eclipse/virgo/apps/admin/core/state/StandardStateHolderTests.java
+++ /dev/null
@@ -1,303 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2008, 2010 VMware Inc.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- * VMware Inc. - initial contribution
- *******************************************************************************/
-
-package org.eclipse.virgo.apps.admin.core.state;
-
-import static org.junit.Assert.assertEquals;
-import static org.junit.Assert.assertNotNull;
-import static org.junit.Assert.assertNull;
-
-import java.util.List;
-
-import org.eclipse.virgo.apps.admin.core.BundleHolder;
-import org.eclipse.virgo.apps.admin.core.FailedResolutionHolder;
-import org.eclipse.virgo.apps.admin.core.PackagesCollection;
-import org.eclipse.virgo.apps.admin.core.ServiceHolder;
-import org.eclipse.virgo.apps.admin.core.state.StandardStateHolder;
-import org.eclipse.virgo.apps.admin.core.stubs.StubDumpExtractor;
-import org.eclipse.virgo.apps.admin.core.stubs.StubModuleContextAccessor;
-import org.eclipse.virgo.apps.admin.core.stubs.StubQuasiFrameworkFactory;
-import org.eclipse.virgo.apps.admin.core.stubs.StubQuasiLiveBundle;
-import org.eclipse.virgo.apps.admin.core.stubs.StubStateService;
-import org.junit.Before;
-import org.junit.Test;
-
-
-/**
- */
-public class StandardStateHolderTests {
-
- private static final String TEST_DUMP_NAME = "1234";
-
- private static final long NOT_EXISTING_ID = 5;
-
- private static final long EXISTING_ID = 4;
-
- private StandardStateHolder standardStateHolder;
-
- private StubDumpExtractor stubDumpExtractor;
-
- private StubStateService stubStateService;
-
- @Before
- public void setUp() {
- this.stubStateService = new StubStateService();
- this.stubDumpExtractor = new StubDumpExtractor();
- this.standardStateHolder = new StandardStateHolder(this.stubStateService, this.stubDumpExtractor, new StubModuleContextAccessor(), new StubQuasiFrameworkFactory());
- }
-
- //ALL BUNDLES
-
- /**
- * Test method for {@link org.eclipse.virgo.apps.admin.core.state.StandardStateHolder#getAllBundles(String)}.
- */
- @Test
- public void testGetAllBundles() {
- this.stubStateService.setNotNullExpectations();
- List<BundleHolder> result = this.standardStateHolder.getAllBundles(TEST_DUMP_NAME);
- assertNotNull(result);
- }
-
- /**
- * Test method for {@link org.eclipse.virgo.apps.admin.core.state.StandardStateHolder#getAllBundles(String)}.
- */
- @Test
- public void testGetAllBundlesNull() {
- this.stubStateService.setNullExpectations();
- List<BundleHolder> result = this.standardStateHolder.getAllBundles(null);
- assertNotNull(result);
- }
-
- //BUNDLE
-
- /**
- * Test method for {@link org.eclipse.virgo.apps.admin.core.state.StandardStateHolder#getBundle(java.lang.String, long)}.
- */
- @Test
- public void testGetBundleExist() {
- this.stubStateService.setNotNullExpectations();
- BundleHolder result = this.standardStateHolder.getBundle(TEST_DUMP_NAME, EXISTING_ID);
- assertNotNull(result);
- assertEquals("fake.test.bundle", result.getSymbolicName());
- }
-
- /**
- * Test method for {@link org.eclipse.virgo.apps.admin.core.state.StandardStateHolder#getBundle(java.lang.String, long)}.
- */
- @Test
- public void testGetBundleNotExist() {
- this.stubStateService.setNotNullExpectations();
- BundleHolder result = this.standardStateHolder.getBundle(TEST_DUMP_NAME, NOT_EXISTING_ID);
- assertNull(result);
- }
-
- /**
- * Test method for {@link org.eclipse.virgo.apps.admin.core.state.StandardStateHolder#getBundle(java.lang.String, long)}.
- */
- @Test
- public void testGetBundleNullDumpExists() {
- this.stubStateService.setNullExpectations();
- BundleHolder result = this.standardStateHolder.getBundle(null, EXISTING_ID);
- assertNotNull(result);
- assertEquals("fake.test.bundle", result.getSymbolicName());
- }
-
- /**
- * Test method for {@link org.eclipse.virgo.apps.admin.core.state.StandardStateHolder#getBundle(java.lang.String, long)}.
- */
- @Test
- public void testGetBundleNullDumpNotExists() {
- this.stubStateService.setNullExpectations();
- BundleHolder result = this.standardStateHolder.getBundle(null, NOT_EXISTING_ID);
- assertNull(result);
- }
-
- /**
- * Test method for {@link org.eclipse.virgo.apps.admin.core.state.StandardStateHolder#getBundle(java.lang.String, long)}.
- */
- @Test
- public void testGetBundleByNameExist() {
- this.stubStateService.setNotNullExpectations();
- BundleHolder result = this.standardStateHolder.getBundle(TEST_DUMP_NAME, StubQuasiLiveBundle.TEST_NAME, StubQuasiLiveBundle.TEST_VERSION.toString(), StubStateService.TEST_REGION_NAME);
- assertNotNull(result);
- assertEquals("fake.test.bundle", result.getSymbolicName());
- }
-
- /**
- * Test method for {@link org.eclipse.virgo.apps.admin.core.state.StandardStateHolder#getBundle(java.lang.String, long)}.
- */
- @Test
- public void testGetBundleByNameNotExist() {
- this.stubStateService.setNotNullExpectations();
- BundleHolder result = this.standardStateHolder.getBundle(TEST_DUMP_NAME, "nope", "nope", "nope");
- assertNull(result);
- }
-
- /**
- * Test method for {@link org.eclipse.virgo.apps.admin.core.state.StandardStateHolder#getBundle(java.lang.String, long)}.
- */
- @Test
- public void testGetBundleByNameNullDumpExists() {
- this.stubStateService.setNullExpectations();
- BundleHolder result = this.standardStateHolder.getBundle(null, StubQuasiLiveBundle.TEST_NAME, StubQuasiLiveBundle.TEST_VERSION.toString(), StubStateService.TEST_REGION_NAME);
- assertNotNull(result);
- assertEquals(StubQuasiLiveBundle.TEST_NAME, result.getSymbolicName());
- }
-
- /**
- * Test method for {@link org.eclipse.virgo.apps.admin.core.state.StandardStateHolder#getBundle(java.lang.String, long)}.
- */
- @Test
- public void testGetBundleByNameNullDumpNotExists() {
- this.stubStateService.setNullExpectations();
- BundleHolder result = this.standardStateHolder.getBundle(null, "nope", "nope", StubStateService.TEST_REGION_NAME);
- assertNull(result);
- }
-
- //SERVICES
-
- @Test
- public void testGetAllServices(){
- this.stubStateService.setNotNullExpectations();
- List<ServiceHolder> allServices = this.standardStateHolder.getAllServices(TEST_DUMP_NAME);
- assertNotNull(allServices);
- }
-
- @Test
- public void testGetAllServicesNull(){
- this.stubStateService.setNullExpectations();
- List<ServiceHolder> allServices = this.standardStateHolder.getAllServices(null);
- assertNotNull(allServices);
- }
-
- @Test
- public void testGetServiceExists(){
- this.stubStateService.setNotNullExpectations();
- ServiceHolder service = this.standardStateHolder.getService(TEST_DUMP_NAME, EXISTING_ID);
- assertNotNull(service);
- }
-
- @Test
- public void testGetServiceNotExists(){
- this.stubStateService.setNotNullExpectations();
- ServiceHolder service = this.standardStateHolder.getService(TEST_DUMP_NAME, NOT_EXISTING_ID);
- assertNull(service);
- }
-
- @Test
- public void testGetServiceNullExists(){
- this.stubStateService.setNullExpectations();
- ServiceHolder service = this.standardStateHolder.getService(null, EXISTING_ID);
- assertNotNull(service);
- }
-
- @Test
- public void testGetServiceNullNotExists(){
- this.stubStateService.setNullExpectations();
- ServiceHolder service = this.standardStateHolder.getService(null, NOT_EXISTING_ID);
- assertNull(service);
- }
-
- //PACKAGES
-
- @Test
- public void testGetPackages(){
- this.stubStateService.setNotNullExpectations();
- PackagesCollection packages = this.standardStateHolder.getPackages(TEST_DUMP_NAME, StubStateService.TEST_PACKAGE_SEARCH);
- assertNotNull(packages);
- assertEquals(StubStateService.TEST_PACKAGE_SEARCH, packages.getPackageName());
- }
-
- @Test
- public void testGetPackagesNotExists(){
- this.stubStateService.setNotNullExpectations();
- PackagesCollection packages = this.standardStateHolder.getPackages(TEST_DUMP_NAME, "notExist");
- assertNotNull(packages);
- assertEquals(0, packages.getExported().size());
- assertEquals(0, packages.getImported().size());
- assertEquals("notExist", packages.getPackageName());
- }
-
- @Test
- public void testGetPackagesNull(){
- this.stubStateService.setNullExpectations();
- PackagesCollection packages = this.standardStateHolder.getPackages(null, StubStateService.TEST_PACKAGE_SEARCH);
- assertNotNull(packages);
- assertEquals(StubStateService.TEST_PACKAGE_SEARCH, packages.getPackageName());
- }
-
- @Test
- public void testGetPackagesNullNotExists(){
- this.stubStateService.setNullExpectations();
- PackagesCollection packages = this.standardStateHolder.getPackages(null, "notExist");
- assertNotNull(packages);
- assertEquals(0, packages.getExported().size());
- assertEquals(0, packages.getImported().size());
- assertEquals("notExist", packages.getPackageName());
- }
-
- //RESOLVER
-
- @Test
- public void testGetResolverReport(){
- this.stubStateService.setNotNullExpectations();
- List<FailedResolutionHolder> resolverReport = this.standardStateHolder.getResolverReport(TEST_DUMP_NAME, EXISTING_ID);
- assertNotNull(resolverReport);
- }
-
- @Test
- public void testGetResolverReportNotExists(){
- this.stubStateService.setNotNullExpectations();
- List<FailedResolutionHolder> resolverReport = this.standardStateHolder.getResolverReport(TEST_DUMP_NAME, NOT_EXISTING_ID);
- assertNotNull(resolverReport);
- }
-
- @Test
- public void testGetResolverReportNull(){
- this.stubStateService.setNullExpectations();
- List<FailedResolutionHolder> resolverReport = this.standardStateHolder.getResolverReport(null, EXISTING_ID);
- assertNotNull(resolverReport);
- }
-
- @Test
- public void testGetResolverReportNullNotExists(){
- this.stubStateService.setNullExpectations();
- List<FailedResolutionHolder> resolverReport = this.standardStateHolder.getResolverReport(null, NOT_EXISTING_ID);
- assertNotNull(resolverReport);
- }
-
- //SEARCH
-
- @Test
- public void testSearch(){
- this.stubStateService.setNotNullExpectations();
- assertNotNull(this.standardStateHolder.search(TEST_DUMP_NAME, "term"));
- }
-
- @Test
- public void testSearchNullTerm(){
- this.stubStateService.setNotNullExpectations();
- assertNotNull(this.standardStateHolder.search(TEST_DUMP_NAME, null));
- }
-
- @Test
- public void testSearchNull(){
- this.stubStateService.setNullExpectations();
- assertNotNull(this.standardStateHolder.search(null, "term"));
- }
-
- @Test
- public void testSearchNullNullTerm(){
- this.stubStateService.setNullExpectations();
- assertNotNull(this.standardStateHolder.search(null, null));
- }
-
-}
diff --git a/org.eclipse.virgo.apps.admin.core/src/test/java/org/eclipse/virgo/apps/admin/core/state/StateDumpExtractorTests.java b/org.eclipse.virgo.apps.admin.core/src/test/java/org/eclipse/virgo/apps/admin/core/state/StateDumpExtractorTests.java
deleted file mode 100644
index ccd06ed..0000000
--- a/org.eclipse.virgo.apps.admin.core/src/test/java/org/eclipse/virgo/apps/admin/core/state/StateDumpExtractorTests.java
+++ /dev/null
@@ -1,56 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2008, 2010 VMware Inc.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- * VMware Inc. - initial contribution
- *******************************************************************************/
-
-package org.eclipse.virgo.apps.admin.core.state;
-
-import static org.junit.Assert.assertEquals;
-import static org.junit.Assert.assertNotNull;
-
-import java.io.File;
-import java.io.IOException;
-import java.util.zip.ZipException;
-
-import org.eclipse.virgo.apps.admin.core.stubs.StubDumpPathLocator;
-import org.junit.Before;
-import org.junit.Test;
-
-public class StateDumpExtractorTests {
-
- private final String DUMP_FOLDER_CONTENT = "testDumpWithContent";
-
- private final String DUMP_FOLDER_NOT_EXIST = "notHere";
-
- private StandardDumpLocator stateDumpExtractor;
-
- @Before
- public void setUp() {
- StubDumpPathLocator stubDumpPathLocator = new StubDumpPathLocator();
- this.stateDumpExtractor = new StandardDumpLocator(stubDumpPathLocator);
- }
-
- @Test
- public void getStateDump() throws ZipException, IOException {
- File result = this.stateDumpExtractor.getDumpDir(DUMP_FOLDER_CONTENT);
- assertNotNull(result);
- assertEquals(DUMP_FOLDER_CONTENT, result.getName());
- }
-
- @Test(expected=IOException.class)
- public void getStateDumpNotExists() throws ZipException, IOException {
- this.stateDumpExtractor.getDumpDir(DUMP_FOLDER_NOT_EXIST);
- }
-
- @Test(expected=IllegalArgumentException.class)
- public void getStateDumpNull() throws ZipException, IOException {
- this.stateDumpExtractor.getDumpDir(null);
- }
-
-}
diff --git a/org.eclipse.virgo.apps.admin.core/src/test/java/org/eclipse/virgo/apps/admin/core/stubs/StubDumpExtractor.java b/org.eclipse.virgo.apps.admin.core/src/test/java/org/eclipse/virgo/apps/admin/core/stubs/StubDumpExtractor.java
deleted file mode 100644
index f5907f8..0000000
--- a/org.eclipse.virgo.apps.admin.core/src/test/java/org/eclipse/virgo/apps/admin/core/stubs/StubDumpExtractor.java
+++ /dev/null
@@ -1,38 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2008, 2010 VMware Inc.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- * VMware Inc. - initial contribution
- *******************************************************************************/
-
-package org.eclipse.virgo.apps.admin.core.stubs;
-
-import java.io.File;
-import java.io.IOException;
-import java.util.ArrayList;
-import java.util.List;
-import java.util.zip.ZipException;
-
-import org.eclipse.virgo.apps.admin.core.DumpLocator;
-
-
-/**
- */
-final public class StubDumpExtractor implements DumpLocator {
-
- public List<File> getListOfPossibleDumps() {
- return new ArrayList<File>();
- }
-
- /**
- * {@inheritDoc}
- */
- public File getDumpDir(String dump) throws ZipException, IOException {
- return new File(dump);
- }
-
-}
diff --git a/org.eclipse.virgo.apps.admin.core/src/test/java/org/eclipse/virgo/apps/admin/core/stubs/StubDumpManagerService.java b/org.eclipse.virgo.apps.admin.core/src/test/java/org/eclipse/virgo/apps/admin/core/stubs/StubDumpManagerService.java
deleted file mode 100644
index 200a8ad..0000000
--- a/org.eclipse.virgo.apps.admin.core/src/test/java/org/eclipse/virgo/apps/admin/core/stubs/StubDumpManagerService.java
+++ /dev/null
@@ -1,50 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2008, 2010 VMware Inc.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- * VMware Inc. - initial contribution
- *******************************************************************************/
-
-package org.eclipse.virgo.apps.admin.core.stubs;
-
-import java.io.File;
-import java.util.ArrayList;
-import java.util.List;
-
-import org.eclipse.virgo.apps.admin.core.DumpInspectorService;
-
-
-/**
- */
-public class StubDumpManagerService implements DumpInspectorService{
-
- /**
- * {@inheritDoc}
- */
- public List<File> findAvaliableDumps() {
- List<File> dumps = new ArrayList<File>();
- dumps.add(new File("foo"));
- return dumps;
- }
-
- /**
- * {@inheritDoc}
- */
- public List<String> getDumpEntries(String dumpID) {
- List<String> entries = new ArrayList<String>();
- entries.add("bar");
- return entries;
- }
-
- /**
- * {@inheritDoc}
- */
- public String getDumpEntry(String dumpID, String entryName) {
- return "baz";
- }
-
-}
diff --git a/org.eclipse.virgo.apps.admin.core/src/test/java/org/eclipse/virgo/apps/admin/core/stubs/StubDumpPathLocator.java b/org.eclipse.virgo.apps.admin.core/src/test/java/org/eclipse/virgo/apps/admin/core/stubs/StubDumpPathLocator.java
deleted file mode 100644
index a42727c..0000000
--- a/org.eclipse.virgo.apps.admin.core/src/test/java/org/eclipse/virgo/apps/admin/core/stubs/StubDumpPathLocator.java
+++ /dev/null
@@ -1,70 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2008, 2010 VMware Inc.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- * VMware Inc. - initial contribution
- *******************************************************************************/
-
-package org.eclipse.virgo.apps.admin.core.stubs;
-
-import java.io.File;
-
-import org.eclipse.virgo.apps.admin.core.dump.DumpPathLocator;
-
-
-
-/**
- */
-final public class StubDumpPathLocator implements DumpPathLocator{
-
- private final static String FILE_SEPARATOR = System.getProperty("file.separator");
-
- /**
- * {@inheritDoc}
- */
- public File getDumpDirectory(){
- String path = this.getDumpConfigValue();
- if(path != null){
- File dumpDir = new File(path);
- if(dumpDir.exists() && dumpDir.isDirectory()){
- return dumpDir;
- }
- }
- return null;
- }
-
- /**
- * {@inheritDoc}
- */
- public File getDumpFolder(String folderName){
- String path = String.format("%s%s%s", this.getDumpConfigValue(), FILE_SEPARATOR, folderName);
- File dumpDir = new File(path);
- if(dumpDir.exists() && dumpDir.isDirectory()){
- return dumpDir;
- }else{
- return null;
- }
- }
-
- /**
- * {@inheritDoc}
- */
- public File getDumpEntryFile(String folderName, String fileName){
- String path = String.format("%s%s%s%s%s", this.getDumpConfigValue(), FILE_SEPARATOR, folderName, FILE_SEPARATOR, fileName);
- File dumpEntry = new File(path);
- if(dumpEntry.exists() && dumpEntry.isFile()){
- return dumpEntry;
- }else{
- return null;
- }
- }
-
- private String getDumpConfigValue(){
- return String.format("serviceability%sdumps", FILE_SEPARATOR);
- }
-
-}
diff --git a/org.eclipse.virgo.apps.admin.core/src/test/java/org/eclipse/virgo/apps/admin/core/stubs/StubExportedPackageHolder.java b/org.eclipse.virgo.apps.admin.core/src/test/java/org/eclipse/virgo/apps/admin/core/stubs/StubExportedPackageHolder.java
deleted file mode 100644
index 96eaa9e..0000000
--- a/org.eclipse.virgo.apps.admin.core/src/test/java/org/eclipse/virgo/apps/admin/core/stubs/StubExportedPackageHolder.java
+++ /dev/null
@@ -1,76 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2008, 2010 VMware Inc.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- * VMware Inc. - initial contribution
- *******************************************************************************/
-
-package org.eclipse.virgo.apps.admin.core.stubs;
-
-import java.util.ArrayList;
-import java.util.HashMap;
-import java.util.List;
-import java.util.Map;
-
-import org.eclipse.virgo.apps.admin.core.BundleHolder;
-import org.eclipse.virgo.apps.admin.core.ExportedPackageHolder;
-import org.eclipse.virgo.apps.admin.core.ImportedPackageHolder;
-
-
-/**
- */
-public final class StubExportedPackageHolder implements ExportedPackageHolder {
-
- private final String packageName;
-
- public StubExportedPackageHolder(String packageName) {
- this.packageName = packageName;
- }
-
- /**
- * {@inheritDoc}
- */
- public String getPackageName() {
- return this.packageName;
- }
-
- /**
- * {@inheritDoc}
- */
- public String getVersion() {
- return null;
- }
-
- /**
- * {@inheritDoc}
- */
- public BundleHolder getExportingBundle() {
- return null;
- }
-
- /**
- * {@inheritDoc}
- */
- public List<ImportedPackageHolder> getConsumers() {
- return new ArrayList<ImportedPackageHolder>();
- }
-
- /**
- * {@inheritDoc}
- */
- public Map<String, String> getAttributes() {
- return new HashMap<String, String>();
- }
-
- /**
- * {@inheritDoc}
- */
- public Map<String, String> getDirectives() {
- return new HashMap<String, String>();
- }
-
-}
diff --git a/org.eclipse.virgo.apps.admin.core/src/test/java/org/eclipse/virgo/apps/admin/core/stubs/StubImportedPackageHolder.java b/org.eclipse.virgo.apps.admin.core/src/test/java/org/eclipse/virgo/apps/admin/core/stubs/StubImportedPackageHolder.java
deleted file mode 100644
index 2aa65e9..0000000
--- a/org.eclipse.virgo.apps.admin.core/src/test/java/org/eclipse/virgo/apps/admin/core/stubs/StubImportedPackageHolder.java
+++ /dev/null
@@ -1,82 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2008, 2010 VMware Inc.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- * VMware Inc. - initial contribution
- *******************************************************************************/
-
-package org.eclipse.virgo.apps.admin.core.stubs;
-
-import java.util.HashMap;
-import java.util.Map;
-
-import org.eclipse.virgo.apps.admin.core.BundleHolder;
-import org.eclipse.virgo.apps.admin.core.ExportedPackageHolder;
-import org.eclipse.virgo.apps.admin.core.ImportedPackageHolder;
-
-
-
-/**
- */
-public final class StubImportedPackageHolder implements ImportedPackageHolder {
-
- private final String packageName;
-
- public StubImportedPackageHolder(String packageName) {
- this.packageName = packageName;
- }
-
- /**
- * {@inheritDoc}
- */
- public String getPackageName() {
- return this.packageName;
- }
-
- /**
- * {@inheritDoc}
- */
- public String getVersionConstraint() {
- return null;
- }
-
- /**
- * {@inheritDoc}
- */
- public boolean isResolved() {
- return false;
- }
-
- /**
- * {@inheritDoc}
- */
- public ExportedPackageHolder getProvider() {
- return null;
- }
-
- /**
- * {@inheritDoc}
- */
- public BundleHolder getImportingBundle() {
- return null;
- }
-
- /**
- * {@inheritDoc}
- */
- public Map<String, String> getAttributes() {
- return new HashMap<String, String>();
- }
-
- /**
- * {@inheritDoc}
- */
- public Map<String, String> getDirectives() {
- return new HashMap<String, String>();
- }
-
-}
diff --git a/org.eclipse.virgo.apps.admin.core/src/test/java/org/eclipse/virgo/apps/admin/core/stubs/StubModuleContextAccessor.java b/org.eclipse.virgo.apps.admin.core/src/test/java/org/eclipse/virgo/apps/admin/core/stubs/StubModuleContextAccessor.java
deleted file mode 100644
index a79c1b9..0000000
--- a/org.eclipse.virgo.apps.admin.core/src/test/java/org/eclipse/virgo/apps/admin/core/stubs/StubModuleContextAccessor.java
+++ /dev/null
@@ -1,50 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2008, 2010 VMware Inc.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- * VMware Inc. - initial contribution
- *******************************************************************************/
-
-package org.eclipse.virgo.apps.admin.core.stubs;
-
-import org.osgi.framework.Bundle;
-
-import org.eclipse.virgo.kernel.module.Component;
-import org.eclipse.virgo.kernel.module.ModuleContext;
-import org.eclipse.virgo.kernel.module.ModuleContextAccessor;
-import org.eclipse.virgo.kernel.module.NoSuchComponentException;
-
-
-/**
- */
-public class StubModuleContextAccessor implements ModuleContextAccessor {
-
- /**
- * {@inheritDoc}
- */
- public ModuleContext getModuleContext(Bundle arg0) {
- return new ModuleContext() {
-
- public String getDisplayName() {
- return "testDisplayName";
- }
-
- public String[] getComponentNames() {
- return new String[0];
- }
-
- public Component getComponent(String arg0) throws NoSuchComponentException {
- throw new NoSuchComponentException("fail");
- }
-
- public Object getApplicationContext() {
- return new Object();
- }
- };
- }
-
-}
diff --git a/org.eclipse.virgo.apps.admin.core/src/test/java/org/eclipse/virgo/apps/admin/core/stubs/StubQuasiFramework.java b/org.eclipse.virgo.apps.admin.core/src/test/java/org/eclipse/virgo/apps/admin/core/stubs/StubQuasiFramework.java
deleted file mode 100644
index 67a9039..0000000
--- a/org.eclipse.virgo.apps.admin.core/src/test/java/org/eclipse/virgo/apps/admin/core/stubs/StubQuasiFramework.java
+++ /dev/null
@@ -1,106 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2008, 2010 VMware Inc.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- * VMware Inc. - initial contribution
- *******************************************************************************/
-
-package org.eclipse.virgo.apps.admin.core.stubs;
-
-import java.net.URI;
-import java.util.ArrayList;
-import java.util.List;
-
-import org.osgi.framework.BundleException;
-import org.osgi.framework.Version;
-
-import org.eclipse.virgo.kernel.osgi.quasi.QuasiBundle;
-import org.eclipse.virgo.kernel.osgi.quasi.QuasiFramework;
-import org.eclipse.virgo.kernel.osgi.quasi.QuasiResolutionFailure;
-import org.eclipse.virgo.util.osgi.manifest.BundleManifest;
-
-/**
- */
-final class StubQuasiFramework implements QuasiFramework {
-
- public static final String TEST_PACKAGE_SEARCH = "com.foo.bar";
-
- public static final String TEST_INSTALL_LOCATION = "src/test/resources";
-
- public static final long EXISTING_ID = 4;
-
- public static final String EXISTING_NAME = "bundleName";
-
- public static final Version EXISTING_VERSION = new Version("2.0");
-
- /**
- * {@inheritDoc}
- */
- public void commit() throws BundleException {
- }
-
- /**
- * {@inheritDoc}
- */
- public List<QuasiResolutionFailure> diagnose(long bundleId) {
- return null;
- }
-
- /**
- * {@inheritDoc}
- */
- public QuasiBundle getBundle(long bundleId) {
- if(bundleId == EXISTING_ID){
- return new StubQuasiLiveBundle(EXISTING_ID, null);
- }
- return null;
- }
-
- /**
- * {@inheritDoc}
- */
- public QuasiBundle getBundle(String name, Version version) {
- if(EXISTING_NAME.equals(name) && EXISTING_VERSION.equals(version)) {
- return new StubQuasiLiveBundle(EXISTING_ID, null);
- }
- return null;
- }
-
- /**
- * {@inheritDoc}
- */
- public List<QuasiBundle> getBundles() {
- ArrayList<QuasiBundle> arrayList = new ArrayList<QuasiBundle>();
- arrayList.add(new StubQuasiLiveBundle(EXISTING_ID, null));
- return arrayList;
- }
-
- /**
- * {@inheritDoc}
- */
- public QuasiBundle install(URI location, BundleManifest bundleManifest) throws BundleException {
- if(TEST_INSTALL_LOCATION.equals(location)) {
- return new StubQuasiLiveBundle(EXISTING_ID, null);
- }
- return null;
- }
-
- /**
- * {@inheritDoc}
- */
- public List<QuasiResolutionFailure> resolve() {
- return new ArrayList<QuasiResolutionFailure>();
- }
-
- /**
- * {@inheritDoc}
- */
- @Override
- public void destroy() {
- }
-
-}
diff --git a/org.eclipse.virgo.apps.admin.core/src/test/java/org/eclipse/virgo/apps/admin/core/stubs/StubQuasiFrameworkFactory.java b/org.eclipse.virgo.apps.admin.core/src/test/java/org/eclipse/virgo/apps/admin/core/stubs/StubQuasiFrameworkFactory.java
deleted file mode 100644
index faf6929..0000000
--- a/org.eclipse.virgo.apps.admin.core/src/test/java/org/eclipse/virgo/apps/admin/core/stubs/StubQuasiFrameworkFactory.java
+++ /dev/null
@@ -1,38 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2008, 2010 VMware Inc.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- * VMware Inc. - initial contribution
- *******************************************************************************/
-
-package org.eclipse.virgo.apps.admin.core.stubs;
-
-import java.io.File;
-
-import org.eclipse.virgo.kernel.osgi.quasi.QuasiFramework;
-import org.eclipse.virgo.kernel.osgi.quasi.QuasiFrameworkFactory;
-
-
-/**
- */
-public final class StubQuasiFrameworkFactory implements QuasiFrameworkFactory {
-
- /**
- * {@inheritDoc}
- */
- public QuasiFramework create() {
- return new StubQuasiFramework();
- }
-
- /**
- * {@inheritDoc}
- */
- public QuasiFramework create(File stateDump) {
- return new StubQuasiFramework();
- }
-
-}
diff --git a/org.eclipse.virgo.apps.admin.core/src/test/java/org/eclipse/virgo/apps/admin/core/stubs/StubQuasiLiveBundle.java b/org.eclipse.virgo.apps.admin.core/src/test/java/org/eclipse/virgo/apps/admin/core/stubs/StubQuasiLiveBundle.java
deleted file mode 100644
index c26ce12..0000000
--- a/org.eclipse.virgo.apps.admin.core/src/test/java/org/eclipse/virgo/apps/admin/core/stubs/StubQuasiLiveBundle.java
+++ /dev/null
@@ -1,118 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2008, 2010 VMware Inc.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- * VMware Inc. - initial contribution
- *******************************************************************************/
-
-package org.eclipse.virgo.apps.admin.core.stubs;
-
-import java.io.File;
-import java.util.ArrayList;
-import java.util.List;
-
-import org.eclipse.virgo.kernel.artifact.plan.PlanDescriptor.Provisioning;
-import org.eclipse.virgo.kernel.osgi.quasi.QuasiBundle;
-import org.eclipse.virgo.kernel.osgi.quasi.QuasiExportPackage;
-import org.eclipse.virgo.kernel.osgi.quasi.QuasiImportPackage;
-import org.eclipse.virgo.kernel.osgi.quasi.QuasiRequiredBundle;
-import org.eclipse.virgo.kernel.shell.state.QuasiLiveBundle;
-import org.eclipse.virgo.kernel.shell.state.QuasiLiveService;
-import org.osgi.framework.Bundle;
-import org.osgi.framework.Version;
-
-public class StubQuasiLiveBundle implements QuasiLiveBundle {
-
- public static final String TEST_NAME = "fake.test.bundle";
-
- public static final Version TEST_VERSION = new Version("1.2.3.test");
-
- private final Bundle bundle;
-
- private final long id;
-
- private volatile Provisioning provisioning = Provisioning.AUTO;
-
- public StubQuasiLiveBundle(long id, Bundle bundle) {
- this.bundle = bundle;
- this.id = id;
- }
-
- public Bundle getBundle() {
- return this.bundle;
- }
-
- public long getBundleId() {
- return this.id;
- }
-
- public List<QuasiBundle> getDependents() {
- return new ArrayList<QuasiBundle>();
- }
-
- public List<QuasiExportPackage> getExportPackages() {
- return new ArrayList<QuasiExportPackage>();
- }
-
- public List<QuasiBundle> getFragments() {
- return new ArrayList<QuasiBundle>();
- }
-
- public List<QuasiBundle> getHosts() {
- return new ArrayList<QuasiBundle>();
- }
-
- public List<QuasiImportPackage> getImportPackages() {
- return new ArrayList<QuasiImportPackage>();
- }
-
- public List<QuasiRequiredBundle> getRequiredBundles() {
- return new ArrayList<QuasiRequiredBundle>();
- }
-
- public String getSymbolicName() {
- return TEST_NAME;
- }
-
- public Version getVersion() {
- return TEST_VERSION;
- }
-
- public boolean isResolved() {
- return false;
- }
-
- public void uninstall() {
- }
-
- public List<QuasiLiveService> getExportedServices() {
- return new ArrayList<QuasiLiveService>();
- }
-
- public List<QuasiLiveService> getImportedServices() {
- return new ArrayList<QuasiLiveService>();
- }
-
- public String getState() {
- return "Not A State";
- }
-
- public File getBundleFile() {
- return null;
- }
-
- @Override
- public void setProvisioning(Provisioning provisioning) {
- this.provisioning = provisioning;
- }
-
- @Override
- public Provisioning getProvisioning() {
- return this.provisioning;
- }
-
-}
diff --git a/org.eclipse.virgo.apps.admin.core/src/test/java/org/eclipse/virgo/apps/admin/core/stubs/StubQuasiLiveService.java b/org.eclipse.virgo.apps.admin.core/src/test/java/org/eclipse/virgo/apps/admin/core/stubs/StubQuasiLiveService.java
deleted file mode 100644
index 6498b5c..0000000
--- a/org.eclipse.virgo.apps.admin.core/src/test/java/org/eclipse/virgo/apps/admin/core/stubs/StubQuasiLiveService.java
+++ /dev/null
@@ -1,62 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2008, 2010 VMware Inc.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- * VMware Inc. - initial contribution
- *******************************************************************************/
-
-package org.eclipse.virgo.apps.admin.core.stubs;
-
-import java.util.ArrayList;
-import java.util.HashMap;
-import java.util.List;
-import java.util.Map;
-
-import org.eclipse.virgo.kernel.shell.state.QuasiLiveBundle;
-import org.eclipse.virgo.kernel.shell.state.QuasiLiveService;
-
-/**
- */
-final public class StubQuasiLiveService implements QuasiLiveService {
-
- private long serviceId;
-
- private QuasiLiveBundle provider;
-
- public StubQuasiLiveService(long serviceId, QuasiLiveBundle provider) {
- this.serviceId = serviceId;
- this.provider = provider;
- }
-
- public List<QuasiLiveBundle> getConsumers() {
- return new ArrayList<QuasiLiveBundle>();
- }
-
- public Map<String, String> getPropertyMap() {
- return new HashMap<String, String>();
- }
-
- public QuasiLiveBundle getProvider() {
- return provider;
- }
-
- public long getServiceId() {
- return this.serviceId;
- }
-
- public int compareTo(QuasiLiveService o) {
- return 0;
- }
-
- /**
- * {@inheritDoc}
- */
- public Map<String, Object> getProperties() {
- return new HashMap<String, Object>();
- }
-
-}
diff --git a/org.eclipse.virgo.apps.admin.core/src/test/java/org/eclipse/virgo/apps/admin/core/stubs/StubQuasiPackages.java b/org.eclipse.virgo.apps.admin.core/src/test/java/org/eclipse/virgo/apps/admin/core/stubs/StubQuasiPackages.java
deleted file mode 100644
index 53027d9..0000000
--- a/org.eclipse.virgo.apps.admin.core/src/test/java/org/eclipse/virgo/apps/admin/core/stubs/StubQuasiPackages.java
+++ /dev/null
@@ -1,53 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2008, 2010 VMware Inc.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- * VMware Inc. - initial contribution
- *******************************************************************************/
-
-package org.eclipse.virgo.apps.admin.core.stubs;
-
-import java.util.ArrayList;
-import java.util.List;
-
-import org.eclipse.virgo.kernel.osgi.quasi.QuasiExportPackage;
-import org.eclipse.virgo.kernel.osgi.quasi.QuasiImportPackage;
-import org.eclipse.virgo.kernel.shell.state.QuasiPackage;
-
-
-/**
- */
-public class StubQuasiPackages implements QuasiPackage {
-
- private String packageName;
-
- public StubQuasiPackages(String packageName) {
- this.packageName = packageName;
- }
-
- /**
- * {@inheritDoc}
- */
- public List<QuasiExportPackage> getExporters() {
- return new ArrayList<QuasiExportPackage>();
- }
-
- /**
- * {@inheritDoc}
- */
- public List<QuasiImportPackage> getImporters() {
- return new ArrayList<QuasiImportPackage>();
- }
-
- /**
- * {@inheritDoc}
- */
- public String getPackageName() {
- return this.packageName;
- }
-
-}
diff --git a/org.eclipse.virgo.apps.admin.core/src/test/java/org/eclipse/virgo/apps/admin/core/stubs/StubQuasiRequiredBundle.java b/org.eclipse.virgo.apps.admin.core/src/test/java/org/eclipse/virgo/apps/admin/core/stubs/StubQuasiRequiredBundle.java
deleted file mode 100644
index 0e29e4d..0000000
--- a/org.eclipse.virgo.apps.admin.core/src/test/java/org/eclipse/virgo/apps/admin/core/stubs/StubQuasiRequiredBundle.java
+++ /dev/null
@@ -1,86 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2008, 2010 VMware Inc.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- * VMware Inc. - initial contribution
- *******************************************************************************/
-
-package org.eclipse.virgo.apps.admin.core.stubs;
-
-import java.util.HashMap;
-import java.util.Map;
-
-import org.eclipse.virgo.kernel.osgi.quasi.QuasiBundle;
-import org.eclipse.virgo.kernel.osgi.quasi.QuasiRequiredBundle;
-import org.eclipse.virgo.util.osgi.manifest.VersionRange;
-
-/**
- */
-public class StubQuasiRequiredBundle implements QuasiRequiredBundle {
-
- private final long requirer;
-
- private final long provider;
-
- private final String bundleName;
-
- public StubQuasiRequiredBundle(String bundleName, long provider, long requirer) {
- this.bundleName = bundleName;
- this.provider = provider;
- this.requirer = requirer;
- }
-
- /**
- * {@inheritDoc}
- */
- public QuasiBundle getProvider() {
- return new StubQuasiLiveBundle(this.provider, null);
- }
-
- /**
- * {@inheritDoc}
- */
- public String getRequiredBundleName() {
- return this.bundleName;
- }
-
- /**
- * {@inheritDoc}
- */
- public QuasiBundle getRequiringBundle() {
- return new StubQuasiLiveBundle(this.requirer, null);
- }
-
- /**
- * {@inheritDoc}
- */
- public VersionRange getVersionConstraint() {
- return VersionRange.NATURAL_NUMBER_RANGE;
- }
-
- /**
- * {@inheritDoc}
- */
- public boolean isResolved() {
- return false;
- }
-
- /**
- * {@inheritDoc}
- */
- public Map<String, Object> getAttributes() {
- return new HashMap<String, Object>();
- }
-
- /**
- * {@inheritDoc}
- */
- public Map<String, Object> getDirectives() {
- return new HashMap<String, Object>();
- }
-
-}
diff --git a/org.eclipse.virgo.apps.admin.core/src/test/java/org/eclipse/virgo/apps/admin/core/stubs/StubQuasiResolutionFaliure.java b/org.eclipse.virgo.apps.admin.core/src/test/java/org/eclipse/virgo/apps/admin/core/stubs/StubQuasiResolutionFaliure.java
deleted file mode 100644
index 8f3bb51..0000000
--- a/org.eclipse.virgo.apps.admin.core/src/test/java/org/eclipse/virgo/apps/admin/core/stubs/StubQuasiResolutionFaliure.java
+++ /dev/null
@@ -1,44 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2008, 2010 VMware Inc.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- * VMware Inc. - initial contribution
- *******************************************************************************/
-
-package org.eclipse.virgo.apps.admin.core.stubs;
-
-import org.eclipse.virgo.kernel.osgi.quasi.QuasiBundle;
-import org.eclipse.virgo.kernel.osgi.quasi.QuasiResolutionFailure;
-
-
-/**
- */
-public class StubQuasiResolutionFaliure implements QuasiResolutionFailure {
-
- private final String description;
- private final long id;
-
- public StubQuasiResolutionFaliure(String description, long id) {
- this.description = description;
- this.id = id;
- }
-
- /**
- * {@inheritDoc}
- */
- public String getDescription() {
- return this.description;
- }
-
- /**
- * {@inheritDoc}
- */
- public QuasiBundle getUnresolvedQuasiBundle() {
- return new StubQuasiLiveBundle(this.id, null);
- }
-
-}
diff --git a/org.eclipse.virgo.apps.admin.core/src/test/java/org/eclipse/virgo/apps/admin/core/stubs/StubStateService.java b/org.eclipse.virgo.apps.admin.core/src/test/java/org/eclipse/virgo/apps/admin/core/stubs/StubStateService.java
deleted file mode 100644
index 93dcadf..0000000
--- a/org.eclipse.virgo.apps.admin.core/src/test/java/org/eclipse/virgo/apps/admin/core/stubs/StubStateService.java
+++ /dev/null
@@ -1,139 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2008, 2010 VMware Inc.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- * VMware Inc. - initial contribution
- *******************************************************************************/
-
-package org.eclipse.virgo.apps.admin.core.stubs;
-
-import static org.junit.Assert.assertNotNull;
-import static org.junit.Assert.assertNull;
-
-import java.io.File;
-import java.util.ArrayList;
-import java.util.List;
-
-import org.eclipse.virgo.kernel.osgi.quasi.QuasiBundle;
-import org.eclipse.virgo.kernel.osgi.quasi.QuasiResolutionFailure;
-import org.eclipse.virgo.kernel.shell.state.QuasiLiveService;
-import org.eclipse.virgo.kernel.shell.state.QuasiPackage;
-import org.eclipse.virgo.kernel.shell.state.StateService;
-
-/**
- */
-final public class StubStateService implements StateService {
-
- public static final String TEST_PACKAGE_SEARCH = "com.foo.bar";
-
- public static final String TEST_REGION_NAME = "myRegion";
-
- public static final String TEST_INSTALL_LOCATION = "src/test/resources";
-
- private static final long EXISTING_ID = 4;
-
- private boolean expectNull;
-
- public void setNullExpectations(){
- this.expectNull = true;
- }
-
- public void setNotNullExpectations(){
- this.expectNull = false;
- }
-
- /**
- * {@inheritDoc}
- */
- @Override
- public List<QuasiBundle> getAllBundles(File source) {
- this.checkNull(source);
- ArrayList<QuasiBundle> arrayList = new ArrayList<QuasiBundle>();
- arrayList.add(new StubQuasiLiveBundle(EXISTING_ID, null));
- return arrayList;
- }
-
- /**
- * {@inheritDoc}
- */
- @Override
- public QuasiBundle getBundle(File source, long bundleId){
- this.checkNull(source);
- if(bundleId == EXISTING_ID){
- return new StubQuasiLiveBundle(EXISTING_ID, null);
- }
- return null;
- }
-
- @Override
- public String getBundleRegionName(long bundleId) {
- if(bundleId == EXISTING_ID){
- return TEST_REGION_NAME;
- }
- return null;
- }
-
- /**
- * {@inheritDoc}
- */
- @Override
- public List<QuasiLiveService> getAllServices(File source) {
- this.checkNull(source);
- return new ArrayList<QuasiLiveService>();
- }
-
- /**
- * {@inheritDoc}
- */
- @Override
- public QuasiPackage getPackages(File source, String packageName) {
- this.checkNull(source);
- if(packageName.equals(TEST_PACKAGE_SEARCH)) {
- return new StubQuasiPackages(TEST_PACKAGE_SEARCH);
- }
- return null;
- }
-
- /**
- * {@inheritDoc}
- */
- @Override
- public QuasiLiveService getService(File source, long serviceId) {
- this.checkNull(source);
- if(serviceId == EXISTING_ID){
- return new StubQuasiLiveService(serviceId, new StubQuasiLiveBundle(EXISTING_ID, null));
- }
- return null;
- }
-
- /**
- * {@inheritDoc}
- */
- @Override
- public List<QuasiBundle> search(File source, String term) {
- this.checkNull(source);
- return new ArrayList<QuasiBundle>();
- }
-
- /**
- * {@inheritDoc}
- */
- @Override
- public List<QuasiResolutionFailure> getResolverReport(File source, long bundleId) {
- this.checkNull(source);
- return new ArrayList<QuasiResolutionFailure>();
- }
-
- private void checkNull(File source){
- if(this.expectNull){
- assertNull(source);
- } else {
- assertNotNull(source);
- }
- }
-
-}
diff --git a/org.eclipse.virgo.apps.admin.core/src/test/java/org/eclipse/virgo/apps/admin/core/stubs/StubWorkArea.java b/org.eclipse.virgo.apps.admin.core/src/test/java/org/eclipse/virgo/apps/admin/core/stubs/StubWorkArea.java
deleted file mode 100644
index 97a5940..0000000
--- a/org.eclipse.virgo.apps.admin.core/src/test/java/org/eclipse/virgo/apps/admin/core/stubs/StubWorkArea.java
+++ /dev/null
@@ -1,38 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2008, 2010 VMware Inc.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- * VMware Inc. - initial contribution
- *******************************************************************************/
-
-package org.eclipse.virgo.apps.admin.core.stubs;
-
-import org.osgi.framework.Bundle;
-
-import org.eclipse.virgo.kernel.services.work.WorkArea;
-import org.eclipse.virgo.util.io.PathReference;
-
-
-/**
- */
-public class StubWorkArea implements WorkArea {
-
- /**
- * {@inheritDoc}
- */
- public Bundle getOwner() {
- return null;
- }
-
- /**
- * {@inheritDoc}
- */
- public PathReference getWorkDirectory() {
- return new PathReference("target");
- }
-
-}
diff --git a/org.eclipse.virgo.apps.admin.core/template.mf b/org.eclipse.virgo.apps.admin.core/template.mf
deleted file mode 100644
index 78ff483..0000000
--- a/org.eclipse.virgo.apps.admin.core/template.mf
+++ /dev/null
@@ -1,17 +0,0 @@
-Manifest-Version: 1.0
-Bundle-Name: Admin Console Core Bundle
-Bundle-ManifestVersion: 2
-Bundle-SymbolicName: org.eclipse.virgo.apps.admin.core
-Bundle-Version: ${version}
-Import-Template:
- javax.management.*;version="0",
- org.eclipse.virgo.kernel.*;version="${org.eclipse.virgo.kernel:[=.=, +1)}",
- org.eclipse.virgo.util.*;version="${org.eclipse.virgo.util:[=.=, +1)}",
- org.springframework.*;version="${org.springframework:[2.5.6, +1)}",
- org.slf4j;version="${org.slf4j:[=.=.=, +1)}",
- org.osgi.framework.*;version="0",
- org.osgi.service.cm.*;version="0"
-Excluded-Exports:
- org.eclipse.virgo.apps.admin.core.artifact.*,
- org.eclipse.virgo.apps.admin.core.dump.*,
- org.eclipse.virgo.apps.admin.core.state.*
diff --git a/org.eclipse.virgo.apps.admin.web/.classpath b/org.eclipse.virgo.apps.admin.web/.classpath
deleted file mode 100644
index 653187f..0000000
--- a/org.eclipse.virgo.apps.admin.web/.classpath
+++ /dev/null
@@ -1,47 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<classpath>
- <classpathentry kind="src" path="src/main/java">
- <attributes>
- <attribute name="com.springsource.server.ide.jdt.core.test.classpathentry" value="false"/>
- </attributes>
- </classpathentry>
- <classpathentry excluding="*.js" kind="src" output="target/test-classes" path="src/test/js"/>
- <classpathentry kind="src" path="src/main/resources">
- <attributes>
- <attribute name="com.springsource.server.ide.jdt.core.test.classpathentry" value="false"/>
- </attributes>
- </classpathentry>
- <classpathentry kind="src" output="target/test-classes" path="src/test/java">
- <attributes>
- <attribute name="com.springsource.server.ide.jdt.core.test.classpathentry" value="true"/>
- </attributes>
- </classpathentry>
- <classpathentry kind="src" output="target/test-classes" path="src/test/resources">
- <attributes>
- <attribute name="com.springsource.server.ide.jdt.core.test.classpathentry" value="true"/>
- </attributes>
- </classpathentry>
- <classpathentry kind="var" path="APPS_IVY_CACHE/org.junit/com.springsource.org.junit/4.7.0/com.springsource.org.junit-4.7.0.jar" sourcepath="/APPS_IVY_CACHE/org.junit/com.springsource.org.junit/4.7.0/com.springsource.org.junit-sources-4.7.0.jar"/>
- <classpathentry kind="var" path="APPS_IVY_CACHE/org.springframework/org.springframework.web/3.0.5.RELEASE/org.springframework.web-3.0.5.RELEASE.jar" sourcepath="/APPS_IVY_CACHE/org.springframework/org.springframework.web/3.0.5.RELEASE/org.springframework.web-sources-3.0.5.RELEASE.jar"/>
- <classpathentry kind="var" path="APPS_IVY_CACHE/org.springframework/org.springframework.beans/3.0.5.RELEASE/org.springframework.beans-3.0.5.RELEASE.jar"/>
- <classpathentry kind="var" path="APPS_IVY_CACHE/org.springframework/org.springframework.web.servlet/3.0.5.RELEASE/org.springframework.web.servlet-3.0.5.RELEASE.jar" sourcepath="/APPS_IVY_CACHE/org.springframework/org.springframework.web.servlet/3.0.5.RELEASE/org.springframework.web.servlet-sources-3.0.5.RELEASE.jar"/>
- <classpathentry kind="var" path="APPS_IVY_CACHE/javax.servlet/javax.servlet/3.0.0.v201103241009/javax.servlet-3.0.0.v201103241009.jar" sourcepath="/APPS_IVY_CACHE/javax.servlet/javax.servlet/3.0.0.v201103241009/javax.servlet-sources-3.0.0.v201103241009.jar"/>
- <classpathentry kind="var" path="APPS_IVY_CACHE/org.springframework/org.springframework.context/3.0.5.RELEASE/org.springframework.context-3.0.5.RELEASE.jar" sourcepath="/APPS_IVY_CACHE/org.springframework/org.springframework.context/3.0.5.RELEASE/org.springframework.context-sources-3.0.5.RELEASE.jar"/>
- <classpathentry kind="var" path="APPS_IVY_CACHE/javax.servlet/javax.servlet.jsp/2.2.0.v201103241009/javax.servlet.jsp-2.2.0.v201103241009.jar"/>
- <classpathentry kind="var" path="APPS_IVY_CACHE/org.springframework/org.springframework.test/3.0.5.RELEASE/org.springframework.test-3.0.5.RELEASE.jar" sourcepath="/APPS_IVY_CACHE/org.springframework/org.springframework.test/3.0.5.RELEASE/org.springframework.test-sources-3.0.5.RELEASE.jar"/>
- <classpathentry kind="var" path="APPS_IVY_CACHE/javax.servlet/com.springsource.javax.servlet.jsp.jstl/1.2.0.v20110728/com.springsource.javax.servlet.jsp.jstl-1.2.0.v20110728.jar"/>
- <classpathentry kind="var" path="APPS_IVY_CACHE/org.springframework/org.springframework.core/3.0.5.RELEASE/org.springframework.core-3.0.5.RELEASE.jar" sourcepath="/APPS_IVY_CACHE/org.springframework/org.springframework.core/3.0.5.RELEASE/org.springframework.core-sources-3.0.5.RELEASE.jar"/>
- <classpathentry kind="var" path="APPS_IVY_CACHE/org.apache.taglibs/com.springsource.org.apache.taglibs.standard/1.1.2.v20110517/com.springsource.org.apache.taglibs.standard-1.1.2.v20110517.jar"/>
- <classpathentry kind="var" path="APPS_IVY_CACHE/org.eclipse.osgi/org.eclipse.osgi/3.7.1.R37x_v20110808-1106/org.eclipse.osgi-3.7.1.R37x_v20110808-1106.jar" sourcepath="/APPS_IVY_CACHE/org.eclipse.osgi/org.eclipse.osgi/3.7.1.R37x_v20110808-1106/org.eclipse.osgi-sources-3.7.1.R37x_v20110808-1106.jar"/>
- <classpathentry kind="var" path="APPS_IVY_CACHE/org.eclipse.osgi/org.eclipse.osgi.services/3.3.0.v20110513/org.eclipse.osgi.services-3.3.0.v20110513.jar" sourcepath="/APPS_IVY_CACHE/org.apache.felix/org.apache.felix.configadmin/1.2.4/org.apache.felix.configadmin-sources-1.2.4.jar"/>
- <classpathentry kind="var" path="APPS_IVY_CACHE/org.eclipse.virgo.teststubs/org.eclipse.virgo.teststubs.osgi/3.5.0.D-20120403105015/org.eclipse.virgo.teststubs.osgi-3.5.0.D-20120403105015.jar" sourcepath="/APPS_IVY_CACHE/org.eclipse.virgo.test/org.eclipse.virgo.teststubs.osgi/3.5.0.D-20120403105015/org.eclipse.virgo.teststubs.osgi-sources-3.5.0.D-20120403105015.jar"/>
- <classpathentry kind="var" path="APPS_IVY_CACHE/org.slf4j/com.springsource.slf4j.api/1.6.1/com.springsource.slf4j.api-1.6.1.jar"/>
- <classpathentry kind="var" path="APPS_IVY_CACHE/org.slf4j/com.springsource.slf4j.nop/1.6.1/com.springsource.slf4j.nop-1.6.1.jar"/>
- <classpathentry kind="var" path="APPS_IVY_CACHE/org.eclipse.virgo.medic/org.eclipse.virgo.medic/3.5.0.D-20120403105200/org.eclipse.virgo.medic-3.5.0.D-20120403105200.jar" sourcepath="/APPS_IVY_CACHE/org.eclipse.virgo.medic/org.eclipse.virgo.medic/3.1.0.M01/org.eclipse.virgo.medic-sources-3.1.0.M01.jar"/>
- <classpathentry kind="var" path="APPS_IVY_CACHE/org.apache.commons/com.springsource.org.apache.commons.logging/1.1.1/com.springsource.org.apache.commons.logging-1.1.1.jar"/>
- <classpathentry kind="var" path="APPS_IVY_CACHE/org.eclipse.virgo.kernel/org.eclipse.virgo.kernel.deployer/3.5.0.D-20120403111529/org.eclipse.virgo.kernel.deployer-3.5.0.D-20120403111529.jar" sourcepath="/APPS_IVY_CACHE/org.eclipse.virgo.kernel/org.eclipse.virgo.kernel.deployer/3.5.0.D-20120403111529/org.eclipse.virgo.kernel.deployer-sources-3.5.0.D-20120403111529.jar"/>
- <classpathentry kind="var" path="APPS_IVY_CACHE/org.eclipse.virgo.kernel/org.eclipse.virgo.kernel.shell/3.5.0.D-20120403111529/org.eclipse.virgo.kernel.shell-3.5.0.D-20120403111529.jar" sourcepath="/APPS_IVY_CACHE/org.eclipse.virgo.kernel/org.eclipse.virgo.kernel.shell/3.5.0.D-20120403111529/org.eclipse.virgo.kernel.shell-sources-3.5.0.D-20120403111529.jar"/>
- <classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER"/>
- <classpathentry combineaccessrules="false" kind="src" path="/org.eclipse.virgo.apps.admin.core"/>
- <classpathentry kind="output" path="target/classes"/>
-</classpath>
diff --git a/org.eclipse.virgo.apps.admin.web/.project b/org.eclipse.virgo.apps.admin.web/.project
deleted file mode 100644
index a76ffcc..0000000
--- a/org.eclipse.virgo.apps.admin.web/.project
+++ /dev/null
@@ -1,48 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<projectDescription>
- <name>org.eclipse.virgo.apps.admin.web</name>
- <comment></comment>
- <projects>
- </projects>
- <buildSpec>
- <buildCommand>
- <name>org.eclipse.wst.jsdt.core.javascriptValidator</name>
- <arguments>
- </arguments>
- </buildCommand>
- <buildCommand>
- <name>org.eclipse.jdt.core.javabuilder</name>
- <arguments>
- </arguments>
- </buildCommand>
- <buildCommand>
- <name>org.eclipse.wst.common.project.facet.core.builder</name>
- <arguments>
- </arguments>
- </buildCommand>
- <buildCommand>
- <name>org.eclipse.wst.validation.validationbuilder</name>
- <arguments>
- </arguments>
- </buildCommand>
- <buildCommand>
- <name>com.springsource.server.ide.bundlor.core.builder</name>
- <arguments>
- </arguments>
- </buildCommand>
- <buildCommand>
- <name>org.springframework.ide.eclipse.core.springbuilder</name>
- <arguments>
- </arguments>
- </buildCommand>
- </buildSpec>
- <natures>
- <nature>com.springsource.server.ide.facet.core.bundlenature</nature>
- <nature>org.springframework.ide.eclipse.core.springnature</nature>
- <nature>org.eclipse.jem.workbench.JavaEMFNature</nature>
- <nature>org.eclipse.wst.common.modulecore.ModuleCoreNature</nature>
- <nature>org.eclipse.wst.common.project.facet.core.nature</nature>
- <nature>org.eclipse.jdt.core.javanature</nature>
- <nature>org.eclipse.wst.jsdt.core.jsNature</nature>
- </natures>
-</projectDescription>
diff --git a/org.eclipse.virgo.apps.admin.web/.settings/.jsdtscope b/org.eclipse.virgo.apps.admin.web/.settings/.jsdtscope
deleted file mode 100644
index 5d8de19..0000000
--- a/org.eclipse.virgo.apps.admin.web/.settings/.jsdtscope
+++ /dev/null
@@ -1,11 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<classpath>
- <classpathentry kind="con" path="org.eclipse.wst.jsdt.launching.JRE_CONTAINER"/>
- <classpathentry kind="con" path="org.eclipse.wst.jsdt.launching.WebProject">
- <attributes>
- <attribute name="hide" value="false"/>
- </attributes>
- </classpathentry>
- <classpathentry kind="con" path="org.eclipse.wst.jsdt.launching.baseBrowserLibrary"/>
- <classpathentry kind="output" path=""/>
-</classpath>
diff --git a/org.eclipse.virgo.apps.admin.web/.settings/org.eclipse.virgo.ide.bundlor.core.prefs b/org.eclipse.virgo.apps.admin.web/.settings/org.eclipse.virgo.ide.bundlor.core.prefs
deleted file mode 100644
index 4906cbe..0000000
--- a/org.eclipse.virgo.apps.admin.web/.settings/org.eclipse.virgo.ide.bundlor.core.prefs
+++ /dev/null
@@ -1,3 +0,0 @@
-#Wed Jun 10 16:13:51 BST 2009
-org.eclipse.virgo.ide.bundlor.core.template.properties.files=../build.properties;../build.versions
-eclipse.preferences.version=1
diff --git a/org.eclipse.virgo.apps.admin.web/.settings/org.eclipse.wst.common.component b/org.eclipse.virgo.apps.admin.web/.settings/org.eclipse.wst.common.component
deleted file mode 100644
index ebc4447..0000000
--- a/org.eclipse.virgo.apps.admin.web/.settings/org.eclipse.wst.common.component
+++ /dev/null
@@ -1,13 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<project-modules id="moduleCoreId" project-version="1.5.0">
-<wb-module deploy-name="com.springsource.server.admin.web">
-<wb-resource deploy-path="/" source-path="/src/main/webapp"/>
- <wb-resource deploy-path="/WEB-INF/classes" source-path="/src/main/java"/>
- <wb-resource deploy-path="/WEB-INF/classes" source-path="/src/test/js"/>
- <wb-resource deploy-path="/WEB-INF/classes" source-path="/src/main/resources"/>
- <wb-resource deploy-path="/WEB-INF/classes" source-path="/src/test/java"/>
- <wb-resource deploy-path="/WEB-INF/classes" source-path="/src/test/resources"/>
-<property name="context-root" value="admin"/>
-<property name="java-output-path" value="/target/classes"/>
-</wb-module>
-</project-modules>
diff --git a/org.eclipse.virgo.apps.admin.web/.settings/org.eclipse.wst.common.project.facet.core.xml b/org.eclipse.virgo.apps.admin.web/.settings/org.eclipse.wst.common.project.facet.core.xml
deleted file mode 100644
index 45eba1c..0000000
--- a/org.eclipse.virgo.apps.admin.web/.settings/org.eclipse.wst.common.project.facet.core.xml
+++ /dev/null
@@ -1,8 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<faceted-project>
- <fixed facet="jst.web"/>
- <fixed facet="jst.java"/>
- <installed facet="jst.web" version="2.5"/>
- <installed facet="com.springsource.server.bundle" version="1.0"/>
- <installed facet="jst.java" version="6.0"/>
-</faceted-project>
diff --git a/org.eclipse.virgo.apps.admin.web/.springBeans b/org.eclipse.virgo.apps.admin.web/.springBeans
deleted file mode 100644
index 34b281c..0000000
--- a/org.eclipse.virgo.apps.admin.web/.springBeans
+++ /dev/null
@@ -1,13 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<beansProjectDescription>
- <version>1</version>
- <pluginVersion><![CDATA[2.3.0.200912170948-RELEASE]]></pluginVersion>
- <configSuffixes>
- <configSuffix><![CDATA[xml]]></configSuffix>
- </configSuffixes>
- <enableImports><![CDATA[false]]></enableImports>
- <configs>
- </configs>
- <configSets>
- </configSets>
-</beansProjectDescription>
diff --git a/org.eclipse.virgo.apps.admin.web/build.xml b/org.eclipse.virgo.apps.admin.web/build.xml
deleted file mode 100644
index b13732f..0000000
--- a/org.eclipse.virgo.apps.admin.web/build.xml
+++ /dev/null
@@ -1,8 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<project name="org.eclipse.virgo.apps.admin.web">
-
- <property file="${basedir}/../build.properties"/>
- <property file="${basedir}/../build.versions"/>
- <import file="${basedir}/../virgo-build/wab/default.xml"/>
-
-</project>
diff --git a/org.eclipse.virgo.apps.admin.web/ivy.xml b/org.eclipse.virgo.apps.admin.web/ivy.xml
deleted file mode 100644
index 9212f8b..0000000
--- a/org.eclipse.virgo.apps.admin.web/ivy.xml
+++ /dev/null
@@ -1,54 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<?xml-stylesheet type="text/xsl" href="http://ivyrep.jayasoft.org/ivy-doc.xsl"?>
-<ivy-module
- xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
- xsi:noNamespaceSchemaLocation="http://incubator.apache.org/ivy/schemas/ivy.xsd"
- version="1.3">
-
- <info organisation="org.eclipse.virgo.apps" module="${ant.project.name}"/>
-
- <configurations>
- <include file="${virgo.build.dir}/common/default-ivy-configurations.xml"/>
- </configurations>
-
- <publications>
- <artifact name="${ant.project.name}" type="wab" ext="jar"/>
- <artifact name="${ant.project.name}-sources" type="src" ext="jar"/>
- </publications>
-
- <dependencies>
- <!-- === PROVIDED-COMPILE============================================ -->
- <dependency org="org.eclipse.virgo.nano" name="org.eclipse.virgo.deployer.api" rev="${org.eclipse.virgo.nano}" conf="provided->compile"/>
- <dependency org="org.eclipse.virgo.kernel" name="org.eclipse.virgo.kernel.shell" rev="${org.eclipse.virgo.kernel}" conf="provided->compile"/>
- <dependency org="org.eclipse.virgo.kernel" name="org.eclipse.virgo.kernel.model" rev="${org.eclipse.virgo.kernel}" conf="provided->compile"/>
- <dependency org="org.eclipse.virgo.kernel" name="org.eclipse.virgo.kernel.deployer" rev="${org.eclipse.virgo.kernel}" conf="provided->compile"/>
- <dependency org="org.eclipse.virgo.web" name="org.eclipse.virgo.web.dm" rev="${org.eclipse.virgo.web}" conf="provided->compile"/>
- <dependency org="org.eclipse.virgo.util" name="org.eclipse.virgo.util.io" rev="${org.eclipse.virgo.util}" conf="provided->compile"/>
- <dependency org="org.eclipse.virgo.apps" name="org.eclipse.virgo.apps.admin.core" rev="latest.integration" conf="provided->compile"/>
- <!-- === RUNTIME-DEFAULT =========================================== -->
- <!-- === PROVIDED-RUNTIME =========================================== -->
- <dependency org="org.eclipse.osgi" name="org.eclipse.osgi.services" rev="${org.eclipse.osgi.services}" conf="provided->runtime"/>
- <dependency org="org.eclipse.osgi" name="org.eclipse.equinox.cm" rev="${org.eclipse.equinox.cm}" conf="provided->runtime"/>
- <dependency org="javax.servlet" name="javax.servlet" rev="${javax.servlet}" conf="provided->runtime"/>
- <dependency org="javax.servlet" name="com.springsource.javax.servlet.jsp.jstl" rev="${javax.servlet.jsp.jstl}" conf="provided->runtime"/>
- <dependency org="org.apache.taglibs" name="com.springsource.org.apache.taglibs.standard" rev="${org.apache.taglibs.standard}" conf="provided->runtime"/>
- <dependency org="org.eclipse.osgi" name="org.eclipse.osgi" rev="${org.eclipse.osgi}" conf="provided->runtime"/>
- <dependency org="org.apache.commons" name="com.springsource.org.apache.commons.fileupload" rev="${org.apache.commons.fileupload}" conf="provided->runtime"/>
- <dependency org="org.apache.commons" name="com.springsource.org.apache.commons.io" rev="${org.apache.commons.io}" conf="provided->runtime"/>
- <dependency org="org.springframework" name="org.springframework.core" rev="${org.springframework}" conf="provided->runtime"/>
- <dependency org="org.springframework" name="org.springframework.context" rev="${org.springframework}" conf="provided->runtime"/>
- <dependency org="org.springframework" name="org.springframework.beans" rev="${org.springframework}" conf="provided->runtime"/>
- <dependency org="org.springframework" name="org.springframework.web" rev="${org.springframework}" conf="provided->runtime"/>
- <dependency org="org.springframework" name="org.springframework.web.servlet" rev="${org.springframework}" conf="provided->runtime"/>
- <dependency org="org.eclipse.gemini" name="org.eclipse.gemini.blueprint.core" rev="${org.eclipse.gemini.blueprint}" conf="provided->runtime"/>
- <dependency org="org.slf4j" name="com.springsource.slf4j.api" rev="${org.slf4j}" conf="provided->runtime"/>
- <!-- === TEST ====================================================== -->
- <dependency org="org.junit" name="com.springsource.org.junit" rev="${org.junit}" conf="test->runtime"/>
- <dependency org="org.springframework" name="org.springframework.test" rev="${org.springframework}" conf="test->runtime"/>
- <dependency org="org.eclipse.virgo.teststubs" name="org.eclipse.virgo.teststubs.osgi" rev="${org.eclipse.virgo.teststubs}" conf="test->runtime"/>
- <dependency org="org.slf4j" name="com.springsource.slf4j.nop" rev="${org.slf4j}" conf="test->runtime"/>
-
- <override org="org.springframework" rev="${org.springframework}"/>
- </dependencies>
-
-</ivy-module>
diff --git a/org.eclipse.virgo.apps.admin.web/lib/.version b/org.eclipse.virgo.apps.admin.web/lib/.version
deleted file mode 100644
index 6396fc4..0000000
--- a/org.eclipse.virgo.apps.admin.web/lib/.version
+++ /dev/null
@@ -1,2 +0,0 @@
-virgo.kernel.version=test.version.kernel
-virgo.server.version=test.version
\ No newline at end of file
diff --git a/org.eclipse.virgo.apps.admin.web/src/main/java/org/eclipse/virgo/apps/admin/web/AppController.java b/org.eclipse.virgo.apps.admin.web/src/main/java/org/eclipse/virgo/apps/admin/web/AppController.java
deleted file mode 100644
index a141b82..0000000
--- a/org.eclipse.virgo.apps.admin.web/src/main/java/org/eclipse/virgo/apps/admin/web/AppController.java
+++ /dev/null
@@ -1,57 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2008, 2010 VMware Inc.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- * VMware Inc. - initial contribution
- *******************************************************************************/
-
-package org.eclipse.virgo.apps.admin.web;
-
-import java.util.Map;
-import java.util.TreeMap;
-
-import org.eclipse.virgo.apps.admin.web.internal.AdminConsoleUtil;
-import org.springframework.stereotype.Controller;
-import org.springframework.web.bind.annotation.RequestMapping;
-import org.springframework.web.servlet.ModelAndView;
-
-
-/**
- * <p>
- * AppController deals with requests for the console landing page, general information view and links.
- * </p>
- *
- * <strong>Concurrent Semantics</strong><br />
- *
- * AppController is threadsafe
- *
- */
-@Controller
-public final class AppController {
-
- private AdminConsoleUtil adminConsoleUtil = new AdminConsoleUtil();
-
- /**
- * Custom handler for displaying a list of properties.
- * @return ModelAndView to render
- */
- @RequestMapping("/info/overview.htm")
- public ModelAndView overview() {
- return new ModelAndView("info-overview").addObject("properties", this.getServerProperties());
- }
-
- private Map<String, String> getServerProperties() {
- Map<String, String> props = new TreeMap<String, String>();
- props.put("Virgo Server Version", this.adminConsoleUtil.getServerVersion());
- props.put("Operating System", this.adminConsoleUtil.getOperatingSystem());
- props.put("Java VM Description", this.adminConsoleUtil.getVMDesc());
- props.put("Java Version", this.adminConsoleUtil.getJavaDesc());
- props.put("Server Time Zone", this.adminConsoleUtil.getUserTimeZone());
- return props;
- }
-
-}
diff --git a/org.eclipse.virgo.apps.admin.web/src/main/java/org/eclipse/virgo/apps/admin/web/ArtifactController.java b/org.eclipse.virgo.apps.admin.web/src/main/java/org/eclipse/virgo/apps/admin/web/ArtifactController.java
deleted file mode 100644
index 9eb79f0..0000000
--- a/org.eclipse.virgo.apps.admin.web/src/main/java/org/eclipse/virgo/apps/admin/web/ArtifactController.java
+++ /dev/null
@@ -1,243 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2008, 2010 VMware Inc.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- * VMware Inc. - initial contribution
- *******************************************************************************/
-
-package org.eclipse.virgo.apps.admin.web;
-
-import java.io.File;
-import java.io.IOException;
-import java.io.PrintWriter;
-
-import javax.servlet.http.HttpServletRequest;
-import javax.servlet.http.HttpServletResponse;
-
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.stereotype.Controller;
-import org.springframework.web.bind.ServletRequestBindingException;
-import org.springframework.web.bind.ServletRequestUtils;
-import org.springframework.web.bind.annotation.RequestMapping;
-import org.springframework.web.multipart.MultipartFile;
-import org.springframework.web.multipart.MultipartHttpServletRequest;
-import org.springframework.web.servlet.ModelAndView;
-
-import org.eclipse.virgo.apps.admin.web.internal.DojoTreeFormatter;
-import org.eclipse.virgo.kernel.shell.model.helper.ArtifactAccessor;
-import org.eclipse.virgo.kernel.shell.model.helper.RamAccessorHelper;
-import org.eclipse.virgo.apps.admin.core.ArtifactService;
-
-/**
- * <p>
- * ArtifactController handles all requests that need the RAM to be rendered for the artifact page/view.
- * </p>
- *
- * <strong>Concurrent Semantics</strong><br />
- *
- * ArtifactController is threadsafe, under the assumption that {@link ArtifactService} is also thread safe.
- *
- */
-@Controller
-public final class ArtifactController {
-
- private static final Logger LOGGER = LoggerFactory.getLogger(ArtifactController.class);
-
- private static final String AJAX_JSON_CONTENT_TYPE = "application/json";
-
- private static final String TYPE = "type";
-
- private static final String NAME = "name";
-
- private static final String VERSION = "version";
-
- private static final String REGION = "region";
-
- private static final String PARENT = "parent";
-
- private final ArtifactService artifactService;
-
- private final DojoTreeFormatter dojoTreeJsonFormatter;
-
- private final RamAccessorHelper ramAccessorHelper;
-
- /**
- * Simple constructor taking an {@link ArtifactService} instance to provide any data required to render requests
- *
- * @param artifactService data to render requests
- * @param dojoTreeJsonFormatter formatter
- * @param moduleContextAccessor context
- * @param stateInspectorService state
- * @param ramAccessorHelper assistance
- */
- @Autowired
- public ArtifactController(ArtifactService artifactService, DojoTreeFormatter dojoTreeJsonFormatter, RamAccessorHelper ramAccessorHelper) {
- this.artifactService = artifactService;
- this.dojoTreeJsonFormatter = dojoTreeJsonFormatter;
- this.ramAccessorHelper = ramAccessorHelper;
-
- }
-
- /**
- * Custom handler for displaying a list of all installed applications.
- * @param request controlling response
- * @return ModelAndView to render
- */
- @RequestMapping("/artifact/overview.htm")
- public ModelAndView overview(HttpServletRequest request) {
- String msg = request.getParameter("message");
- if (msg == null || "".equals(msg)) {
- return new ModelAndView("artifact-overview");
- }
- return new ModelAndView("artifact-overview").addObject("result", msg);
- }
-
- /**
- * Custom handler for deploying an application.
- * @param request controlling response
- * @return ModelAndView to render
- */
- @RequestMapping("/artifact/deploy.htm")
- public ModelAndView deploy(HttpServletRequest request) {
- MultipartHttpServletRequest multipartRequest = (MultipartHttpServletRequest) request;
- MultipartFile multipartFile = multipartRequest.getFile("application");
- String msg;
- if (multipartFile == null || multipartFile.isEmpty()) {
- msg = "Error: Please select the artifact you would like to upload.";
- } else {
- msg = this.deployFile(multipartFile);
- }
- return new ModelAndView("artifact-overview").addObject("result", msg);
- }
-
- private String deployFile(MultipartFile multipartFile) {
- File dest = new File(this.artifactService.getStagingDirectory().getAbsolutePath(), multipartFile.getOriginalFilename());
- try {
- multipartFile.transferTo(dest);
- return this.artifactService.deploy(dest);
- } catch (IOException e) {
- String msg = "An error occurred while transferring an uploaded file to [" + dest.getAbsolutePath()
- + "]. Consult the serviceability output for further details.";
- LOGGER.warn(msg, e);
- return msg;
- }
- }
-
- /**
- * Custom handler for performing an action upon an artifact.
- * @param request controlling response
- * @return ModelAndView to render
- * @throws ServletRequestBindingException for missing or unparsable parameters
- */
- @RequestMapping("/artifact/do/start")
- public ModelAndView actionStart(HttpServletRequest request) throws ServletRequestBindingException {
- String type = ServletRequestUtils.getRequiredStringParameter(request, TYPE);
- String name = ServletRequestUtils.getRequiredStringParameter(request, NAME);
- String version = ServletRequestUtils.getRequiredStringParameter(request, VERSION);
- String region = ServletRequestUtils.getRequiredStringParameter(request, REGION);
-
- String msg = this.ramAccessorHelper.start(type, name, version, region);
- return new ModelAndView("artifact-overview").addObject("result", msg);
- }
-
- /**
- * Custom handler for performing an action upon an artifact.
- * @param request controlling response
- * @return ModelAndView to render
- * @throws ServletRequestBindingException for missing or unparsable parameters
- */
- @RequestMapping("/artifact/do/stop")
- public ModelAndView actionStop(HttpServletRequest request) throws ServletRequestBindingException {
- String type = ServletRequestUtils.getRequiredStringParameter(request, TYPE);
- String name = ServletRequestUtils.getRequiredStringParameter(request, NAME);
- String version = ServletRequestUtils.getRequiredStringParameter(request, VERSION);
- String region = ServletRequestUtils.getRequiredStringParameter(request, REGION);
-
- String msg = this.ramAccessorHelper.stop(type, name, version, region);
- return new ModelAndView("artifact-overview").addObject("result", msg);
- }
-
- /**
- * Custom handler for performing an action upon an artifact.
- * @param request controlling response
- * @return ModelAndView to render
- * @throws ServletRequestBindingException for missing or unparsable parameters
- */
- @RequestMapping("/artifact/do/uninstall")
- public ModelAndView actionUninstall(HttpServletRequest request) throws ServletRequestBindingException {
- String type = ServletRequestUtils.getRequiredStringParameter(request, TYPE);
- String name = ServletRequestUtils.getRequiredStringParameter(request, NAME);
- String version = ServletRequestUtils.getRequiredStringParameter(request, VERSION);
- String region = ServletRequestUtils.getRequiredStringParameter(request, REGION);
-
- String msg = this.ramAccessorHelper.uninstall(type, name, version, region);
- return new ModelAndView("artifact-overview").addObject("result", msg);
- }
-
- /**
- * Custom handler for performing an action upon an artifact.
- * @param request controlling response
- * @return ModelAndView to render
- * @throws ServletRequestBindingException for missing or unparsable parameters
- */
- @RequestMapping("/artifact/do/refresh")
- public ModelAndView actionRefresh(HttpServletRequest request) throws ServletRequestBindingException {
- String type = ServletRequestUtils.getRequiredStringParameter(request, TYPE);
- String name = ServletRequestUtils.getRequiredStringParameter(request, NAME);
- String version = ServletRequestUtils.getRequiredStringParameter(request, VERSION);
- String region = ServletRequestUtils.getRequiredStringParameter(request, REGION);
-
- String msg = this.ramAccessorHelper.refresh(type, name, version, region);
- return new ModelAndView("artifact-overview").addObject("result", msg);
- }
-
- /**
- * Write a representation of the RAM.
- * @param request controlling response
- * @param response formatted descriptions
- * @throws IOException writing response
- * @throws ServletRequestBindingException for missing or unparsable parameters
- */
- @RequestMapping("/artifact/data")
- public void data(HttpServletRequest request, HttpServletResponse response) throws IOException, ServletRequestBindingException {
- String type = ServletRequestUtils.getStringParameter(request, TYPE);
- String name = ServletRequestUtils.getStringParameter(request, NAME);
- String version = ServletRequestUtils.getStringParameter(request, VERSION);
- String region = ServletRequestUtils.getStringParameter(request, REGION);
- String parent = ServletRequestUtils.getStringParameter(request, PARENT);
-
- String responseString;
- if (type == null) {
- responseString = this.dojoTreeJsonFormatter.formatTypes(this.ramAccessorHelper.getTypes());//Top level request
- } else if (type != null && name == null) {
- responseString = this.dojoTreeJsonFormatter.formatArtifactsOfType(parent, this.ramAccessorHelper.getArtifactsOfType(type));//Second level request
- } else if (type != null && name != null && version != null) {
- ArtifactAccessor artifact = this.ramAccessorHelper.getArtifact(type, name, version, region);
- responseString = this.dojoTreeJsonFormatter.formatArtifactDetails(parent, artifact);//All other requests
- } else {
- throw new IllegalArgumentException(String.format("Cannot service request with parameters: %s", request.getQueryString()));
- }
-
- StringBuilder sb = new StringBuilder();
- sb.append("{");
- sb.append("identifier: 'id',");
- sb.append("label: 'label',");
- sb.append("items: [ ");
- if(responseString != null) {
- sb.append(responseString);
- }
- sb.append("]}");
-
- response.setContentType(AJAX_JSON_CONTENT_TYPE);
- PrintWriter writer = response.getWriter();
- writer.write(sb.toString());
- writer.flush();
- }
-
-}
diff --git a/org.eclipse.virgo.apps.admin.web/src/main/java/org/eclipse/virgo/apps/admin/web/ConfigAdminController.java b/org.eclipse.virgo.apps.admin.web/src/main/java/org/eclipse/virgo/apps/admin/web/ConfigAdminController.java
deleted file mode 100644
index f2584b9..0000000
--- a/org.eclipse.virgo.apps.admin.web/src/main/java/org/eclipse/virgo/apps/admin/web/ConfigAdminController.java
+++ /dev/null
@@ -1,91 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2008, 2010 VMware Inc.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- * VMware Inc. - initial contribution
- *******************************************************************************/
-
-package org.eclipse.virgo.apps.admin.web;
-
-import java.util.Enumeration;
-import java.util.HashMap;
-import java.util.Map;
-
-import org.osgi.service.cm.Configuration;
-import org.osgi.service.cm.ConfigurationAdmin;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.stereotype.Controller;
-import org.springframework.web.bind.ServletRequestBindingException;
-import org.springframework.web.bind.annotation.RequestMapping;
-import org.springframework.web.servlet.ModelAndView;
-
-/**
- * <p>
- * ConfigAdminController deals with requests for configuration information from config admin.
- * </p>
- *
- * <strong>Concurrent Semantics</strong><br />
- *
- * ConfigAdminController is threadsafe
- *
- */
-@Controller
-public final class ConfigAdminController {
-
- private final ConfigurationAdmin configurationAdmin;
-
- /**
- * Simple constructor taking an {@link ConfigurationAdmin} instance to provide any data required to render requests
- * @param configurationAdmin data for request rendering
- */
- @Autowired
- public ConfigAdminController(ConfigurationAdmin configurationAdmin) {
- this.configurationAdmin = configurationAdmin;
- }
-
- /**
- * Custom handler for displaying all the present configuration
- *
- * @return ModelAndView to render
- */
- @SuppressWarnings("unchecked")
- @RequestMapping("/config/overview.htm")
- public ModelAndView overview() {
- Configuration[] configurations = new Configuration[0];
- try {
- configurations = this.configurationAdmin.listConfigurations(null);
- } catch (Exception e) {
- // no-op
- }
- Map<String, Map<String, String>> configs = new HashMap<String, Map<String,String>>();
- if(configurations != null){
- Map<String, String> tempProps;
- for(Configuration c : configurations){
- tempProps = new HashMap<String, String>();
- Enumeration<Object> keys = c.getProperties().keys();
- while(keys.hasMoreElements()){
- Object nextElement = keys.nextElement();
- tempProps.put(nextElement.toString(), c.getProperties().get(nextElement).toString());
- }
- configs.put(c.getPid(), tempProps);
- }
- }
- Map<String, Object> model = new HashMap<String, Object>();
- model.put("configurations", configs);
- return createStateModelAndView("config-overview", model);
- }
-
- /**
- * Add any common model items and return a {@link ModelAndView}
- * @throws ServletRequestBindingException
- */
- private ModelAndView createStateModelAndView(String viewName, Map<String, Object> model) {
- return new ModelAndView(viewName, model);
- }
-
-
-}
diff --git a/org.eclipse.virgo.apps.admin.web/src/main/java/org/eclipse/virgo/apps/admin/web/DumpController.java b/org.eclipse.virgo.apps.admin.web/src/main/java/org/eclipse/virgo/apps/admin/web/DumpController.java
deleted file mode 100644
index 2adcc07..0000000
--- a/org.eclipse.virgo.apps.admin.web/src/main/java/org/eclipse/virgo/apps/admin/web/DumpController.java
+++ /dev/null
@@ -1,124 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2008, 2010 VMware Inc.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- * VMware Inc. - initial contribution
- *******************************************************************************/
-
-package org.eclipse.virgo.apps.admin.web;
-
-import java.util.Collections;
-import java.util.List;
-import java.util.Map;
-
-import javax.servlet.http.HttpServletRequest;
-
-import org.eclipse.virgo.apps.admin.web.internal.DumpListFormatterUtil;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.stereotype.Controller;
-import org.springframework.web.bind.ServletRequestBindingException;
-import org.springframework.web.bind.ServletRequestUtils;
-import org.springframework.web.bind.annotation.RequestMapping;
-import org.springframework.web.servlet.ModelAndView;
-
-import org.eclipse.virgo.apps.admin.core.DumpInspectorService;
-
-/**
- * <p>
- * DumpController handles all requests from the dump inspector page of the admin console
- * </p>
- *
- * <strong>Concurrent Semantics</strong><br />
- *
- * DumpController is thread safe
- *
- */
-@Controller
-public final class DumpController {
-
- private final DumpInspectorService dumpInspectorService;
-
- private final DumpListFormatterUtil dumpListFormatterUtil;
-
- private static final int DUMP_TYPE = 1;
-
- private static final int ENTRY_TYPE = 2;
-
- /**
- * Simple constructor taking an {@link DumpInspectorService} instance to provide any data required to render requests
- * @param dumpManagerService for request rendering
- * @param dumpListFormatterUtil for general list formatting
- */
- @Autowired
- public DumpController(DumpInspectorService dumpManagerService, DumpListFormatterUtil dumpListFormatterUtil) {
- this.dumpInspectorService = dumpManagerService;
- this.dumpListFormatterUtil = dumpListFormatterUtil;
- }
-
- /**
- * Custom handler for displaying the list of available dumps
- * @return ModelAndView to render
- */
- @RequestMapping("/dump/inspector.htm")
- public ModelAndView dump() {
- Map<String, String> dumps = this.dumpListFormatterUtil.getAvaliableDumps();
- List<String> dumpEntries = Collections.emptyList();
- String inspection = "";
- return createContextDumpModelAndView(dumps, null, dumpEntries, null, inspection);
- }
-
- /**
- * Custom handler for displaying the list of available dumps and dump entries
- * @param request to limit response
- * @return ModleAndView to render
- */
- @RequestMapping("/dump/entry.htm")
- public ModelAndView dumpEntry(HttpServletRequest request) {
- String dumpID = ServletRequestUtils.getStringParameter(request, "dumpID", null);
- int requestType = getRequestType(request);
- Map<String, String> dumps = this.dumpListFormatterUtil.getAvaliableDumps();
-
- String dumpEntryName = null;
- List<String> dumpEntries = null;
- String inspection = null;
-
- if(requestType == ENTRY_TYPE || dumpID == null){
- dumpEntryName = ServletRequestUtils.getStringParameter(request, "dumpEntryName", null);
- dumpEntries = this.dumpInspectorService.getDumpEntries(dumpID);
- inspection = this.dumpInspectorService.getDumpEntry(dumpID, dumpEntryName);
- }
- return createContextDumpModelAndView(dumps, dumpID, dumpEntries, dumpEntryName, inspection);
- }
-
- private ModelAndView createContextDumpModelAndView(Map<String, String> dumps, String selectedDump, List<String> entries, String selectedEntry, String inspection) {
- String formattedSelectedDump = null;
- if(selectedDump != null) {
- formattedSelectedDump = dumps.get(selectedDump);
- }
- return new ModelAndView("dump-overview").addObject("dumps", dumps)
- .addObject("selectedDump", selectedDump)
- .addObject("formattedSelectedDump", formattedSelectedDump)
- .addObject("entries", entries)
- .addObject("selectedEntry", selectedEntry)
- .addObject("inspection", inspection);
- }
-
- private int getRequestType(HttpServletRequest request) {
- String buttonName;
- try {
- buttonName = ServletRequestUtils.getStringParameter(request, "Operation");
- if ("Select Dump".equals(buttonName)) {
- return DUMP_TYPE;
- } else {
- return ENTRY_TYPE;
- }
- } catch (ServletRequestBindingException e) {
- return DUMP_TYPE;
- }
- }
-
-}
diff --git a/org.eclipse.virgo.apps.admin.web/src/main/java/org/eclipse/virgo/apps/admin/web/StateController.java b/org.eclipse.virgo.apps.admin.web/src/main/java/org/eclipse/virgo/apps/admin/web/StateController.java
deleted file mode 100644
index 9585399..0000000
--- a/org.eclipse.virgo.apps.admin.web/src/main/java/org/eclipse/virgo/apps/admin/web/StateController.java
+++ /dev/null
@@ -1,242 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2008, 2010 VMware Inc.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- * VMware Inc. - initial contribution
- *******************************************************************************/
-
-package org.eclipse.virgo.apps.admin.web;
-
-import java.util.Collections;
-import java.util.HashMap;
-import java.util.List;
-import java.util.Map;
-
-import javax.servlet.http.HttpServletRequest;
-
-import org.eclipse.virgo.apps.admin.web.internal.DumpListFormatterUtil;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.stereotype.Controller;
-import org.springframework.web.bind.ServletRequestBindingException;
-import org.springframework.web.bind.ServletRequestUtils;
-import org.springframework.web.bind.annotation.RequestMapping;
-import org.springframework.web.servlet.ModelAndView;
-
-import org.eclipse.virgo.apps.admin.core.BundleHolder;
-import org.eclipse.virgo.apps.admin.core.DumpInspectorService;
-import org.eclipse.virgo.apps.admin.core.FailedResolutionHolder;
-import org.eclipse.virgo.apps.admin.core.PackagesCollection;
-import org.eclipse.virgo.apps.admin.core.ServiceHolder;
-import org.eclipse.virgo.apps.admin.core.StateHolder;
-
-/**
- * <p>
- * Requests made with either a 'null' or 'Live' value in the state field will get the
- * live view. Otherwise the requested state dump will be searched for.
- * </p>
- *
- * <strong>Concurrent Semantics</strong><br />
- *
- * StateManagerController is thread safe
- *
- */
-@Controller
-public final class StateController {
-
- private static final Logger LOGGER = LoggerFactory.getLogger(StateController.class);
-
- private static final String BUNDLE_ID_NAME = "id";
-
- private static final String STATE_NAME = "state";
-
- private static final String FORMATTED_STATE_NAME = "fState";
-
- private static final String LIVE_STATE_NAME = "Live";
-
- private static final String BUNDLE_NAME = "name";
-
- private static final String VERSION_NAME = "version";
-
- private static final String REGION_NAME = "region";
-
- private final StateHolder stateHolder;
-
- private final DumpListFormatterUtil dumpListFormatterUtil;
-
-
- /**
- * Simple constructor taking an {@link DumpInspectorService} instance to provide any data required to render requests
- * @param stateHolder for data to render requests
- * @param dumpListFormatterUtil for general list formatting
- */
- @Autowired
- public StateController(StateHolder stateHolder, DumpListFormatterUtil dumpListFormatterUtil) {
- this.stateHolder = stateHolder;
- this.dumpListFormatterUtil = dumpListFormatterUtil;
- }
-
- /**
- * Custom handler for displaying the list of available bundles
- * @param request to limit response
- * @return ModelAndView to render
- * @throws ServletRequestBindingException getting parameters
- */
- @RequestMapping("/state/bundles.htm")
- public ModelAndView bundles(HttpServletRequest request) throws ServletRequestBindingException {
- String newState = ServletRequestUtils.getStringParameter(request, STATE_NAME);
- List<BundleHolder> bundleHolders = this.stateHolder.getAllBundles(newState);
- Collections.sort(bundleHolders);
- Map<String, Object> model = new HashMap<String, Object>();
- model.put("bundles", bundleHolders);
- return createStateModelAndView("state-bundles", request, model);
- }
-
- /**
- * Custom handler for displaying the list of available services
- *
- * @param request to limit response
- * @return ModelAndView to render
- * @throws ServletRequestBindingException getting parameters
- */
- @RequestMapping("/state/services.htm")
- public ModelAndView services(HttpServletRequest request) throws ServletRequestBindingException {
- String newState = ServletRequestUtils.getStringParameter(request, STATE_NAME);
- List<ServiceHolder> serviceHolders = this.stateHolder.getAllServices(newState);
- Collections.sort(serviceHolders);
- Map<String, Object> model = new HashMap<String, Object>();
- model.put("services", serviceHolders);
- return createStateModelAndView("state-services", request, model);
- }
-
- /**
- * Custom handler for displaying detailed information on a bundle
- * @param request to limit response
- * @return ModelAndView to render
- * @throws ServletRequestBindingException getting parameters
- */
- @RequestMapping("/state/bundle.htm")
- public ModelAndView bundle(HttpServletRequest request) throws ServletRequestBindingException {
- Long bundleId = ServletRequestUtils.getLongParameter(request, BUNDLE_ID_NAME);
- String name = ServletRequestUtils.getStringParameter(request, BUNDLE_NAME);
- String version = ServletRequestUtils.getStringParameter(request, VERSION_NAME);
- String region = ServletRequestUtils.getStringParameter(request, REGION_NAME);
- String newState = ServletRequestUtils.getStringParameter(request, STATE_NAME);
- Map<String, Object> model = new HashMap<String, Object>();
-
- BundleHolder bundleHolder = null;
- try {
- if(bundleId != null){
- bundleHolder = this.stateHolder.getBundle(newState, bundleId.longValue());
- } else if(name != null && version != null && region != null) {
- bundleHolder = this.stateHolder.getBundle(newState, name, version, region);
- }
- } catch(Exception e) {
- LOGGER.warn(String.format("Error while retrieving bundle '%d%s'", bundleId, name), e);
- }
-
- if(bundleHolder != null) {
- model.put("title", String.format("Viewing bundle '%s: %s'", bundleHolder.getSymbolicName(), bundleHolder.getVersion()));
- model.put("bundle", bundleHolder);
- } else {
- model.put("title", "No bundle has been requested");
- }
-
- return createStateModelAndView("state-bundle", request, model);
- }
-
- /**
- * Custom handler for displaying the list of available dumps
- * @param request to limit response
- * @return ModelAndView to render
- * @throws ServletRequestBindingException getting parameters
- */
- @RequestMapping("/state/packages.htm")
- public ModelAndView packages(HttpServletRequest request) throws ServletRequestBindingException {
- String packageName = ServletRequestUtils.getStringParameter(request, "name");
- String newState = ServletRequestUtils.getStringParameter(request, STATE_NAME);
- Map<String, Object> model = new HashMap<String, Object>();
- if(packageName != null){
- PackagesCollection packages = this.stateHolder.getPackages(newState, packageName);
- model.put("importers", packages.getImported());
- model.put("exporters", packages.getExported());
- model.put("title", String.format("Viewing package '%s'", packages.getPackageName()));
- } else {
- model.put("title", "No package name has been provided");
- }
- return createStateModelAndView("state-packages", request, model);
- }
-
- /**
- * Custom handler for displaying the possible resolution issues with the requested bundle
- * @param request to limit response
- * @return ModelAndView to render
- * @throws ServletRequestBindingException getting parameters
- */
- @RequestMapping("/state/resolve.htm")
- public ModelAndView resolve(HttpServletRequest request) throws ServletRequestBindingException {
- Long bundleId = ServletRequestUtils.getLongParameter(request, BUNDLE_ID_NAME);
- String newState = ServletRequestUtils.getStringParameter(request, STATE_NAME);
- Map<String, Object> model = new HashMap<String, Object>();
- if(bundleId != null){
- List<FailedResolutionHolder> failedResolutions = this.stateHolder.getResolverReport(newState, bundleId);
- if(failedResolutions.size() == 0){
- model.put("title", String.format("No resolution faliures found for bundle '%s'", bundleId));
- } else {
- FailedResolutionHolder quasiResolutionFailure = failedResolutions.get(0);
- model.put("title", String.format("State resolver report for '%s - %s'", quasiResolutionFailure.getUnresolvedBundle().getSymbolicName(), quasiResolutionFailure.getUnresolvedBundle().getVersion()));
- model.put("failure", failedResolutions);
- }
- } else {
- model.put("title", "No bundle has been requested");
- }
- return createStateModelAndView("state-resolve", request, model);
- }
-
- /**
- * Custom handler for displaying the search results of the given search term
- * @param request to limit response
- * @return ModelAndView to render
- * @throws ServletRequestBindingException getting parameters
- */
- @RequestMapping("/state/search.htm")
- public ModelAndView search(HttpServletRequest request) throws ServletRequestBindingException {
- String term = ServletRequestUtils.getStringParameter(request, "term");
- String newState = ServletRequestUtils.getStringParameter(request, STATE_NAME);
- Map<String, Object> model = new HashMap<String, Object>();
- if(term != null){
- List<BundleHolder> matchingBundles = this.stateHolder.search(newState, term);
- model.put("title", String.format("Search results for '%s'", term));
- model.put("bundles", matchingBundles);
- } else {
- model.put("title", "No search term given");
- }
- return createStateModelAndView("state-search", request, model);
- }
-
-
- /**
- * Add any common model items and return a {@link ModelAndView}
- *
- * @throws ServletRequestBindingException
- */
- private ModelAndView createStateModelAndView(String viewName, HttpServletRequest request, Map<String, Object> model) throws ServletRequestBindingException {
- Map<String, String> dumps = this.dumpListFormatterUtil.getAvaliableDumps();
- model.put("stateSources", dumps);
- String newState = ServletRequestUtils.getStringParameter(request, STATE_NAME); // Don't want to unformat it so that it reads correct on the next call
- if(newState == null || LIVE_STATE_NAME.equals(newState)){
- model.put(STATE_NAME, LIVE_STATE_NAME);
- model.put(FORMATTED_STATE_NAME, LIVE_STATE_NAME);
- } else {
- model.put(STATE_NAME, newState);
- model.put(FORMATTED_STATE_NAME, dumps.get(newState));
- }
- return new ModelAndView(viewName, model);
- }
-
-}
diff --git a/org.eclipse.virgo.apps.admin.web/src/main/java/org/eclipse/virgo/apps/admin/web/internal/AdminConsoleUtil.java b/org.eclipse.virgo.apps.admin.web/src/main/java/org/eclipse/virgo/apps/admin/web/internal/AdminConsoleUtil.java
deleted file mode 100644
index cf6eb95..0000000
--- a/org.eclipse.virgo.apps.admin.web/src/main/java/org/eclipse/virgo/apps/admin/web/internal/AdminConsoleUtil.java
+++ /dev/null
@@ -1,91 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2008, 2010 VMware Inc.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- * VMware Inc. - initial contribution
- *******************************************************************************/
-
-package org.eclipse.virgo.apps.admin.web.internal;
-
-import java.io.File;
-import java.io.FileInputStream;
-import java.io.IOException;
-import java.io.InputStream;
-import java.lang.management.ManagementFactory;
-import java.lang.management.OperatingSystemMXBean;
-import java.lang.management.RuntimeMXBean;
-import java.util.Properties;
-
-/**
- * <p>
- * AdminConsoleUtil is a simple class that provides access to various server properties
- * </p>
- *
- * <strong>Concurrent Semantics</strong><br />
- *
- * AdminConsoleUtil is threadsafe and immutable.
- *
- */
-public final class AdminConsoleUtil {
-
- private final String version;
-
- public AdminConsoleUtil() {
- this.version = this.readServerVersion("lib/.version");
- }
-
- public String getServerVersion() {
- return this.version;
- }
-
- public String getOperatingSystem() {
- OperatingSystemMXBean os = ManagementFactory.getOperatingSystemMXBean();
- return String.format("%s(%s) - %s", os.getName(), os.getArch(), os.getVersion());
- }
-
- public String getVMDesc() {
- RuntimeMXBean rt = ManagementFactory.getRuntimeMXBean();
- return String.format("%s(%s) - %s", rt.getVmVendor(), rt.getVmName(), rt.getVmVersion());
- }
-
- public String getJavaDesc() {
- String vendor = System.getProperty("java.vendor");
- String version = System.getProperty("java.version");
- return String.format("%s - %s", vendor, version);
- }
-
- public String getUserTimeZone() {
- String timeZone = System.getProperty("user.timezone");
- if (timeZone == null || "".equals(timeZone)) {
- timeZone = "Unavaliable";
- }
- return timeZone;
- }
-
- private final String readServerVersion(String path) {
- String readVersion;
- File versionFile = new File(path);
- Properties versions = new Properties();
- InputStream stream = null;
- try {
- stream = new FileInputStream(versionFile);
- versions.load(stream);
- readVersion = versions.getProperty("virgo.server.version");
- stream.close();
- } catch (IOException e) {
- readVersion = "";
- try {
- if (stream != null) {
- stream.close();
- }
- } catch (IOException e1) {
- // no-op
- }
- }
- return readVersion;
- }
-}
diff --git a/org.eclipse.virgo.apps.admin.web/src/main/java/org/eclipse/virgo/apps/admin/web/internal/DojoTreeFormatter.java b/org.eclipse.virgo.apps.admin.web/src/main/java/org/eclipse/virgo/apps/admin/web/internal/DojoTreeFormatter.java
deleted file mode 100644
index 4c9cc8b..0000000
--- a/org.eclipse.virgo.apps.admin.web/src/main/java/org/eclipse/virgo/apps/admin/web/internal/DojoTreeFormatter.java
+++ /dev/null
@@ -1,54 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2008, 2010 VMware Inc.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- * VMware Inc. - initial contribution
- *******************************************************************************/
-
-package org.eclipse.virgo.apps.admin.web.internal;
-
-import java.util.List;
-
-import org.eclipse.virgo.kernel.shell.model.helper.ArtifactAccessor;
-import org.eclipse.virgo.kernel.shell.model.helper.ArtifactAccessorPointer;
-
-/**
- * <p>
- * DojoTreeFormatter knows how to format data from the RAM in to a friendly dojo format.
- * </p>
- *
- * <strong>Concurrent Semantics</strong><br />
- *
- * DojoTreeFormatter is thread safe
- *
- */
-public interface DojoTreeFormatter {
-
- /**
- * Return a description of all the artifact types in the system that are user installed
- * @param types list of type names to describe
- * @return description
- */
- public String formatTypes(final List<String> types);
-
- /**
- * Return a description of all the artifacts supplied the system that are user installed and of the given type
- * @param parent name of parent
- * @param artifacts to describe
- * @return description
- */
- public String formatArtifactsOfType(final String parent, final List<ArtifactAccessorPointer> artifacts);
-
- /**
- * Return detailed information on the given artifact
- * @param parent name of parent
- * @param artifact to describe
- * @return description
- */
- public String formatArtifactDetails(final String parent, final ArtifactAccessor artifact);
-
-}
diff --git a/org.eclipse.virgo.apps.admin.web/src/main/java/org/eclipse/virgo/apps/admin/web/internal/DojoTreeJsonFormatter.java b/org.eclipse.virgo.apps.admin.web/src/main/java/org/eclipse/virgo/apps/admin/web/internal/DojoTreeJsonFormatter.java
deleted file mode 100644
index 6bba4d8..0000000
--- a/org.eclipse.virgo.apps.admin.web/src/main/java/org/eclipse/virgo/apps/admin/web/internal/DojoTreeJsonFormatter.java
+++ /dev/null
@@ -1,265 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2008, 2010 VMware Inc.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- * VMware Inc. - initial contribution
- *******************************************************************************/
-
-package org.eclipse.virgo.apps.admin.web.internal;
-
-import java.util.Collections;
-import java.util.List;
-import java.util.Map;
-import java.util.Set;
-import java.util.Map.Entry;
-
-import org.springframework.stereotype.Component;
-
-import org.eclipse.virgo.kernel.shell.model.helper.ArtifactAccessor;
-import org.eclipse.virgo.kernel.shell.model.helper.ArtifactAccessorPointer;
-
-/**
- * <p>
- * DojoTreeJsonFormatter takes in rich objects and formats them in to json for use by the artifacts dojo tree
- * </p>
- *
- * <strong>Concurrent Semantics</strong><br />
- *
- * DojoTreeJsonFormatter is thread safe
- *
- */
-@Component
-final class DojoTreeJsonFormatter implements DojoTreeFormatter {
-
- private static final String SCOPED = "scoped";
-
- private static final String ATOMIC = "atomic";
-
- private static final String STATE = "State";
-
- private static final String SPRING = "Spring";
-
- private static final String USER_INSTALLED = "user.installed";
-
- private static final String SCOPED_ATOMIC = "scoped-atomic";
-
- private static final String BUNDLE_TYPE = "bundle";
-
- private static final String CONFIG_TYPE = "configuration";
-
- private static final String BUNDLE_LINK = "/admin/web/state/bundle.htm?name=%s&version=%s®ion=%s";
-
- private static final String CONFIG_LINK = "/admin/web/config/overview.htm#%s";
-
- /**
- * {@inheritDoc}
- */
- public String formatTypes(final List<String> types) {
- StringBuilder sb = new StringBuilder();
- if(types != null) {
- Collections.sort(types);
- if (types.size() > 0) {
- for (String type : types) {
- sb.append("{");
- sb.append("id: '").append(type).append("',");
- sb.append("label: '").append(type).append("s',");
- sb.append("type: '").append(type).append("',");
- sb.append("tooltip: 'all user installed ").append(type).append("s',");
- sb.append("children: []");
- sb.append("},");
- }
- sb.deleteCharAt(sb.length() - 1);
- }
- }
- return sb.toString();
- }
-
- /**
- * {@inheritDoc}
- */
- public String formatArtifactsOfType(final String parent, final List<ArtifactAccessorPointer> artifacts) {
- StringBuilder sb = new StringBuilder();
- if(parent != null && artifacts != null) {
- Collections.sort(artifacts);
-
- if (artifacts.size() > 0) {
- for (ArtifactAccessorPointer artifact : artifacts) {
- FormattingData fd = new FormattingData(sb, parent, artifact.getType(), artifact.getName(), artifact.getVersion(), artifact.getRegion());
- renderComplexChild(fd, artifact.getState());
- }
- sb.deleteCharAt(sb.length() - 1);
- }
- }
- return sb.toString();
- }
-
- /**
- * {@inheritDoc}
- */
- public String formatArtifactDetails(final String parent, final ArtifactAccessor artifact) {
- StringBuilder sb = new StringBuilder();
- if(parent != null && artifact != null) {
- FormattingData fd = new FormattingData(sb, parent, artifact.getType(), artifact.getName(), artifact.getVersion(), artifact.getAttributes().get("Region").toString());
-
- if(BUNDLE_TYPE.equals(fd.type)) {
- renderLinkChild(fd, String.format("View this %s artifact", fd.type), String.format(BUNDLE_LINK, fd.name, fd.version, fd.region));
- } else if(CONFIG_TYPE.equals(fd.type)) {
- renderLinkChild(fd, String.format("View this %s artifact", fd.type), String.format(CONFIG_LINK, fd.name));
- }
-
- //Attributes
- Map<String, Object> attributes = artifact.getAttributes();
- processScopedAtomicAttributes(attributes);
- String key, value;
- Set<Entry<String, Object>> attributesEntrySet = attributes.entrySet();
- if(attributesEntrySet.size() > 0) {
- for (Entry<String, Object> attribute : attributesEntrySet) {
- key = attribute.getKey();
- value = attribute.getValue().toString();
- if(!"false".equals(value)) {
- if(SCOPED.equalsIgnoreCase(key) || ATOMIC.equalsIgnoreCase(key) || SCOPED_ATOMIC.equalsIgnoreCase(key)) {
- renderCustomIconChild(fd, key, key);
- } else if("true".equalsIgnoreCase(value)) {
- renderSimpleChild(fd, key);
- } else if (STATE.equalsIgnoreCase(key)) {
- renderCustomIconChild(fd, value, value);
- } else {
- renderSimpleChild(fd, String.format("%s: %s", key, value));
- }
- }
-
- }
- sb.deleteCharAt(sb.length() - 1);
- }
- //Properties
- Set<Entry<String, String>> propertiesEntrySet = artifact.getProperties().entrySet();
- if(propertiesEntrySet.size() > 0) {
- sb.append(",");
- for (Entry<String, String> attribute : propertiesEntrySet) {
- key = attribute.getKey();
- value = attribute.getValue();
- if(!"false".equals(value)) {
- if ("org.eclipse.virgo.web.contextPath".equalsIgnoreCase(key)) {
- renderLinkChild(fd, String.format("%s: %s", key, value), value);
- } else if(SPRING.equalsIgnoreCase(key)){
- renderCustomIconChild(fd, key, key);
- } else if(USER_INSTALLED.equalsIgnoreCase(key)){
- renderSimpleChild(fd, "User installed");
- } else if("true".equalsIgnoreCase(value)) {
- renderSimpleChild(fd, key);
- } else {
- renderSimpleChild(fd, String.format("%s: %s", key, value));
- }
- }
- }
- sb.deleteCharAt(sb.length() - 1);
- }
-
- //Dependents
- Set<ArtifactAccessorPointer> dependents = artifact.getDependents();
- if(dependents.size() > 0) {
- sb.append(",");
- for (ArtifactAccessorPointer dependent : dependents) {
- fd = new FormattingData(sb, parent, dependent.getType(), dependent.getName(), dependent.getVersion(), dependent.getRegion());
- renderComplexChild(fd, dependent.getState());
- }
- sb.deleteCharAt(sb.length() - 1);
- }
- }
- return sb.toString();
- }
-
- private void processScopedAtomicAttributes(Map<String, Object> attributes) {
- boolean containsAtomic = attributes.containsKey(ATOMIC);
- boolean containsScoped = attributes.containsKey(SCOPED);
-
- if(containsScoped && containsAtomic) {
- Object scopedObject = attributes.get(SCOPED);
- boolean scoped = Boolean.parseBoolean(scopedObject.toString());
-
- Object atomicObject = attributes.get(ATOMIC);
- boolean atomic = Boolean.parseBoolean(atomicObject.toString());
-
- if(scoped && atomic) {
- attributes.remove(SCOPED);
- attributes.remove(ATOMIC);
- attributes.put(SCOPED_ATOMIC, "true");
- }
- }
- }
-
- private void renderComplexChild(FormattingData fd, String state) {
- StringBuilder sb = fd.stringBuilder;
- sb.append("{");
- sb.append("id: '").append(fd.parentKey).append(fd.type).append(fd.name).append(fd.version).append(fd.region).append("',");
- sb.append("label: '").append(fd.name).append("-").append(fd.version).append("',");
- sb.append("type: '").append(fd.type).append("',");
- sb.append("name: '").append(fd.name).append("',");
- sb.append("version: '").append(fd.version).append("',");
- sb.append("region: '").append(fd.region).append("',");
- sb.append("state: '").append(state).append("',");
- sb.append("tooltip: '").append(fd.type).append(" artifact',");
- sb.append("children: []");
- sb.append("},");
- }
-
- private void renderSimpleChild(FormattingData fd, String label) {
- StringBuilder sb = fd.stringBuilder;
- sb.append("{");
- sb.append("id: '").append(fd.parentKey).append(fd.type).append(fd.name).append(fd.version).append(fd.region).append(label).append("',");
- sb.append("label: '").append(label).append("'");
- sb.append("},");
- }
-
- private void renderCustomIconChild(FormattingData fd, String label, String iconClass) {
- StringBuilder sb = fd.stringBuilder;
- sb.append("{");
- sb.append("id: '").append(fd.parentKey).append(fd.type).append(fd.name).append(fd.version).append(fd.region).append(label).append("',");
- sb.append("label: '").append(label).append("',");
- sb.append("icon: '").append(iconClass).append("'");
- sb.append("},");
- }
-
- private void renderLinkChild(FormattingData fd, String linkText, String link) {
- StringBuilder sb = fd.stringBuilder;
- sb.append("{");
- sb.append("id: '").append(fd.parentKey).append(fd.type).append(fd.name).append(fd.version).append(fd.region).append(linkText).append("',");
- sb.append("label: '").append(linkText).append("',");
- sb.append("link: '").append(link).append("'");
- sb.append("},");
- }
-
- /**
- *
- * <p>
- * FormattingData is a simple internal data holder as the same set of types are used all over the place
- * </p>
- *
- * FormattingData is thread safe
- *
- */
- private static class FormattingData {
-
- final StringBuilder stringBuilder;
- final String parentKey;
- final String type;
- final String name;
- final String version;
- final String region;
-
- public FormattingData(StringBuilder stringBuilder, String parentKey, String type, String name, String version, String region) {
- this.stringBuilder = stringBuilder;
- this.parentKey = parentKey;
- this.type = type;
- this.name = name;
- this.version = version;
- this.region = region;
- }
-
- }
-
-}
diff --git a/org.eclipse.virgo.apps.admin.web/src/main/java/org/eclipse/virgo/apps/admin/web/internal/DumpListFormatterUtil.java b/org.eclipse.virgo.apps.admin.web/src/main/java/org/eclipse/virgo/apps/admin/web/internal/DumpListFormatterUtil.java
deleted file mode 100644
index e529914..0000000
--- a/org.eclipse.virgo.apps.admin.web/src/main/java/org/eclipse/virgo/apps/admin/web/internal/DumpListFormatterUtil.java
+++ /dev/null
@@ -1,37 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2008, 2010 VMware Inc.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- * VMware Inc. - initial contribution
- *******************************************************************************/
-
-package org.eclipse.virgo.apps.admin.web.internal;
-
-import java.util.Map;
-
-/**
- * <p>
- * DumpListFormatterUtil will get a list of the available dump folders and produce a map
- * of folder names to formatted display values.
- * </p>
- *
- * <strong>Concurrent Semantics</strong><br />
- *
- * Implementation of DumpListFormatterUtil should be thread safe
- *
- */
-public interface DumpListFormatterUtil {
-
- /**
- * If it is not possible to format the name of the dump folder, maybe because it has
- * been renamed, the name of the folder should be used as the display name.
- *
- * @return Map of <Key, Display name>
- */
- public Map<String, String> getAvaliableDumps();
-
-}
diff --git a/org.eclipse.virgo.apps.admin.web/src/main/java/org/eclipse/virgo/apps/admin/web/internal/StandardDumpListFormatterUtil.java b/org.eclipse.virgo.apps.admin.web/src/main/java/org/eclipse/virgo/apps/admin/web/internal/StandardDumpListFormatterUtil.java
deleted file mode 100644
index 0fe08a6..0000000
--- a/org.eclipse.virgo.apps.admin.web/src/main/java/org/eclipse/virgo/apps/admin/web/internal/StandardDumpListFormatterUtil.java
+++ /dev/null
@@ -1,58 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2008, 2010 VMware Inc.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- * VMware Inc. - initial contribution
- *******************************************************************************/
-
-package org.eclipse.virgo.apps.admin.web.internal;
-
-import java.io.File;
-import java.util.List;
-import java.util.Map;
-import java.util.TreeMap;
-
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.stereotype.Component;
-
-import org.eclipse.virgo.apps.admin.core.DumpInspectorService;
-
-
-/**
- * <p>
- * DumpListFormatterUtil will get a list of the available dump folders and produce a map
- * of folder names to formatted display values.
- * </p>
- *
- * <strong>Concurrent Semantics</strong><br />
- *
- * DumpListFormatterUtil is thread-safe
- *
- */
-@Component
-public final class StandardDumpListFormatterUtil implements DumpListFormatterUtil {
-
- private final DumpInspectorService dumpInspectorService;
-
- @Autowired
- public StandardDumpListFormatterUtil(DumpInspectorService dumpInspectorService) {
- this.dumpInspectorService = dumpInspectorService;
- }
-
- /**
- * {@inheritDoc}
- */
- public Map<String, String> getAvaliableDumps(){
- List<File> avaliableDumps = this.dumpInspectorService.findAvaliableDumps();
- Map<String, String> formattedDumps = new TreeMap<String, String>();
- for(File dumpDirectory : avaliableDumps){
- formattedDumps.put(dumpDirectory.getName(), dumpDirectory.getName());
- }
- return formattedDumps;
- }
-
-}
diff --git a/org.eclipse.virgo.apps.admin.web/src/main/resources/.gitignore b/org.eclipse.virgo.apps.admin.web/src/main/resources/.gitignore
deleted file mode 100644
index e69de29..0000000
--- a/org.eclipse.virgo.apps.admin.web/src/main/resources/.gitignore
+++ /dev/null
diff --git a/org.eclipse.virgo.apps.admin.web/src/main/webapp/WEB-INF/admin-servlet.xml b/org.eclipse.virgo.apps.admin.web/src/main/webapp/WEB-INF/admin-servlet.xml
deleted file mode 100644
index 041e03f..0000000
--- a/org.eclipse.virgo.apps.admin.web/src/main/webapp/WEB-INF/admin-servlet.xml
+++ /dev/null
@@ -1,30 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<beans xmlns="http://www.springframework.org/schema/beans"
- xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:context="http://www.springframework.org/schema/context"
- xsi:schemaLocation="
- http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd
- http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd">
-
- <bean id="multipartResolver" class="org.springframework.web.multipart.commons.CommonsMultipartResolver" />
-
- <bean id="ramAccessorHelper" class="org.eclipse.virgo.kernel.shell.model.helper.StandardRamAccessorHelper" />
-
- <context:component-scan base-package="org.eclipse.virgo.apps.admin.web" />
-
- <!-- VIEW CONFIG -->
-
- <bean id="topViewResolver" class="org.springframework.web.servlet.view.InternalResourceViewResolver">
- <property name="prefix" value="/WEB-INF/jsp/" />
- <property name="suffix" value=".jsp" />
- </bean>
-
- <bean class="org.springframework.web.servlet.handler.SimpleMappingExceptionResolver">
- <property name="exceptionMappings">
- <props>
- <prop key="java.lang.Exception">error</prop>
- </props>
- </property>
- <property name="warnLogCategory" value="org.eclipse.virgo.apps.admin.web" />
- </bean>
-
-</beans>
diff --git a/org.eclipse.virgo.apps.admin.web/src/main/webapp/WEB-INF/applicationContext.xml b/org.eclipse.virgo.apps.admin.web/src/main/webapp/WEB-INF/applicationContext.xml
deleted file mode 100644
index f518d69..0000000
--- a/org.eclipse.virgo.apps.admin.web/src/main/webapp/WEB-INF/applicationContext.xml
+++ /dev/null
@@ -1,16 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<beans xmlns="http://www.springframework.org/schema/beans"
- xmlns:osgi="http://www.springframework.org/schema/osgi"
- xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
- xsi:schemaLocation="http://www.springframework.org/schema/osgi http://www.springframework.org/schema/osgi/spring-osgi.xsd
- http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd">
-
- <osgi:reference id="artifactService" interface="org.eclipse.virgo.apps.admin.core.ArtifactService" />
-
- <osgi:reference id="dumpInspectorService" interface="org.eclipse.virgo.apps.admin.core.DumpInspectorService"/>
-
- <osgi:reference id="stateHolder" interface="org.eclipse.virgo.apps.admin.core.StateHolder"/>
-
- <osgi:reference id="configAdmin" interface="org.osgi.service.cm.ConfigurationAdmin" />
-
-</beans>
diff --git a/org.eclipse.virgo.apps.admin.web/src/main/webapp/WEB-INF/jsp/artifact-overview.jsp b/org.eclipse.virgo.apps.admin.web/src/main/webapp/WEB-INF/jsp/artifact-overview.jsp
deleted file mode 100644
index 6842e2a..0000000
--- a/org.eclipse.virgo.apps.admin.web/src/main/webapp/WEB-INF/jsp/artifact-overview.jsp
+++ /dev/null
@@ -1,250 +0,0 @@
-<%@ page language="java" contentType="text/html; charset=ISO-8859-1" pageEncoding="ISO-8859-1" %><%--
---%><%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %><%--
---%><%@ taglib prefix="fn" uri="http://java.sun.com/jsp/jstl/functions" %><%--
---%><jsp:include page="top.jsp" />
-
-<h1>Artifact Console</h1>
-
-<c:if test="${!(empty result)}">
- <p>The result of the last operation is: <c:out value="${result}" /></p>
-</c:if>
-
-<script language="JavaScript" type="text/javascript">
-/* <![CDATA[ */
- function validateUploadForm() {
- if (document.uploadForm.application.value == null || document.uploadForm.application.value == '') {
- alert("Please select the artifact you would like to upload.");
- document.uploadForm.application.focus();
- return false;
- } else {
- return true;
- }
- }
-/* ]]> */
-</script>
-
-
-<form name="uploadForm" action="<c:url value="deploy.htm" />" method="post" enctype="multipart/form-data">
- <table id="deploy_application" class="bordered-table">
- <tr>
- <th colspan="2">Select an artifact to upload and deploy to Virgo Web Server</th>
- </tr>
- <tr>
- <td id="deploy_application_file" ><input id="deploy_application_file_field" type="file" name="application" size="80"/></td>
- <td id="deploy_application_submit" ><input id="deploy_application_submit_button" type="submit" value="Upload" onclick="validateUploadForm"/></td>
- </tr>
- </table>
-</form>
-<br/>
-
-<script type="text/javascript" language="Javascript">
-/* <![CDATA[ */
- dojo.require("dijit.tree.ForestStoreModel");
- dojo.require("dijit.Tree");
- dojo.require("dojox.data.QueryReadStore");
- dojo.require("dijit.form.Button");
-
-//Data Model
-
- var treeStore = new dojox.data.QueryReadStore({url: "data"});
-
-//Tree Model
-
- function loadChildren(parentItem, complete_cb, error_cb) {
- if(this.store.hasAttribute(parentItem, "name")) {
- requestType = this.store.getValue(parentItem, "type");
- requestName = this.store.getValue(parentItem, "name");
- requestVersion = this.store.getValue(parentItem, "version");
- requestRegion = this.store.getValue(parentItem, "region");
- requestParentId = this.store.getValue(parentItem, "id");
- this.store.fetch({ query: {parent: requestParentId, type: requestType, name: requestName, version: requestVersion, region: requestRegion}, onComplete: complete_cb, onError: error_cb});
- } else if (this.store.hasAttribute(parentItem, "type")) {
- requestType = this.store.getValue(parentItem, "type");
- requestParentId = this.store.getValue(parentItem, "id");
- this.store.fetch({ query: {parent: requestParentId, type: requestType}, onComplete: complete_cb, onError: error_cb});
- }
- return this.inherited(arguments);
- }
-
- dojo.declare("console.ForestStoreModel", dijit.tree.ForestStoreModel, { getChildren: loadChildren });
-
-//Tree Node
-
- function getNewImageNode(iconClass){
- var newNode = dojo.doc.createElement('img'); // dojo.doc is the current document.
- dojo.attr(newNode, "class", "dijitTreeIcon treeAtribute-" + iconClass.toLowerCase());
- dojo.attr(newNode, "wairole", "dijitTreeIcon");
- dojo.attr(newNode, "dojoattachpoint", "iconNode");
- dojo.attr(newNode, "alt", "");
- dojo.attr(newNode, "title", iconClass);
- dojo.attr(newNode, "src", "../../js/dojo/resources/blank.gif");
- dojo.attr(newNode, "role", "presentation");
- return newNode;
- }
-
- function nodePostCreate() {
- if(!this.item.root){
- dojo.attr(this.domNode, "id", this.item.i.id); //Set the id of any node other than the root
-
- if(treeStore.hasAttribute(this.item, "children")) { //Add any extra icons
-
- var firstRenderedNode = this.domNode.firstElementChild;
- if(firstRenderedNode != null){
-
- var nextNode = firstRenderedNode.lastElementChild;
- if(nextNode != null){
-
- var goal = this.domNode.firstElementChild.lastElementChild.firstElementChild;
- if(goal != null){
- if(treeStore.hasAttribute(this.item, "tooltip")) {
- dojo.attr(goal, "title", treeStore.getValue(this.item, "tooltip"));
- }
- if(treeStore.hasAttribute(this.item, "state")) {
- var newNode = getNewImageNode(treeStore.getValue(this.item, "state"));
- dojo.place(newNode, goal, "after");
- }
- }
- var labelNode = this.domNode.firstElementChild.lastElementChild.lastElementChild;
- if(labelNode != null){
- if(treeStore.hasAttribute(this.item, "label") && treeStore.hasAttribute(this.item, "name") && treeStore.hasAttribute(this.item, "version")) {
- labelNode.innerHTML = treeStore.getValue(this.item, "name") + ": <em>" + treeStore.getValue(this.item, "version") + "</em>";
- }
- }
-
- }
-
- }
-
- }
-
- }
- this.inherited(arguments);
- }
-
- dojo.declare("console.TreeNode", dijit._TreeNode, { postCreate: nodePostCreate });
-
-//Tree
-
- function getTreeIconClass(item, opened){
- var nodeClass = "dijitLeaf";
- if(treeStore.hasAttribute(item, "type")) {
- nodeClass = "treeArtifact-" + treeStore.getValue(item, "type").toLowerCase();
- } else if (treeStore.hasAttribute(item, "icon")){
- nodeClass = "dijitLeaf treeAtribute-" + treeStore.getValue(item, "icon").toLowerCase();
- }
- return nodeClass;
- }
-
- function getTreeLabelClass(item, opened){
- var labelClass = "dijitTreeLabel";
- if(treeStore.hasAttribute(item, "link")) {
- labelClass = "dijitTreeLabel treeLink";
- }
- return labelClass;
- }
-
- function newChild(args) {
- return new console.TreeNode(args);
- }
-
- dojo.declare("console.Tree", dijit.Tree, {
- _createTreeNode: newChild,
- getIconClass: getTreeIconClass,
- getLabelClass: getTreeLabelClass }
- );
-
-//General page functions
-
- function setButtonsDisabled(disabled) {
- startButton.setDisabled(disabled);
- stopButton.setDisabled(disabled);
- refreshButton.setDisabled(disabled);
- uninstallButton.setDisabled(disabled);
- };
-
- function artifactOperation(operation) {
- setButtonsDisabled(true);
- dojo.xhrGet({
- url: "do/" + operation,
- content: {
- type: treeStore.getValue(lastItem, "type"),
- name: treeStore.getValue(lastItem, "name"),
- version: treeStore.getValue(lastItem, "version"),
- region: treeStore.getValue(lastItem, "region")
- },
- handle: function () {
- location = "/admin/web/artifact/overview.htm";
- }
- });
- }
-
- function itemClicked(item) {
- if (treeStore.hasAttribute(item, "link")) {
- location = treeStore.getValue(item, "link");
- } else {
- if (treeStore.hasAttribute(item, "type") && treeStore.hasAttribute(item, "name")) {
- setButtonsDisabled(false);
- lastItem = item;
- } else {
- setButtonsDisabled(true);
- }
- }
- }
-
-/* ]]> */
-</script>
-
-<div dojoType="console.ForestStoreModel" store="treeStore" childrenAttrs="children" jsId="treeModel"> </div>
-
-<div class="consoleContentPane">
-
- <div jsId="startButton" dojoType="dijit.form.Button" disabled="true">
- Start
- <script type="dojo/connect" event="onClick">
- artifactOperation("start");
- </script>
- </div>
-
- <div jsId="stopButton" dojoType="dijit.form.Button" disabled="true">
- Stop
- <script type="dojo/connect" event="onClick">
- artifactOperation("stop");
- </script>
- </div>
-
- <div jsId="refreshButton" dojoType="dijit.form.Button" disabled="true">
- Refresh
- <script type="dojo/connect" event="onClick">
- artifactOperation("refresh");
- </script>
- </div>
-
- <div jsId="uninstallButton" dojoType="dijit.form.Button" disabled="true">
- Uninstall
- <script type="dojo/connect" event="onClick">
- artifactOperation("uninstall");
- </script>
- </div>
- <div class="consoleFootnote">
- Select an Artifact in the tree to perform an action upon it.
- </div>
- <div id="preloader" class="consoleLoading">
- Loading the Artifact Tree...
- </div>
- <p>
- <div dojoType="console.Tree" model="treeModel" jsId="itemTree" persist="false" showRoot="false">
- <script type="dojo/connect" event="onClick" args="item">
- itemClicked(item);
- </script>
- <script type="dojo/connect" event="onClose" args="item">
- itemClicked(item);
- </script>
- <script type="dojo/connect" event="onOpen" args="item">
- dojo.style("preloader", "display", "none");
- itemClicked(item);
- </script>
- </div>
- </p>
-</div>
-
-<jsp:include page="bottom.jsp" />
\ No newline at end of file
diff --git a/org.eclipse.virgo.apps.admin.web/src/main/webapp/WEB-INF/jsp/bottom.jsp b/org.eclipse.virgo.apps.admin.web/src/main/webapp/WEB-INF/jsp/bottom.jsp
deleted file mode 100644
index 2e4d64b..0000000
--- a/org.eclipse.virgo.apps.admin.web/src/main/webapp/WEB-INF/jsp/bottom.jsp
+++ /dev/null
@@ -1,15 +0,0 @@
-<%@ page language="java" contentType="text/html; charset=ISO-8859-1" pageEncoding="ISO-8859-1" %>
-
- </div> <!-- /content -->
-
- </div> <!-- /container -->
-
- <div id="footer-wrapper">
- <div id="footer-left">© Copyright 2008, 2011 VMware Inc. Licensed under the Eclipse Public License v1.0.</div>
- <div id="footer-right"></div>
- </div>
-
- </div> <!-- /page-->
-
-</body>
-</html>
\ No newline at end of file
diff --git a/org.eclipse.virgo.apps.admin.web/src/main/webapp/WEB-INF/jsp/config-overview.jsp b/org.eclipse.virgo.apps.admin.web/src/main/webapp/WEB-INF/jsp/config-overview.jsp
deleted file mode 100644
index c50fa17..0000000
--- a/org.eclipse.virgo.apps.admin.web/src/main/webapp/WEB-INF/jsp/config-overview.jsp
+++ /dev/null
@@ -1,55 +0,0 @@
-<%@ page language="java" contentType="text/html; charset=ISO-8859-1" pageEncoding="ISO-8859-1"%><%--
---%><%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%><%--
---%><jsp:include page="top.jsp" />
-
-<script type="text/javascript">
- dojo.require("dijit.TitlePane");
-</script>
-
-<h1>Configuration Admin - Overview</h1>
-
-<p>
- Configuration sets present in the system.
- <div class="consoleFootnote">Note: A Configuration artifact must be in the 'Active' state to be visible in config admin.</div>
-</p>
-
-<div class="consoleContentPaneMinimal">
- <c:forEach var="config" items="${configurations}">
-
- <div dojoType="dijit.TitlePane" id="${config.key}" title="${config.key}" open="false">
- <div class="consoleContentPaneSpace">
- <table id="config-${config.key}">
- <tr class="sublevel1-odd">
- <th>Property</th>
- <th>Value</th>
- </tr>
- <c:forEach var="prop" items="${config.value}" varStatus="loopStatus">
- <!-- ROW COLOURING -->
- <c:set var="rowStyle" value="odd" scope="page" />
- <c:if test="${(loopStatus.index % 2) eq 0}">
- <c:set var="rowStyle" value="even" scope="page" />
- </c:if>
- <!-- DISPLAY THE NEXT ROW -->
- <tr class="sublevel1-${rowStyle}">
- <td id="key">${prop.key}</td>
- <td id="value">${prop.value}</td>
- </tr>
- </c:forEach>
- </table>
- </div>
- </div>
-
- </c:forEach>
-</div>
-
-<script type="text/javascript" >
- if(location.hash){
- var paneId = location.hash.replace("#", "");
- pane = dojo.byId(paneId);
- if(pane){
- dojo.attr(pane, "open", "true");
- }
- }
-</script>
-
-<jsp:include page="bottom.jsp" />
\ No newline at end of file
diff --git a/org.eclipse.virgo.apps.admin.web/src/main/webapp/WEB-INF/jsp/dump-overview.jsp b/org.eclipse.virgo.apps.admin.web/src/main/webapp/WEB-INF/jsp/dump-overview.jsp
deleted file mode 100644
index 2c46483..0000000
--- a/org.eclipse.virgo.apps.admin.web/src/main/webapp/WEB-INF/jsp/dump-overview.jsp
+++ /dev/null
@@ -1,74 +0,0 @@
-<%@ page language="java" contentType="text/html; charset=ISO-8859-1" pageEncoding="ISO-8859-1"%><%--
---%><%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%><%--
---%>
-
-<jsp:include page="top.jsp" />
-
-<c:choose>
- <c:when test="${empty formattedSelectedDump}">
- <h1>Dump Inspector</h1>
- </c:when>
- <c:otherwise>
- <h1>Dump Inspector: '${formattedSelectedDump}'</h1>
- </c:otherwise>
-</c:choose>
-
-<c:if test="${empty dumps}">
- There are no dumps available in the system for viewing.
-</c:if>
-
-<c:if test="${!empty dumps}">
-
- <table>
- <tr>
- <form name="dumpForm" action="<c:url value="entry.htm" />" method="get">
- <td>
- Dumps available for inspection:<br/>
- <select class="dumpSelector" name="dumpID">
- <c:forEach var="dump" items="${dumps}">
- <c:choose>
- <c:when test="${selectedDump eq dump.key}">
- <option selected value="${dump.key}">${dump.value}</option>
- </c:when>
- <c:otherwise>
- <option value="${dump.key}">${dump.value}</option>
- </c:otherwise>
- </c:choose>
- </c:forEach>
- </select>
- <br/>
- <input id="dump_selector_submit" type="submit" value="Select Dump"/>
- </td>
- <td>
- Dump entries available for inspection:<br/>
- <select class="dumpSelector" name="dumpEntryName">
- <c:forEach var="entry" items="${entries}">
- <c:choose>
- <c:when test="${selectedEntry eq entry}">
- <option selected value="${entry}">${entry}</option>
- </c:when>
- <c:otherwise>
- <option value="${entry}">${entry}</option>
- </c:otherwise>
- </c:choose>
- </c:forEach>
- </select>
- <br/>
- <input id="dump_selector_submit" type="submit" value="Select Entry"/>
- </td>
- </form>
- </tr>
-
- </table>
-
- <c:if test="${!empty inspection}">
- <h2>Dump Entry Viewer</h2>
- <c:if test="${!empty selectedEntry}">
- <p>Viewing Entry '${selectedEntry}'.</p>
- </c:if>
- <div class="inspection-box">${inspection}</div>
- </c:if>
-
-</c:if>
-
-<jsp:include page="bottom.jsp" />
\ No newline at end of file
diff --git a/org.eclipse.virgo.apps.admin.web/src/main/webapp/WEB-INF/jsp/error.jsp b/org.eclipse.virgo.apps.admin.web/src/main/webapp/WEB-INF/jsp/error.jsp
deleted file mode 100644
index 9ad2685..0000000
--- a/org.eclipse.virgo.apps.admin.web/src/main/webapp/WEB-INF/jsp/error.jsp
+++ /dev/null
@@ -1,17 +0,0 @@
-<%@ page language="java" contentType="text/html; charset=ISO-8859-1" pageEncoding="ISO-8859-1" %><%--
---%><%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %><%--
---%><%@ taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt" %><%--
---%><jsp:include page="top.jsp" />
-
-<h1 class="title">Virgo Web Server</h1>
-<p>
- An unexpected error occurred while performing your requested operation.
- Please <a href="<c:url value="/web/info/overview.htm" />">return to the main page</a> and
- try again.
-</p>
-<p>
- For further details consult the log and event files in the
- '<em>serviceability</em>' directory of the installed server.
-</p>
-
-<jsp:include page="bottom.jsp" />
\ No newline at end of file
diff --git a/org.eclipse.virgo.apps.admin.web/src/main/webapp/WEB-INF/jsp/info-overview.jsp b/org.eclipse.virgo.apps.admin.web/src/main/webapp/WEB-INF/jsp/info-overview.jsp
deleted file mode 100644
index 50f006b..0000000
--- a/org.eclipse.virgo.apps.admin.web/src/main/webapp/WEB-INF/jsp/info-overview.jsp
+++ /dev/null
@@ -1,47 +0,0 @@
-<%@ page language="java" contentType="text/html; charset=ISO-8859-1" pageEncoding="ISO-8859-1" %><%--
---%><%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %><%--
---%><%@ taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt" %><%--
---%><%@ taglib prefix="fn" uri="http://java.sun.com/jsp/jstl/functions" %><%--
---%><jsp:include page="top.jsp" />
-
-<h1>Admin Console - Information</h1>
-
-<p>Congratulations on installing the Virgo Web Server. This is the Web console provided with the server to allow management of a single instance.</p>
-
-<h2>Documentation</h2>
-<p>Documentation is available on-line for the Virgo Web Server.</p>
-<ul>
- <li><a href="http://www.eclipse.org/virgo/documentation" target="_blank" title="Virgo Server - Documentation">Virgo Server - Documentation</a>, includes links to the User, Programmer and Application Development Guides</li>
- <li><a href="http://static.springsource.org/spring/docs/3.0.x/spring-framework-reference/html/index.html" target="_blank" title="Spring Framework">Spring Framework Documentation</a>.</li>
- <li><a href="http://static.springframework.org/osgi/docs/current/reference/html/" target="_blank" title="Spring Dynamic Modules">Spring Dynamic Modules Documentation</a>.</li>
-</ul>
-
-<h2>Server Properties</h2>
-<table id="properties" class="bordered-table">
- <tr class="sublevel1-even">
- <th>Name</th>
- <th>Value</th>
- </tr>
- <c:choose>
- <c:when test="${empty properties}">
- <tr class="name-sublevel1-odd">
- <td id="property_null" colspan="2">No properties have been registered.</td>
- </tr>
- </c:when>
- <c:otherwise>
- <c:forEach var="property" items="${properties}" varStatus="loopStatus">
- <c:set var="rowStyle" value="even" scope="page" />
- <c:if test="${(loopStatus.index % 2) eq 0}">
- <c:set var="rowStyle" value="odd" scope="page" />
- </c:if>
- <tr class="sublevel1-${rowStyle}">
- <td id="property_key">${property.key}</td>
- <td id="property_value">${property.value}</td>
- </tr>
- <c:remove var="rowStyle" />
- </c:forEach>
- </c:otherwise>
- </c:choose>
-</table>
-
-<jsp:include page="bottom.jsp" />
\ No newline at end of file
diff --git a/org.eclipse.virgo.apps.admin.web/src/main/webapp/WEB-INF/jsp/state-bundle.jsp b/org.eclipse.virgo.apps.admin.web/src/main/webapp/WEB-INF/jsp/state-bundle.jsp
deleted file mode 100644
index 2201c82..0000000
--- a/org.eclipse.virgo.apps.admin.web/src/main/webapp/WEB-INF/jsp/state-bundle.jsp
+++ /dev/null
@@ -1,325 +0,0 @@
-<%@ page language="java" contentType="text/html; charset=ISO-8859-1" pageEncoding="ISO-8859-1"%><%--
---%><%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%><%--
---%><%@ taglib prefix="fn" uri="http://java.sun.com/jsp/jstl/functions" %><%--
---%><jsp:include page="top.jsp" />
-
-<script type="text/javascript">
- dojo.require("dijit.TitlePane");
-</script>
-
-<jsp:include page="state-header.jsp" />
-
-<h1>${title}</h1>
-
-<c:set var="hostsFragmentsMessage" value="NA" />
-<c:set var="hostsFragments" value="" />
-<c:choose>
- <c:when test="${!empty bundle.hosts}">
- <c:set var="hostsFragmentsMessage" value="Host: " />
- <c:set var="hostsFragments" value="${bundle.hosts}" />
- </c:when>
- <c:when test="${!empty bundle.fragments}">
- <c:set var="hostsFragmentsMessage" value="Fragments: " />
- <c:set var="hostsFragments" value="${bundle.fragments}" />
- </c:when>
-</c:choose>
-
-<table id="bundles-overview" class="bordered-table">
- <tr class="sublevel1-odd">
- <td>Bundle Symbolic name</td>
- <td>${bundle.symbolicName}</td>
- </tr>
- <tr class="sublevel1-even">
- <td>Bundle Version</td>
- <td>${bundle.version}</td>
- </tr>
- <tr class="sublevel1-odd">
- <td>Bundle ID</td>
- <td>${bundle.bundleId}</td>
- </tr>
- <tr class="sublevel1-even">
- <td>Region</td>
- <td>${bundle.region}</td>
- </tr>
- <tr class="sublevel1-odd">
- <td>Hosts/Fragments</td>
- <td>
- ${hostsFragmentsMessage}
- <c:forEach var="hfBundle" items="${hostsFragments}">
- <a href="<c:url value="bundle.htm?id=${hfBundle.bundleId}&state=${state}" />">${hfBundle.bundleId} (${hfBundle.symbolicName}-${hfBundle.version})</a>
- </c:forEach>
- </td>
- </tr>
- <c:choose>
- <c:when test="${state eq 'Live'}">
- <tr class="sublevel1-even">
- <td>Spring powered</td>
- <c:choose>
- <c:when test="${empty bundle.springName}">
- <td>No</td>
- </c:when>
- <c:otherwise>
- <td>Yes</td>
- </c:otherwise>
- </c:choose>
-
- </tr>
- <tr class="sublevel1-odd">
- <td>State</td>
- <td><c:choose><c:when test="${bundle.resolved}">${bundle.state}</c:when><c:otherwise><a href="<c:url value="resolve.htm?id=${bundle.bundleId}&state=${state}" />">${bundle.state}</a></c:otherwise></c:choose></td>
- </tr>
- </c:when>
- <c:otherwise>
- <tr class="sublevel1-even">
- <td>Spring powered</td>
- <td>NA</td>
- </tr>
- <tr class="sublevel1-odd">
- <td>State</td>
- <td><c:choose><c:when test="${bundle.resolved}">Resolved</c:when><c:otherwise><a href="<c:url value="resolve.htm?id=${bundle.bundleId}&state=${state}" />">Unresolved</a></c:otherwise></c:choose></td>
- </tr>
- </c:otherwise>
- </c:choose>
- <tr class="sublevel1-even">
- <td>Bundle Location</td>
- <td>${bundle.bundleLocation}</td>
- </tr>
-</table>
-
- <c:set var="imports" value="${bundle.importPackages}" />
- <div dojoType="dijit.TitlePane" title="Imported Packages (${fn:length(imports)})" open="false">
- <div class="consoleContentPaneSpace">
- <table id="imports-detail" >
- <tr class="sublevel1-odd">
- <th>Package Name</th>
- <th>Version Constraint</th>
- <th>Provider</th>
- <th>Import Directives</th>
- <th>Import Attributes</th>
- </tr>
- <c:forEach var="_import" items="${imports}" varStatus="loopStatus">
- <!-- CREATE THE PROVIDER STRING -->
- <c:choose>
- <c:when test="${_import.provider eq null}">
- <c:set var="provider" value=""/>
- </c:when>
- <c:otherwise>
- <c:set var="provider" value="${_import.provider.exportingBundle.bundleId} (${_import.provider.exportingBundle.symbolicName} - ${_import.provider.exportingBundle.version})"/>
- </c:otherwise>
- </c:choose>
- <!-- ROW COLOURING -->
- <c:set var="rowStyle" value="odd" scope="page" />
- <c:if test="${(loopStatus.index % 2) eq 0}">
- <c:set var="rowStyle" value="even" scope="page" />
- </c:if>
- <!-- DISPLAY THE NEXT ROW -->
- <tr class="sublevel1-${rowStyle}">
- <td><a href="<c:url value="packages.htm?name=${_import.packageName}&state=${state}" />">${_import.packageName}</a></td>
- <td>${_import.versionConstraint}</td>
- <td><a href="<c:url value="bundle.htm?id=${_import.provider.exportingBundle.bundleId}&state=${state}" />">${provider}</a></td>
- <td>
- <c:forEach var="directive" items="${_import.directives}">
- ${directive.key}:=${directive.value}<br/>
- </c:forEach>
- </td>
- <td>
- <c:forEach var="attribute" items="${_import.attributes}">
- ${attribute.key}=${attribute.value}<br/>
- </c:forEach>
- </td>
- </tr>
- </c:forEach>
- </table>
- </div>
- </div>
-
- <c:set var="exports" value="${bundle.exportPackages}" />
- <div dojoType="dijit.TitlePane" title="Exported Packages (${fn:length(exports)})" open="false">
- <div class="consoleContentPaneSpace">
- <table id="exports-detail" >
- <tr class="sublevel1-odd">
- <th>Package Name</th>
- <th>Export Version</th>
- <th>Consumers</th>
- <th>Export Directives</th>
- <th>Export Attributes</th>
- </tr>
- <c:forEach var="export" items="${exports}" varStatus="loopStatus">
- <!-- ROW COLOURING -->
- <c:set var="rowStyle" value="odd" scope="page" />
- <c:if test="${(loopStatus.index % 2) eq 0}">
- <c:set var="rowStyle" value="even" scope="page" />
- </c:if>
- <!-- DISPLAY THE NEXT ROW -->
- <tr class="sublevel1-${rowStyle}">
- <td><a href="<c:url value="packages.htm?name=${export.packageName}&state=${state}" />">${export.packageName}</a></td>
- <td>${export.version}</td>
- <td>${fn:length(export.consumers)}</td>
- <td>
- <c:forEach var="directive" items="${export.directives}">
- ${directive.key}:=${directive.value}<br/>
- </c:forEach>
- </td>
- <td>
- <c:forEach var="attribute" items="${export.attributes}">
- ${attribute.key}=${attribute.value}<br/>
- </c:forEach>
- </td>
- </tr>
- </c:forEach>
- </table>
- </div>
- </div>
-
- <c:set var="requires" value="${bundle.requiredBundles}" />
- <div dojoType="dijit.TitlePane" title="Required Bundles (${fn:length(requires)})" open="false">
- <div class="consoleContentPaneSpace">
- <table id="requires-detail" >
- <tr class="sublevel1-odd">
- <th>Bundle Name</th>
- <th>Version</th>
- <th>Provider</th>
- <th>Directives</th>
- <th>Attributes</th>
- </tr>
- <c:forEach var="require" items="${requires}" varStatus="loopStatus">
- <!-- CREATE THE PROVIDER STRING -->
- <c:choose>
- <c:when test="${require eq null}">
- <c:set var="provider" value=""/>
- </c:when>
- <c:otherwise>
- <c:set var="provider" value="${require.provider.bundleId} (${require.provider.symbolicName} - ${require.provider.version})"/>
- </c:otherwise>
- </c:choose>
- <!-- ROW COLOURING -->
- <c:set var="rowStyle" value="odd" scope="page" />
- <c:if test="${(loopStatus.index % 2) eq 0}">
- <c:set var="rowStyle" value="even" scope="page" />
- </c:if>
- <!-- DISPLAY THE NEXT ROW -->
- <tr class="sublevel1-${rowStyle}">
- <td><a href="<c:url value="bundle.htm?id=${require.provider.bundleId}&state=${state}" />">${require.requiredBundleName}</a></td>
- <td>${require.versionConstraint}</td>
- <td>
- <c:if test="${require ne null}">
- <a href="<c:url value="bundle.htm?id=${require.provider.bundleId}&state=${state}" />">${require.provider.bundleId} (${require.provider.symbolicName} - ${require.provider.version})</a>
- </c:if>
- </td>
- <td>
- <c:forEach var="directive" items="${require.directives}">
- ${directive.key}:=${directive.value}<br/>
- </c:forEach>
- </td>
- <td>
- <c:forEach var="attribute" items="${require.attributes}">
- ${attribute.key}=${attribute.value}<br/>
- </c:forEach>
- </td>
- </tr>
- </c:forEach>
- </table>
- </div>
- </div>
-
- <c:if test="${state eq 'Live'}">
- <c:if test="${!empty bundle.springName && !empty bundle.beans }">
- <div dojoType="dijit.TitlePane" title="Spring Context (${fn:length(bundle.beans)} beans)" open="false">
- <div class="consoleContentPaneSpace">
- <p>${bundle.springName}</p>
- <table id="spring-detail">
- <tr class="sublevel1-odd">
- <th>Bean Name</th>
- <th>Class</th>
- <th>Singleton</th>
- <th>Prototype</th>
- </tr>
- <c:forEach var="bean" items="${bundle.beans}" varStatus="loopStatus">
- <!-- ROW COLOURING -->
- <c:set var="rowStyle" value="odd" scope="page" />
- <c:if test="${(loopStatus.index % 2) eq 0}">
- <c:set var="rowStyle" value="even" scope="page" />
- </c:if>
- <!-- DISPLAY THE NEXT ROW -->
- <tr class="sublevel1-${rowStyle}">
- <td>${bean.name}</td>
- <td>${bean.type}</td>
- <td>${bean.prototype}</td>
- <td>${bean.singleton}</td>
- </tr>
- </c:forEach>
- </table>
- </div>
- </div>
- </c:if>
-
- <c:set var="consumedServices" value="${bundle.importedServices}" />
- <div dojoType="dijit.TitlePane" title="Consumed Services (${fn:length(consumedServices)})" open="false">
- <div class="consoleContentPaneMinimal">
-
- <c:forEach var="service" items="${consumedServices}">
- <c:set var="titleString" value="Service ${service.serviceId} provided by bundle ${service.provider.bundleId} - ObjectClass ${service.formattedObjectClass}" />
- <div dojoType="dijit.TitlePane" title="${titleString}" open="false">
- <div class="consoleContentPaneSpace">
- <p>Provider <a href="<c:url value="bundle.htm?id=${service.provider.bundleId}&state=${state}" />">${service.provider.bundleId}</a> ${service.provider.symbolicName}-${service.provider.version}</p>
- <table id="service-properties">
- <tr class="sublevel1-odd">
- <th>Property</th>
- <th>Value</th>
- </tr>
- <c:forEach var="prop" items="${service.properties}" varStatus="loopStatus">
- <!-- ROW COLOURING -->
- <c:set var="rowStyle" value="odd" scope="page" />
- <c:if test="${(loopStatus.index % 2) eq 0}">
- <c:set var="rowStyle" value="even" scope="page" />
- </c:if>
- <!-- DISPLAY THE NEXT ROW -->
- <tr class="sublevel1-${rowStyle}">
- <td id="key">${prop.key}</td>
- <td id="value">${prop.value}</td>
- </tr>
- </c:forEach>
- </table>
- </div>
- </div>
- </c:forEach>
-
- </div>
-
- </div>
-
- <c:set var="providedServices" value="${bundle.exportedServices}" />
- <div dojoType="dijit.TitlePane" title="Published Services (${fn:length(providedServices)})" open="false">
- <div class="consoleContentPaneMinimal">
-
- <c:forEach var="service" items="${providedServices}">
- <c:set var="titleString" value="Service ${service.serviceId} - ObjectClass ${service.formattedObjectClass}" />
- <div dojoType="dijit.TitlePane" title="${titleString}" open="false">
- <div class="consoleContentPaneSpace">
- <table id="service-properties">
- <tr class="sublevel1-odd">
- <th>Property</th>
- <th>Value</th>
- </tr>
- <c:forEach var="prop" items="${service.properties}" varStatus="loopStatus">
- <!-- ROW COLOURING -->
- <c:set var="rowStyle" value="odd" scope="page" />
- <c:if test="${(loopStatus.index % 2) eq 0}">
- <c:set var="rowStyle" value="even" scope="page" />
- </c:if>
- <!-- DISPLAY THE NEXT ROW -->
- <tr class="sublevel1-${rowStyle}">
- <td id="key">${prop.key}</td>
- <td id="value">${prop.value}</td>
- </tr>
- </c:forEach>
- </table>
- </div>
- </div>
-
- </c:forEach>
- </div>
- </div>
- </c:if>
-
-<jsp:include page="bottom.jsp" />
\ No newline at end of file
diff --git a/org.eclipse.virgo.apps.admin.web/src/main/webapp/WEB-INF/jsp/state-bundles.jsp b/org.eclipse.virgo.apps.admin.web/src/main/webapp/WEB-INF/jsp/state-bundles.jsp
deleted file mode 100644
index b23f1de..0000000
--- a/org.eclipse.virgo.apps.admin.web/src/main/webapp/WEB-INF/jsp/state-bundles.jsp
+++ /dev/null
@@ -1,111 +0,0 @@
-<%@ page language="java" contentType="text/html; charset=ISO-8859-1" pageEncoding="ISO-8859-1"%><%--
---%><%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%><%--
---%>
-<jsp:include page="top.jsp" />
-
-<jsp:include page="state-header.jsp" />
-
-<h1>State Overview - Bundles</h1>
-
-<table id="bundles-overview" class="bordered-table">
- <tr>
- <th>Bundle Id</th>
- <th></th>
- <th>Bundle Symbolic Name</th>
- <th>Bundle Version</th>
- <th>Hosts/Fragments</th>
- <th>State</th>
- </tr>
- <c:choose>
- <c:when test="${empty bundles}">
- <tr class="name-sublevel1-even">
- <td id="deploy_application_null" colspan="6">No state information available.</td>
- </tr>
- </c:when>
- <c:otherwise>
-
- <c:forEach var="bundle" items="${bundles}" varStatus="loopStatus">
-<!-- CREATE THE HOSTS FRAGMENTS STRING -->
- <c:set var="hostsFragmentsMessage" value="" />
- <c:set var="hostsFragments" value="" />
- <c:choose>
- <c:when test="${!empty bundle.hosts}">
- <c:set var="hostsFragmentsMessage" value="Host: " />
- <c:set var="hostsFragments" value="${bundle.hosts}" />
- </c:when>
- <c:when test="${!empty bundle.fragments}">
- <c:set var="hostsFragmentsMessage" value="Fragments: " />
- <c:set var="hostsFragments" value="${bundle.fragments}" />
- </c:when>
- </c:choose>
-<!-- CREATE THE RESOLVE STRING -->
- <c:choose>
- <c:when test="${bundle.resolved}">
- <c:set var="resolveMessage" value="Resolved" />
- </c:when>
- <c:otherwise>
- <c:set var="resolveMessage" value="Unresolved" />
- </c:otherwise>
- </c:choose>
-<!-- DO THE ROW COLOURING -->
- <c:set var="rowStyle" value="odd" scope="page" />
- <c:if test="${(loopStatus.index % 2) eq 0}">
- <c:set var="rowStyle" value="even" scope="page" />
- </c:if>
-<!-- PRINT OUT A LIVE OR STATIC TABLE ROW -->
- <c:choose>
- <c:when test="${state eq 'Live'}">
- <tr class="sublevel1-${rowStyle}">
- <td id="bundle-id"><a href="<c:url value="bundle.htm?id=${bundle.bundleId}&state=${state}" />">${bundle.bundleId}</a></td>
- <td class="table-icon" id="bundle-spring"><c:if test="${!empty bundle.springName}"><img src="<c:url value="/images/spring.png"/>" height="16" width ="16" alt="S" /></c:if></td>
- <td id="bundle-name">${bundle.symbolicName}</td>
- <td id="bundle-version">${bundle.version}</td>
- <td id="bundle-hf">${hostsFragmentsMessage}
- <c:forEach var="hfBundle" items="${hostsFragments}">
- <a href="<c:url value="bundle.htm?id=${hfBundle.bundleId}&state=${state}" />">${hfBundle.bundleId}</a>
- </c:forEach>
- </td>
- <td id="bundle-resolved">
- <c:choose>
- <c:when test="${bundle.resolved}">
- ${bundle.state}
- </c:when>
- <c:otherwise>
- <a href="<c:url value="resolve.htm?id=${bundle.bundleId}&state=${state}" />">${bundle.state}</a>
- </c:otherwise>
- </c:choose>
- </td>
- </tr>
- </c:when>
- <c:otherwise>
- <tr class="sublevel1-${rowStyle}">
- <td id="bundle-id"><a href="<c:url value="bundle.htm?id=${bundle.bundleId}&state=${state}" />">${bundle.bundleId}</a></td>
- <td id="bundle-spring" class="table-icon"></td>
- <td id="bundle-name">${bundle.symbolicName}</td>
- <td id="bundle-version">${bundle.version}</td>
- <td id="bundle-hf">${hostsFragmentsMessage}
- <c:forEach var="hfBundle" items="${hostsFragments}">
- <a href="<c:url value="bundle.htm?id=${hfBundle.bundleId}&state=${state}" />">${hfBundle.bundleId}</a>
- </c:forEach>
- </td>
- <td id="bundle-resolved">
- <c:choose>
- <c:when test="${bundle.resolved}">
- ${resolveMessage}
- </c:when>
- <c:otherwise>
- <a href="<c:url value="resolve.htm?id=${bundle.bundleId}&state=${state}" />">${resolveMessage}</a>
- </c:otherwise>
- </c:choose>
- </td>
- </tr>
- </c:otherwise>
- </c:choose>
- <c:remove var="rowStyle" />
- </c:forEach>
-
- </c:otherwise>
- </c:choose>
-</table>
-
-<jsp:include page="bottom.jsp" />
\ No newline at end of file
diff --git a/org.eclipse.virgo.apps.admin.web/src/main/webapp/WEB-INF/jsp/state-header.jsp b/org.eclipse.virgo.apps.admin.web/src/main/webapp/WEB-INF/jsp/state-header.jsp
deleted file mode 100644
index f242517..0000000
--- a/org.eclipse.virgo.apps.admin.web/src/main/webapp/WEB-INF/jsp/state-header.jsp
+++ /dev/null
@@ -1,42 +0,0 @@
-<%@ page language="java" contentType="text/html; charset=ISO-8859-1" pageEncoding="ISO-8859-1"%><%--
---%><%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %><%--
---%>
-<!--
-
--->
-<div class="stateHeader">
-
- <div class="stateNavigation">
- <a href="<c:url value="bundles.htm?state=${state}" />">Bundles Overview</a>
- <c:if test="${state eq 'Live'}">
- <a href="<c:url value="services.htm" />">Services Overview</a>
- </c:if>
- </div>
- <form class="dumpStateSelector" name="dumpForm" action="<c:url value="bundles.htm" />" method="get">
- <fieldset>
- Viewing state '${fState}':
- <select name="state">
- <option value="Live">Live</option>
- <c:forEach var="source" items="${stateSources}">
- <c:choose>
- <c:when test="${source.key eq state}">
- <option selected value="${source.key}">${source.value}</option>
- </c:when>
- <c:otherwise>
- <option value="${source.key}">${source.value}</option>
- </c:otherwise>
- </c:choose>
- </c:forEach>
- </select>
- <input id="state_selector_submit" type="submit" value="Go"/>
- </fieldset>
- </form>
- <form class="search" name="searchForm" action="<c:url value="search.htm" />" method="get">
- <fieldset>
- Search:
- <input type="hidden" name="state" value="${state}" />
- <input type="text" name="term" />
- <input type="submit" name="submit" value="Go" />
- </fieldset>
- </form>
-</div>
diff --git a/org.eclipse.virgo.apps.admin.web/src/main/webapp/WEB-INF/jsp/state-packages.jsp b/org.eclipse.virgo.apps.admin.web/src/main/webapp/WEB-INF/jsp/state-packages.jsp
deleted file mode 100644
index 2f458c8..0000000
--- a/org.eclipse.virgo.apps.admin.web/src/main/webapp/WEB-INF/jsp/state-packages.jsp
+++ /dev/null
@@ -1,92 +0,0 @@
-<%@ page language="java" contentType="text/html; charset=ISO-8859-1" pageEncoding="ISO-8859-1"%><%--
---%><%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%><%--
---%>
-<jsp:include page="top.jsp" />
-
-<script type="text/javascript">
- dojo.require("dijit.TitlePane");
-</script>
-
-<jsp:include page="state-header.jsp" />
-
-<h1>${title}</h1>
-
-<div dojoType="dijit.TitlePane" title="Exporters" open="true">
- <div class="consoleContentPaneSpace">
- <table id="exports-detail" >
- <tr class="sublevel1-odd">
- <th>Bundle Id</th>
- <th>Bundle Symbolic Name</th>
- <th>Bundle Version</th>
- <th>Export Version</th>
- <th>Export Directives</th>
- <th>Export Attributes</th>
- </tr>
- <c:forEach var="export" items="${exporters}" varStatus="loopStatus">
- <!-- ROW COLOURING -->
- <c:set var="rowStyle" value="odd" scope="page" />
- <c:if test="${(loopStatus.index % 2) eq 0}">
- <c:set var="rowStyle" value="even" scope="page" />
- </c:if>
- <!-- DISPLAY THE NEXT ROW -->
- <tr class="sublevel1-${rowStyle}">
- <td><a href="<c:url value="bundle.htm?id=${export.exportingBundle.bundleId}&state=${state}" />">${export.exportingBundle.bundleId}</a></td>
- <td>${export.exportingBundle.symbolicName}</td>
- <td>${export.exportingBundle.version}</td>
- <td>${export.version}</td>
- <td>
- <c:forEach var="directive" items="${export.directives}">
- ${directive.key}:=${directive.value}<br/>
- </c:forEach>
- </td>
- <td>
- <c:forEach var="attribute" items="${export.attributes}">
- ${attribute.key}=${attribute.value}<br/>
- </c:forEach>
- </td>
- </tr>
- </c:forEach>
- </table>
- </div>
-</div>
-
-<div dojoType="dijit.TitlePane" title="Importers" open="false">
- <div class="consoleContentPaneSpace">
- <table id="imports-detail" >
- <tr class="sublevel1-odd">
- <th>Bundle Id</th>
- <th>Bundle Symbolic Name</th>
- <th>Bundle Version</th>
- <th>Import Version Constraint</th>
- <th>Import Directives</th>
- <th>Import Attributes</th>
- </tr>
- <c:forEach var="_import" items="${importers}" varStatus="loopStatus">
- <!-- ROW COLOURING -->
- <c:set var="rowStyle" value="odd" scope="page" />
- <c:if test="${(loopStatus.index % 2) eq 0}">
- <c:set var="rowStyle" value="even" scope="page" />
- </c:if>
- <!-- DISPLAY THE NEXT ROW -->
- <tr class="sublevel1-${rowStyle}">
- <td><a href="<c:url value="bundle.htm?id=${_import.importingBundle.bundleId}&state=${state}" />">${_import.importingBundle.bundleId}</a></td>
- <td>${_import.importingBundle.symbolicName}</td>
- <td>${_import.importingBundle.version}</td>
- <td>${_import.versionConstraint}</td>
- <td>
- <c:forEach var="directive" items="${_import.directives}">
- ${directive.key}:=${directive.value}<br/>
- </c:forEach>
- </td>
- <td>
- <c:forEach var="attribute" items="${_import.attributes}">
- ${attribute.key}=${attribute.value}<br/>
- </c:forEach>
- </td>
- </tr>
- </c:forEach>
- </table>
- </div>
-</div>
-
-<jsp:include page="bottom.jsp" />
\ No newline at end of file
diff --git a/org.eclipse.virgo.apps.admin.web/src/main/webapp/WEB-INF/jsp/state-resolve.jsp b/org.eclipse.virgo.apps.admin.web/src/main/webapp/WEB-INF/jsp/state-resolve.jsp
deleted file mode 100644
index d0b2ca9..0000000
--- a/org.eclipse.virgo.apps.admin.web/src/main/webapp/WEB-INF/jsp/state-resolve.jsp
+++ /dev/null
@@ -1,80 +0,0 @@
-<%@ page language="java" contentType="text/html; charset=ISO-8859-1" pageEncoding="ISO-8859-1" %><%--
---%><%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %><%--
---%>
-<jsp:include page="top.jsp" />
-
-<jsp:include page="state-header.jsp" />
-
-<h1>${title}</h1>
-
-<c:forEach var="fail" items="${failure}" >
-
- <c:set var="bundle" value="${fail.unresolvedBundle}" />
- <c:set var="hostsFragmentsMessage" value="NA" />
- <c:set var="hostsFragments" value="" />
- <c:choose>
- <c:when test="${!empty bundle.hosts}">
- <c:set var="hostsFragmentsMessage" value="Host: " />
- <c:set var="hostsFragments" value="${bundle.hosts}" />
- </c:when>
- <c:when test="${!empty bundle.fragments}">
- <c:set var="hostsFragmentsMessage" value="Fragments: " />
- <c:set var="hostsFragments" value="${bundle.fragments}" />
- </c:when>
- </c:choose>
-
- <div class="consoleContentPane">
- <table id="resolve-overview-${bundle.symbolicName}-${bundle.version}">
- <tr class="name-sublevel1-even">
- <td>Bundle Symbolic Name</td>
- <td>${bundle.symbolicName}</td>
- </tr>
- <tr class="name-sublevel1-odd">
- <td>Bundle Version</td>
- <td>${bundle.version}</td>
- </tr>
- <tr class="name-sublevel1-even">
- <td>Bundle ID</td>
- <td>${bundle.bundleId}</td>
- </tr>
- <tr class="name-sublevel1-odd">
- <td>Hosts/Fragments</td>
- <td>
- ${hostsFragmentsMessage}
- <c:forEach var="hfBundle" items="${hostsFragments}">
- <a href="<c:url value="bundle.htm?id=${hfBundle.bundleId}&state=${state}" />">${hfBundle.bundleId} (${hfBundle.symbolicName}-${hfBundle.version})</a>
- </c:forEach>
- </td>
- </tr>
- <c:choose>
- <c:when test="${state eq 'Live'}">
- <tr class="name-sublevel1-even">
- <td>Spring powered</td>
- <c:choose>
- <c:when test="${empty bundle.springName}">
- <td>No</td>
- </c:when>
- <c:otherwise>
- <td>Yes</td>
- </c:otherwise>
- </c:choose>
- </tr>
- <tr class="name-sublevel1-odd">
- <td>State</td>
- <td>${bundle.state}</td>
- </tr>
- </c:when>
- <c:otherwise>
- <tr class="name-sublevel1-even">
- <td>State</td>
- <td><c:choose><c:when test="${bundle.resolved}">Resolved</c:when><c:otherwise>Unresolved</c:otherwise></c:choose></td>
- </tr>
- </c:otherwise>
- </c:choose>
- </table>
- <p><pre>${fail.description}</pre></p>
- </div>
- <br/>
-</c:forEach>
-
-<jsp:include page="bottom.jsp" />
\ No newline at end of file
diff --git a/org.eclipse.virgo.apps.admin.web/src/main/webapp/WEB-INF/jsp/state-search.jsp b/org.eclipse.virgo.apps.admin.web/src/main/webapp/WEB-INF/jsp/state-search.jsp
deleted file mode 100644
index 7923366..0000000
--- a/org.eclipse.virgo.apps.admin.web/src/main/webapp/WEB-INF/jsp/state-search.jsp
+++ /dev/null
@@ -1,90 +0,0 @@
-<%@ page language="java" contentType="text/html; charset=ISO-8859-1" pageEncoding="ISO-8859-1" %><%--
---%><%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %><%--
---%><%@ taglib prefix="fn" uri="http://java.sun.com/jsp/jstl/functions" %><%--
---%><jsp:include page="top.jsp" />
-
-<jsp:include page="state-header.jsp" />
-
-<h1>${title}</h1>
-
-<h2>Matching Bundles</h2>
-<div id="matching-bundles-section">
- <table id="matching-bundles" class="bordered-table">
- <tr class="sublevel1-odd">
- <th>Bundle Id</th>
- <th></th>
- <th>Bundle Symbolic Name</th>
- <th>Bundle Version</th>
- <th>State</th>
- </tr>
- <c:choose>
- <c:when test="${empty bundles}">
- <tr class="name-sublevel1-even">
- <td id="deploy_application_null" colspan="5">No search results available.</td>
- </tr>
- </c:when>
- <c:otherwise>
-
- <c:forEach var="bundle" items="${bundles}" varStatus="loopStatus">
- <!-- CREATE THE RESOLVE STRING -->
- <c:choose>
- <c:when test="${bundle.resolved}">
- <c:set var="resolveMessage" value="Resolved" />
- </c:when>
- <c:otherwise>
- <c:set var="resolveMessage" value="Unresolved" />
- </c:otherwise>
- </c:choose>
- <!-- DO THE ROW COLOURING -->
- <c:set var="rowStyle" value="odd" scope="page" />
- <c:if test="${(loopStatus.index % 2) eq 0}">
- <c:set var="rowStyle" value="even" scope="page" />
- </c:if>
- <!-- PRINT OUT A LIVE OR STATIC TABLE ROW -->
- <c:choose>
- <c:when test="${state eq 'Live'}">
- <tr class="sublevel1-${rowStyle}">
- <td id="bundle-id"><a href="<c:url value="bundle.htm?id=${bundle.bundleId}&state=${state}" />">${bundle.bundleId}</a></td>
- <td id="bundle-spring" class="table-icon"><c:if test="${!empty bundle.springName}"><img src="<c:url value="/images/spring.png"/>" height="16" width ="16" alt="S" /></c:if></td>
- <td id="bundle-name">${bundle.symbolicName}</td>
- <td id="bundle-version">${bundle.version}</td>
- <td id="bundle-resolved">
- <c:choose>
- <c:when test="${bundle.resolved}">
- ${bundle.state}
- </c:when>
- <c:otherwise>
- <a href="<c:url value="resolve.htm?id=${bundle.bundleId}&state=${state}" />">${bundle.state}</a>
- </c:otherwise>
- </c:choose>
- </td>
- </tr>
- </c:when>
- <c:otherwise>
- <tr class="sublevel1-${rowStyle}">
- <td id="bundle-id"><a href="<c:url value="bundle.htm?id=${bundle.bundleId}&state=${state}" />">${bundle.bundleId}</a></td>
- <td id="bundle-spring" class="table-icon"></td>
- <td id="bundle-name">${bundle.symbolicName}</td>
- <td id="bundle-version">${bundle.version}</td>
- <td id="bundle-resolved">
- <c:choose>
- <c:when test="${bundle.resolved}">
- ${resolveMessage}
- </c:when>
- <c:otherwise>
- <a href="<c:url value="resolve.htm?id=${bundle.bundleId}&state=${state}" />">${resolveMessage}</a>
- </c:otherwise>
- </c:choose>
- </td>
- </tr>
- </c:otherwise>
- </c:choose>
- <c:remove var="rowStyle" />
- </c:forEach>
-
- </c:otherwise>
- </c:choose>
- </table>
-</div>
-
-<jsp:include page="bottom.jsp" />
\ No newline at end of file
diff --git a/org.eclipse.virgo.apps.admin.web/src/main/webapp/WEB-INF/jsp/state-services.jsp b/org.eclipse.virgo.apps.admin.web/src/main/webapp/WEB-INF/jsp/state-services.jsp
deleted file mode 100644
index c2ed78e..0000000
--- a/org.eclipse.virgo.apps.admin.web/src/main/webapp/WEB-INF/jsp/state-services.jsp
+++ /dev/null
@@ -1,45 +0,0 @@
-<%@ page language="java" contentType="text/html; charset=ISO-8859-1" pageEncoding="ISO-8859-1"%><%--
---%><%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%><%--
---%>
-<jsp:include page="top.jsp" />
-
-<script type="text/javascript">
- dojo.require("dijit.TitlePane");
-</script>
-
-<jsp:include page="state-header.jsp" />
-
-<h1>State Overview - Services</h1>
-
-<div class="consoleContentPaneMinimal">
-
- <c:forEach var="service" items="${services}">
- <c:set var="titleString" value="Service ${service.serviceId} provided by bundle ${service.provider.bundleId} - ObjectClass ${service.formattedObjectClass}" />
- <div dojoType="dijit.TitlePane" title="${titleString}" open="false">
- <div class="consoleContentPaneSpace">
- <p>Provided by <a href="<c:url value="bundle.htm?id=${service.provider.bundleId}&state=${state}" />">${service.provider.bundleId}</a> ${service.provider.symbolicName}-${service.provider.version}</p>
- <table id="service-properties">
- <tr class="sublevel1-odd">
- <th>Property</th>
- <th>Value</th>
- </tr>
- <c:forEach var="prop" items="${service.properties}" varStatus="loopStatus">
- <!-- ROW COLOURING -->
- <c:set var="rowStyle" value="odd" scope="page" />
- <c:if test="${(loopStatus.index % 2) eq 0}">
- <c:set var="rowStyle" value="even" scope="page" />
- </c:if>
- <!-- DISPLAY THE NEXT ROW -->
- <tr class="sublevel1-${rowStyle}">
- <td id="key">${prop.key}</td>
- <td id="value">${prop.value}</td>
- </tr>
- </c:forEach>
- </table>
- </div>
- </div>
- </c:forEach>
-
-</div>
-
-<jsp:include page="bottom.jsp" />
\ No newline at end of file
diff --git a/org.eclipse.virgo.apps.admin.web/src/main/webapp/WEB-INF/jsp/top.jsp b/org.eclipse.virgo.apps.admin.web/src/main/webapp/WEB-INF/jsp/top.jsp
deleted file mode 100644
index d9ac574..0000000
--- a/org.eclipse.virgo.apps.admin.web/src/main/webapp/WEB-INF/jsp/top.jsp
+++ /dev/null
@@ -1,52 +0,0 @@
-<%@ page language="java" contentType="text/html; charset=ISO-8859-1" pageEncoding="ISO-8859-1" %><%--
---%><%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %><%--
---%><!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
-
-<head>
- <title>Virgo Admin Console</title>
- <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" />
- <link rel="shortcut icon" href="<c:url value="/images/favicon.ico" />" />
- <link rel="stylesheet" href="<c:url value="/js/dijit/themes/tundra/tundra.css" />" type="text/css" />
- <link rel="stylesheet" href="<c:url value="/styles/main.css" />" type="text/css" />
- <link rel="stylesheet" href="<c:url value="/styles/local.css" />" type="text/css" />
- <link rel="stylesheet" href="<c:url value="/styles/print.css" />" type="text/css" media="print" />
- <script type="text/javascript" src="<c:url value="/js/dojo/dojo.js" />" djConfig="parseOnLoad: true, baseUrl: '../../js/dojo/'"></script>
- <script type="text/javascript" src="<c:url value="/js/dojo/virgo-dojo.js" />" djConfig="parseOnLoad: true, baseUrl: '../../js/dojo/'"></script>
-
-</head>
-
-<body class="main tundra">
- <div id="page">
- <div id="header">
- <div id="name-and-company">
- <div id='site-name'>
- <a href="<c:url value="/" />" title="Virgo Admin Console" rel="home"> </a>
- </div>
- <div id='company-name'>
- <a href="http://wiki.eclipse.org/Virgo" title="Virgo from EclipseRT" target="_blank"> </a>
- </div>
- </div> <!-- /name-and-company -->
- </div> <!-- /header -->
-
- <div id="primary-navigation">
- <div id="primary-left">
- <ul>
- <li><a href="<c:url value="/web/artifact/overview.htm" />" title="Artifacts">Artifacts</a></li>
- <li><a href="<c:url value="/web/config/overview.htm" />" title="Configuration">Configuration</a></li>
- <li><a href="<c:url value="/web/dump/inspector.htm" />" title="Dump Inspector">Dump Inspector</a></li>
- <li><a href="<c:url value="/web/state/bundles.htm" />" title="OSGi State">OSGi State</a></li>
- </ul>
- </div>
- <div id="left-cap"></div>
- <div id="primary-right">
- <ul>
- <li><a href="<c:url value="/web/info/overview.htm" />" title="Information">Information</a></li>
- </ul>
- </div>
- <div id="right-cap"></div>
- </div><!-- /primary-navigation -->
-
- <div id="container">
- <div id="content-no-nav">
-
diff --git a/org.eclipse.virgo.apps.admin.web/src/main/webapp/WEB-INF/web.xml b/org.eclipse.virgo.apps.admin.web/src/main/webapp/WEB-INF/web.xml
deleted file mode 100644
index f807c16..0000000
--- a/org.eclipse.virgo.apps.admin.web/src/main/webapp/WEB-INF/web.xml
+++ /dev/null
@@ -1,58 +0,0 @@
-<?xml version="1.0" encoding="ISO-8859-1"?>
-<web-app xmlns="http://java.sun.com/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
- xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"
- version="2.5">
-
- <display-name>Admin Console</display-name>
-
- <description>Virgo - Administration Console</description>
-
- <welcome-file-list>
- <welcome-file>index.jsp</welcome-file>
- <welcome-file>index.html</welcome-file>
- </welcome-file-list>
-
- <!-- CONFIGURE A PARENT APPLICATION CONTEXT -->
-
- <context-param>
- <param-name>contextClass</param-name>
- <param-value>org.eclipse.virgo.web.dm.ServerOsgiBundleXmlWebApplicationContext</param-value>
- </context-param>
-
- <listener>
- <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
- </listener>
-
- <!-- DISPATCHER SERVLET CONFIG -->
- <servlet>
- <servlet-name>admin</servlet-name>
- <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
- </servlet>
-
- <servlet-mapping>
- <servlet-name>admin</servlet-name>
- <url-pattern>/web/*</url-pattern>
- </servlet-mapping>
-
- <!-- SECURITY CONFIG -->
-
- <security-constraint>
- <web-resource-collection>
- <web-resource-name>Virgo Server Admin Console</web-resource-name>
- <url-pattern>/web/*</url-pattern>
- </web-resource-collection>
- <auth-constraint>
- <role-name>admin</role-name>
- </auth-constraint>
- </security-constraint>
-
- <login-config>
- <auth-method>BASIC</auth-method>
- <realm-name>Virgo Server Admin Console</realm-name>
- </login-config>
-
- <security-role>
- <role-name>admin</role-name>
- </security-role>
-
-</web-app>
diff --git a/org.eclipse.virgo.apps.admin.web/src/main/webapp/images/favicon.ico b/org.eclipse.virgo.apps.admin.web/src/main/webapp/images/favicon.ico
deleted file mode 100755
index 9244a9c..0000000
--- a/org.eclipse.virgo.apps.admin.web/src/main/webapp/images/favicon.ico
+++ /dev/null
Binary files differ
diff --git a/org.eclipse.virgo.apps.admin.web/src/main/webapp/images/footer-left.png b/org.eclipse.virgo.apps.admin.web/src/main/webapp/images/footer-left.png
deleted file mode 100644
index 8bfe3b1..0000000
--- a/org.eclipse.virgo.apps.admin.web/src/main/webapp/images/footer-left.png
+++ /dev/null
Binary files differ
diff --git a/org.eclipse.virgo.apps.admin.web/src/main/webapp/images/footer-right.png b/org.eclipse.virgo.apps.admin.web/src/main/webapp/images/footer-right.png
deleted file mode 100644
index 51527ad..0000000
--- a/org.eclipse.virgo.apps.admin.web/src/main/webapp/images/footer-right.png
+++ /dev/null
Binary files differ
diff --git a/org.eclipse.virgo.apps.admin.web/src/main/webapp/images/footer-stretch.png b/org.eclipse.virgo.apps.admin.web/src/main/webapp/images/footer-stretch.png
deleted file mode 100644
index c58f721..0000000
--- a/org.eclipse.virgo.apps.admin.web/src/main/webapp/images/footer-stretch.png
+++ /dev/null
Binary files differ
diff --git a/org.eclipse.virgo.apps.admin.web/src/main/webapp/images/loader-white-large.gif b/org.eclipse.virgo.apps.admin.web/src/main/webapp/images/loader-white-large.gif
deleted file mode 100644
index aa4ec5a..0000000
--- a/org.eclipse.virgo.apps.admin.web/src/main/webapp/images/loader-white-large.gif
+++ /dev/null
Binary files differ
diff --git a/org.eclipse.virgo.apps.admin.web/src/main/webapp/images/loader-white-small.gif b/org.eclipse.virgo.apps.admin.web/src/main/webapp/images/loader-white-small.gif
deleted file mode 100644
index 75ad2b3..0000000
--- a/org.eclipse.virgo.apps.admin.web/src/main/webapp/images/loader-white-small.gif
+++ /dev/null
Binary files differ
diff --git a/org.eclipse.virgo.apps.admin.web/src/main/webapp/images/menu-curve-left.png b/org.eclipse.virgo.apps.admin.web/src/main/webapp/images/menu-curve-left.png
deleted file mode 100644
index c48a2e0..0000000
--- a/org.eclipse.virgo.apps.admin.web/src/main/webapp/images/menu-curve-left.png
+++ /dev/null
Binary files differ
diff --git a/org.eclipse.virgo.apps.admin.web/src/main/webapp/images/menu-curve-right.png b/org.eclipse.virgo.apps.admin.web/src/main/webapp/images/menu-curve-right.png
deleted file mode 100644
index 1f3b100..0000000
--- a/org.eclipse.virgo.apps.admin.web/src/main/webapp/images/menu-curve-right.png
+++ /dev/null
Binary files differ
diff --git a/org.eclipse.virgo.apps.admin.web/src/main/webapp/images/menu-stretch.png b/org.eclipse.virgo.apps.admin.web/src/main/webapp/images/menu-stretch.png
deleted file mode 100644
index 0ca66f7..0000000
--- a/org.eclipse.virgo.apps.admin.web/src/main/webapp/images/menu-stretch.png
+++ /dev/null
Binary files differ
diff --git a/org.eclipse.virgo.apps.admin.web/src/main/webapp/images/spring.png b/org.eclipse.virgo.apps.admin.web/src/main/webapp/images/spring.png
deleted file mode 100644
index 05a1940..0000000
--- a/org.eclipse.virgo.apps.admin.web/src/main/webapp/images/spring.png
+++ /dev/null
Binary files differ
diff --git a/org.eclipse.virgo.apps.admin.web/src/main/webapp/images/table-header-background.png b/org.eclipse.virgo.apps.admin.web/src/main/webapp/images/table-header-background.png
deleted file mode 100644
index 8f2ba1b..0000000
--- a/org.eclipse.virgo.apps.admin.web/src/main/webapp/images/table-header-background.png
+++ /dev/null
Binary files differ
diff --git a/org.eclipse.virgo.apps.admin.web/src/main/webapp/images/tree-icons/attribute-atomic.png b/org.eclipse.virgo.apps.admin.web/src/main/webapp/images/tree-icons/attribute-atomic.png
deleted file mode 100644
index b8c9c58..0000000
--- a/org.eclipse.virgo.apps.admin.web/src/main/webapp/images/tree-icons/attribute-atomic.png
+++ /dev/null
Binary files differ
diff --git a/org.eclipse.virgo.apps.admin.web/src/main/webapp/images/tree-icons/attribute-scoped-atomic.png b/org.eclipse.virgo.apps.admin.web/src/main/webapp/images/tree-icons/attribute-scoped-atomic.png
deleted file mode 100644
index 1b35a3c..0000000
--- a/org.eclipse.virgo.apps.admin.web/src/main/webapp/images/tree-icons/attribute-scoped-atomic.png
+++ /dev/null
Binary files differ
diff --git a/org.eclipse.virgo.apps.admin.web/src/main/webapp/images/tree-icons/attribute-scoped.png b/org.eclipse.virgo.apps.admin.web/src/main/webapp/images/tree-icons/attribute-scoped.png
deleted file mode 100644
index f0f0e1c..0000000
--- a/org.eclipse.virgo.apps.admin.web/src/main/webapp/images/tree-icons/attribute-scoped.png
+++ /dev/null
Binary files differ
diff --git a/org.eclipse.virgo.apps.admin.web/src/main/webapp/images/tree-icons/state-active.png b/org.eclipse.virgo.apps.admin.web/src/main/webapp/images/tree-icons/state-active.png
deleted file mode 100644
index 4dce2da..0000000
--- a/org.eclipse.virgo.apps.admin.web/src/main/webapp/images/tree-icons/state-active.png
+++ /dev/null
Binary files differ
diff --git a/org.eclipse.virgo.apps.admin.web/src/main/webapp/images/tree-icons/state-installed.png b/org.eclipse.virgo.apps.admin.web/src/main/webapp/images/tree-icons/state-installed.png
deleted file mode 100644
index 380af4a..0000000
--- a/org.eclipse.virgo.apps.admin.web/src/main/webapp/images/tree-icons/state-installed.png
+++ /dev/null
Binary files differ
diff --git a/org.eclipse.virgo.apps.admin.web/src/main/webapp/images/tree-icons/state-resolved.png b/org.eclipse.virgo.apps.admin.web/src/main/webapp/images/tree-icons/state-resolved.png
deleted file mode 100644
index 1791fb0..0000000
--- a/org.eclipse.virgo.apps.admin.web/src/main/webapp/images/tree-icons/state-resolved.png
+++ /dev/null
Binary files differ
diff --git a/org.eclipse.virgo.apps.admin.web/src/main/webapp/images/tree-icons/state-starting.png b/org.eclipse.virgo.apps.admin.web/src/main/webapp/images/tree-icons/state-starting.png
deleted file mode 100644
index 4123fe2..0000000
--- a/org.eclipse.virgo.apps.admin.web/src/main/webapp/images/tree-icons/state-starting.png
+++ /dev/null
Binary files differ
diff --git a/org.eclipse.virgo.apps.admin.web/src/main/webapp/images/tree-icons/state-stopping.png b/org.eclipse.virgo.apps.admin.web/src/main/webapp/images/tree-icons/state-stopping.png
deleted file mode 100644
index a6204d4..0000000
--- a/org.eclipse.virgo.apps.admin.web/src/main/webapp/images/tree-icons/state-stopping.png
+++ /dev/null
Binary files differ
diff --git a/org.eclipse.virgo.apps.admin.web/src/main/webapp/index.html b/org.eclipse.virgo.apps.admin.web/src/main/webapp/index.html
deleted file mode 100644
index ee93ff8..0000000
--- a/org.eclipse.virgo.apps.admin.web/src/main/webapp/index.html
+++ /dev/null
@@ -1,17 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
-<html>
-<head>
- <title>Virgo Console</title>
- <meta http-equiv="REFRESH" content="0;url=web/info/overview.htm">
-</head>
-<body>
- <br/>
- <br/>
- <center>
- <p>
- <em>Virgo Admin Console Loading...</em>
- </p>
- <img alt="" src="images/loader-white-large.gif">
- </center>
-</body>
-</html>
\ No newline at end of file
diff --git a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/Calendar.js b/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/Calendar.js
deleted file mode 100644
index 01e1a94..0000000
--- a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/Calendar.js
+++ /dev/null
@@ -1,479 +0,0 @@
-/*
- Copyright (c) 2004-2009, The Dojo Foundation All Rights Reserved.
- Available via Academic Free License >= 2.1 OR the modified BSD license.
- see: http://dojotoolkit.org/license for details
-*/
-
-
-if(!dojo._hasResource["dijit.Calendar"]){ //_hasResource checks added by build. Do not use _hasResource directly in your code.
-dojo._hasResource["dijit.Calendar"] = true;
-dojo.provide("dijit.Calendar");
-
-dojo.require("dojo.cldr.supplemental");
-dojo.require("dojo.date");
-dojo.require("dojo.date.locale");
-
-dojo.require("dijit._Widget");
-dojo.require("dijit._Templated");
-
-dojo.declare(
- "dijit.Calendar",
- [dijit._Widget, dijit._Templated],
- {
- // summary:
- // A simple GUI for choosing a date in the context of a monthly calendar.
- //
- // description:
- // A simple GUI for choosing a date in the context of a monthly calendar.
- // This widget can't be used in a form because it doesn't serialize the date to an
- // `<input>` field. For a form element, use dijit.form.DateTextBox instead.
- //
- // Note that the parser takes all dates attributes passed in the
- // [RFC 3339 format](http://www.faqs.org/rfcs/rfc3339.html), e.g. `2005-06-30T08:05:00-07:00`
- // so that they are serializable and locale-independent.
- //
- // example:
- // | var calendar = new dijit.Calendar({}, dojo.byId("calendarNode"));
- //
- // example:
- // | <div dojoType="dijit.Calendar"></div>
-
- templateString: dojo.cache("dijit", "templates/Calendar.html", "<table cellspacing=\"0\" cellpadding=\"0\" class=\"dijitCalendarContainer\" role=\"grid\" dojoAttachEvent=\"onkeypress: _onKeyPress\">\n\t<thead>\n\t\t<tr class=\"dijitReset dijitCalendarMonthContainer\" valign=\"top\">\n\t\t\t<th class='dijitReset' dojoAttachPoint=\"decrementMonth\">\n\t\t\t\t<img src=\"${_blankGif}\" alt=\"\" class=\"dijitCalendarIncrementControl dijitCalendarDecrease\" waiRole=\"presentation\">\n\t\t\t\t<span dojoAttachPoint=\"decreaseArrowNode\" class=\"dijitA11ySideArrow\">-</span>\n\t\t\t</th>\n\t\t\t<th class='dijitReset' colspan=\"5\">\n\t\t\t\t<div class=\"dijitVisible\">\n\t\t\t\t\t<div class=\"dijitPopup dijitMenu dijitMenuPassive dijitHidden\" dojoAttachPoint=\"monthDropDown\" dojoAttachEvent=\"onmouseup: _onMonthSelect, onmouseover: _onMenuHover, onmouseout: _onMenuHover\">\n\t\t\t\t\t\t<div class=\"dijitCalendarMonthLabelTemplate dijitCalendarMonthLabel\"></div>\n\t\t\t\t\t</div>\n\t\t\t\t</div>\n\t\t\t\t<div dojoAttachPoint=\"monthLabelSpacer\" class=\"dijitSpacer\"></div>\n\t\t\t\t<div dojoAttachPoint=\"monthLabelNode\" class=\"dijitCalendarMonthLabel dijitInline dijitVisible\" dojoAttachEvent=\"onmousedown: _onMonthToggle\"></div>\n\t\t\t</th>\n\t\t\t<th class='dijitReset' dojoAttachPoint=\"incrementMonth\">\n\t\t\t\t<img src=\"${_blankGif}\" alt=\"\" class=\"dijitCalendarIncrementControl dijitCalendarIncrease\" waiRole=\"presentation\">\n\t\t\t\t<span dojoAttachPoint=\"increaseArrowNode\" class=\"dijitA11ySideArrow\">+</span>\n\t\t\t</th>\n\t\t</tr>\n\t\t<tr>\n\t\t\t<th class=\"dijitReset dijitCalendarDayLabelTemplate\" role=\"columnheader\"><span class=\"dijitCalendarDayLabel\"></span></th>\n\t\t</tr>\n\t</thead>\n\t<tbody dojoAttachEvent=\"onclick: _onDayClick, onmouseover: _onDayMouseOver, onmouseout: _onDayMouseOut\" class=\"dijitReset dijitCalendarBodyContainer\">\n\t\t<tr class=\"dijitReset dijitCalendarWeekTemplate\" role=\"row\">\n\t\t\t<td class=\"dijitReset dijitCalendarDateTemplate\" role=\"gridcell\"><span class=\"dijitCalendarDateLabel\"></span></td>\n\t\t</tr>\n\t</tbody>\n\t<tfoot class=\"dijitReset dijitCalendarYearContainer\">\n\t\t<tr>\n\t\t\t<td class='dijitReset' valign=\"top\" colspan=\"7\">\n\t\t\t\t<h3 class=\"dijitCalendarYearLabel\">\n\t\t\t\t\t<span dojoAttachPoint=\"previousYearLabelNode\" class=\"dijitInline dijitCalendarPreviousYear\"></span>\n\t\t\t\t\t<span dojoAttachPoint=\"currentYearLabelNode\" class=\"dijitInline dijitCalendarSelectedYear\"></span>\n\t\t\t\t\t<span dojoAttachPoint=\"nextYearLabelNode\" class=\"dijitInline dijitCalendarNextYear\"></span>\n\t\t\t\t</h3>\n\t\t\t</td>\n\t\t</tr>\n\t</tfoot>\n</table>\n"),
-
- // value: Date
- // The currently selected Date
- value: new Date(),
-
- // datePackage: String
- // JavaScript namespace to find Calendar routines. Uses Gregorian Calendar routines
- // at dojo.date by default.
- datePackage: "dojo.date",
-
- // dayWidth: String
- // How to represent the days of the week in the calendar header. See dojo.date.locale
- dayWidth: "narrow",
-
- // tabIndex: Integer
- // Order fields are traversed when user hits the tab key
- tabIndex: "0",
-
- attributeMap: dojo.delegate(dijit._Widget.prototype.attributeMap, {
- tabIndex: "domNode"
- }),
-
- setValue: function(/*Date*/ value){
- // summary:
- // Deprecated. Used attr('value', ...) instead.
- // tags:
- // deprecated
- dojo.deprecated("dijit.Calendar:setValue() is deprecated. Use attr('value', ...) instead.", "", "2.0");
- this.attr('value', value);
- },
-
- _getValueAttr: function(){
- // summary:
- // Support getter attr('value')
- var value = new this.dateClassObj(this.value);
- value.setHours(0, 0, 0, 0); // return midnight, local time for back-compat
-
- // If daylight savings pushes midnight to the previous date, fix the Date
- // object to point at 1am so it will represent the correct day. See #9366
- if(value.getDate() < this.value.getDate()){
- value = this.dateFuncObj.add(value, "hour", 1);
- }
- return value;
- },
-
- _setValueAttr: function(/*Date*/ value){
- // summary:
- // Support setter attr("value", ...)
- // description:
- // Set the current date and update the UI. If the date is disabled, the value will
- // not change, but the display will change to the corresponding month.
- // tags:
- // protected
- if(!this.value || this.dateFuncObj.compare(value, this.value)){
- value = new this.dateClassObj(value);
- value.setHours(1); // to avoid issues when DST shift occurs at midnight, see #8521, #9366
- this.displayMonth = new this.dateClassObj(value);
- if(!this.isDisabledDate(value, this.lang)){
- this.value = value;
- this.onChange(this.attr('value'));
- }
- dojo.attr(this.domNode, "aria-label",
- this.dateLocaleModule.format(value,
- {selector:"date", formatLength:"full"}));
- this._populateGrid();
- }
- },
-
- _setText: function(node, text){
- // summary:
- // This just sets the content of node to the specified text.
- // Can't do "node.innerHTML=text" because of an IE bug w/tables, see #3434.
- // tags:
- // private
- while(node.firstChild){
- node.removeChild(node.firstChild);
- }
- node.appendChild(dojo.doc.createTextNode(text));
- },
-
- _populateGrid: function(){
- // summary:
- // Fills in the calendar grid with each day (1-31)
- // tags:
- // private
- var month = this.displayMonth;
- month.setDate(1);
- var firstDay = month.getDay(),
- daysInMonth = this.dateFuncObj.getDaysInMonth(month),
- daysInPreviousMonth = this.dateFuncObj.getDaysInMonth(this.dateFuncObj.add(month, "month", -1)),
- today = new this.dateClassObj(),
- dayOffset = dojo.cldr.supplemental.getFirstDayOfWeek(this.lang);
- if(dayOffset > firstDay){ dayOffset -= 7; }
-
- // Iterate through dates in the calendar and fill in date numbers and style info
- dojo.query(".dijitCalendarDateTemplate", this.domNode).forEach(function(template, i){
- i += dayOffset;
- var date = new this.dateClassObj(month),
- number, clazz = "dijitCalendar", adj = 0;
-
- if(i < firstDay){
- number = daysInPreviousMonth - firstDay + i + 1;
- adj = -1;
- clazz += "Previous";
- }else if(i >= (firstDay + daysInMonth)){
- number = i - firstDay - daysInMonth + 1;
- adj = 1;
- clazz += "Next";
- }else{
- number = i - firstDay + 1;
- clazz += "Current";
- }
-
- if(adj){
- date = this.dateFuncObj.add(date, "month", adj);
- }
- date.setDate(number);
-
- if(!this.dateFuncObj.compare(date, today, "date")){
- clazz = "dijitCalendarCurrentDate " + clazz;
- }
-
- if(this._isSelectedDate(date, this.lang)){
- clazz = "dijitCalendarSelectedDate " + clazz;
- }
-
- if(this.isDisabledDate(date, this.lang)){
- clazz = "dijitCalendarDisabledDate " + clazz;
- }
-
- var clazz2 = this.getClassForDate(date, this.lang);
- if(clazz2){
- clazz = clazz2 + " " + clazz;
- }
-
- template.className = clazz + "Month dijitCalendarDateTemplate";
- template.dijitDateValue = date.valueOf();
- var label = dojo.query(".dijitCalendarDateLabel", template)[0],
- text = date.getDateLocalized ? date.getDateLocalized(this.lang) : date.getDate();
- this._setText(label, text);
- }, this);
-
- // Fill in localized month name
- var monthNames = this.dateLocaleModule.getNames('months', 'wide', 'standAlone', this.lang);
- this._setText(this.monthLabelNode, monthNames[month.getMonth()]);
-
- // Fill in localized prev/current/next years
- var y = month.getFullYear() - 1;
- var d = new this.dateClassObj();
- dojo.forEach(["previous", "current", "next"], function(name){
- d.setFullYear(y++);
- this._setText(this[name+"YearLabelNode"],
- this.dateLocaleModule.format(d, {selector:'year', locale:this.lang}));
- }, this);
-
- // Set up repeating mouse behavior
- var _this = this;
- var typematic = function(nodeProp, dateProp, adj){
-//FIXME: leaks (collects) listeners if populateGrid is called multiple times. Do this once?
- _this._connects.push(
- dijit.typematic.addMouseListener(_this[nodeProp], _this, function(count){
- if(count >= 0){ _this._adjustDisplay(dateProp, adj); }
- }, 0.8, 500)
- );
- };
- typematic("incrementMonth", "month", 1);
- typematic("decrementMonth", "month", -1);
- typematic("nextYearLabelNode", "year", 1);
- typematic("previousYearLabelNode", "year", -1);
- },
-
- goToToday: function(){
- // summary:
- // Sets calendar's value to today's date
- this.attr('value', this.dateClassObj());
- },
-
- constructor: function(/*Object*/args){
- var dateClass = (args.datePackage && (args.datePackage != "dojo.date"))? args.datePackage + ".Date" : "Date";
- this.dateClassObj = dojo.getObject(dateClass, false);
- this.datePackage = args.datePackage || this.datePackage;
- this.dateFuncObj = dojo.getObject(this.datePackage, false);
- this.dateLocaleModule = dojo.getObject(this.datePackage + ".locale", false);
- },
-
- postMixInProperties: function(){
- // parser.instantiate sometimes passes in NaN for IE. Use default value in prototype instead.
- if(isNaN(this.value)){ delete this.value; }
- this.inherited(arguments);
- },
-
- postCreate: function(){
- this.inherited(arguments);
- dojo.setSelectable(this.domNode, false);
-
- var cloneClass = dojo.hitch(this, function(clazz, n){
- var template = dojo.query(clazz, this.domNode)[0];
- for(var i=0; i<n; i++){
- template.parentNode.appendChild(template.cloneNode(true));
- }
- });
-
- // clone the day label and calendar day templates 6 times to make 7 columns
- cloneClass(".dijitCalendarDayLabelTemplate", 6);
- cloneClass(".dijitCalendarDateTemplate", 6);
-
- // now make 6 week rows
- cloneClass(".dijitCalendarWeekTemplate", 5);
-
- // insert localized day names in the header
- var dayNames = this.dateLocaleModule.getNames('days', this.dayWidth, 'standAlone', this.lang);
- var dayOffset = dojo.cldr.supplemental.getFirstDayOfWeek(this.lang);
- dojo.query(".dijitCalendarDayLabel", this.domNode).forEach(function(label, i){
- this._setText(label, dayNames[(i + dayOffset) % 7]);
- }, this);
-
- // Fill in spacer/month dropdown element with all the month names (invisible) so that the maximum width will affect layout
- var monthNames = this.dateLocaleModule.getNames('months', 'wide', 'standAlone', this.lang);
- cloneClass(".dijitCalendarMonthLabelTemplate", monthNames.length-1);
- dojo.query(".dijitCalendarMonthLabelTemplate", this.domNode).forEach(function(node, i){
- dojo.attr(node, "month", i);
- this._setText(node, monthNames[i]);
- dojo.place(node.cloneNode(true), this.monthLabelSpacer);
- }, this);
-
- var value = this.value;
- this.value = null;
- this.attr('value', new this.dateClassObj(value));
- },
-
- _onMenuHover: function(e){
- dojo.stopEvent(e);
- dojo.toggleClass(e.target, "dijitMenuItemHover");
- },
-
- _adjustDisplay: function(/*String*/ part, /*int*/ amount){
- // summary:
- // Moves calendar forwards or backwards by months or years
- // part:
- // "month" or "year"
- // amount:
- // Number of months or years
- // tags:
- // private
- this.displayMonth = this.dateFuncObj.add(this.displayMonth, part, amount);
- this._populateGrid();
- },
-
- _onMonthToggle: function(/*Event*/ evt){
- // summary:
- // Handler for when user triggers or dismisses the month list
- // tags:
- // protected
- dojo.stopEvent(evt);
-
- if(evt.type == "mousedown"){
- var coords = dojo.position(this.monthLabelNode);
-// coords.y -= dojo.position(this.domNode, true).y;
- // Size the dropdown's width to match the label in the widget
- // so that they are horizontally aligned
- var dim = {
- width: coords.w + "px",
- top: -this.displayMonth.getMonth() * coords.h + "px"
- };
- if((dojo.isIE && dojo.isQuirks) || dojo.isIE < 7){
- dim.left = -coords.w/2 + "px";
- }
- dojo.style(this.monthDropDown, dim);
- this._popupHandler = this.connect(document, "onmouseup", "_onMonthToggle");
- }else{
- this.disconnect(this._popupHandler);
- delete this._popupHandler;
- }
-
- dojo.toggleClass(this.monthDropDown, "dijitHidden");
- dojo.toggleClass(this.monthLabelNode, "dijitVisible");
- },
-
- _onMonthSelect: function(/*Event*/ evt){
- // summary:
- // Handler for when user selects a month from a list
- // tags:
- // protected
- this._onMonthToggle(evt);
- this.displayMonth.setMonth(dojo.attr(evt.target, "month"));
- this._populateGrid();
- },
-
- _onDayClick: function(/*Event*/ evt){
- // summary:
- // Handler for day clicks, selects the date if appropriate
- // tags:
- // protected
- dojo.stopEvent(evt);
- for(var node = evt.target; node && !node.dijitDateValue; node = node.parentNode);
- if(node && !dojo.hasClass(node, "dijitCalendarDisabledDate")){
- this.attr('value', node.dijitDateValue);
- this.onValueSelected(this.attr('value'));
- }
- },
-
- _onDayMouseOver: function(/*Event*/ evt){
- // summary:
- // Handler for mouse over events on days, sets up hovered style
- // tags:
- // protected
- var node = evt.target;
- if(node && (node.dijitDateValue || node == this.previousYearLabelNode || node == this.nextYearLabelNode) ){
- dojo.addClass(node, "dijitCalendarHoveredDate");
- this._currentNode = node;
- }
- },
-
- _onDayMouseOut: function(/*Event*/ evt){
- // summary:
- // Handler for mouse out events on days, clears hovered style
- // tags:
- // protected
- if(!this._currentNode){ return; }
- for(var node = evt.relatedTarget; node;){
- if(node == this._currentNode){ return; }
- try{
- node = node.parentNode;
- }catch(x){
- node = null;
- }
- }
- dojo.removeClass(this._currentNode, "dijitCalendarHoveredDate");
- this._currentNode = null;
- },
-
-//TODO: use typematic
-//TODO: skip disabled dates without ending up in a loop
-//TODO: could optimize by avoiding populate grid when month does not change
- _onKeyPress: function(/*Event*/evt){
- // summary:
- // Provides keyboard navigation of calendar
- // tags:
- // protected
- var dk = dojo.keys,
- increment = -1,
- interval,
- newValue = this.value;
- switch(evt.keyCode){
- case dk.RIGHT_ARROW:
- increment = 1;
- //fallthrough...
- case dk.LEFT_ARROW:
- interval = "day";
- if(!this.isLeftToRight()){ increment *= -1; }
- break;
- case dk.DOWN_ARROW:
- increment = 1;
- //fallthrough...
- case dk.UP_ARROW:
- interval = "week";
- break;
- case dk.PAGE_DOWN:
- increment = 1;
- //fallthrough...
- case dk.PAGE_UP:
- interval = evt.ctrlKey ? "year" : "month";
- break;
- case dk.END:
- // go to the next month
- newValue = this.dateFuncObj.add(newValue, "month", 1);
- // subtract a day from the result when we're done
- interval = "day";
- //fallthrough...
- case dk.HOME:
- newValue = new Date(newValue).setDate(1);
- break;
- case dk.ENTER:
- this.onValueSelected(this.attr('value'));
- break;
- case dk.ESCAPE:
- //TODO
- default:
- return;
- }
- dojo.stopEvent(evt);
-
- if(interval){
- newValue = this.dateFuncObj.add(newValue, interval, increment);
- }
-
- this.attr("value", newValue);
- },
-
- onValueSelected: function(/*Date*/ date){
- // summary:
- // Notification that a date cell was selected. It may be the same as the previous value.
- // description:
- // Used by `dijit.form._DateTimeTextBox` (and thus `dijit.form.DateTextBox`)
- // to get notification when the user has clicked a date.
- // tags:
- // protected
- },
-
- onChange: function(/*Date*/ date){
- // summary:
- // Called only when the selected date has changed
- },
-
- _isSelectedDate: function(/*Date*/ dateObject, /*String?*/ locale){
- // summary:
- // Extension point so developers can subclass Calendar to
- // support multiple (concurrently) selected dates
- // tags:
- // protected extension
- return !this.dateFuncObj.compare(dateObject, this.value, "date")
- },
-
- isDisabledDate: function(/*Date*/ dateObject, /*String?*/ locale){
- // summary:
- // May be overridden to disable certain dates in the calendar e.g. `isDisabledDate=dojo.date.locale.isWeekend`
- // tags:
- // extension
-/*=====
- return false; // Boolean
-=====*/
- },
-
- getClassForDate: function(/*Date*/ dateObject, /*String?*/ locale){
- // summary:
- // May be overridden to return CSS classes to associate with the date entry for the given dateObject,
- // for example to indicate a holiday in specified locale.
- // tags:
- // extension
-
-/*=====
- return ""; // String
-=====*/
- }
- }
-);
-
-}
diff --git a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/CheckedMenuItem.js b/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/CheckedMenuItem.js
deleted file mode 100644
index e0e9082..0000000
--- a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/CheckedMenuItem.js
+++ /dev/null
@@ -1,54 +0,0 @@
-/*
- Copyright (c) 2004-2009, The Dojo Foundation All Rights Reserved.
- Available via Academic Free License >= 2.1 OR the modified BSD license.
- see: http://dojotoolkit.org/license for details
-*/
-
-
-if(!dojo._hasResource["dijit.CheckedMenuItem"]){ //_hasResource checks added by build. Do not use _hasResource directly in your code.
-dojo._hasResource["dijit.CheckedMenuItem"] = true;
-dojo.provide("dijit.CheckedMenuItem");
-
-dojo.require("dijit.MenuItem");
-
-dojo.declare("dijit.CheckedMenuItem",
- dijit.MenuItem,
- {
- // summary:
- // A checkbox-like menu item for toggling on and off
-
- templateString: dojo.cache("dijit", "templates/CheckedMenuItem.html", "<tr class=\"dijitReset dijitMenuItem\" dojoAttachPoint=\"focusNode\" waiRole=\"menuitemcheckbox\" tabIndex=\"-1\"\n\t\tdojoAttachEvent=\"onmouseenter:_onHover,onmouseleave:_onUnhover,ondijitclick:_onClick\">\n\t<td class=\"dijitReset\" waiRole=\"presentation\">\n\t\t<img src=\"${_blankGif}\" alt=\"\" class=\"dijitMenuItemIcon dijitCheckedMenuItemIcon\" dojoAttachPoint=\"iconNode\">\n\t\t<span class=\"dijitCheckedMenuItemIconChar\">✓</span>\n\t</td>\n\t<td class=\"dijitReset dijitMenuItemLabel\" colspan=\"2\" dojoAttachPoint=\"containerNode,labelNode\"></td>\n\t<td class=\"dijitReset dijitMenuItemAccelKey\" style=\"display: none\" dojoAttachPoint=\"accelKeyNode\"></td>\n\t<td class=\"dijitReset dijitMenuArrowCell\" waiRole=\"presentation\">\n\t</td>\n</tr>\n"),
-
- // checked: Boolean
- // Our checked state
- checked: false,
- _setCheckedAttr: function(/*Boolean*/ checked){
- // summary:
- // Hook so attr('checked', bool) works.
- // Sets the class and state for the check box.
- dojo.toggleClass(this.domNode, "dijitCheckedMenuItemChecked", checked);
- dijit.setWaiState(this.domNode, "checked", checked);
- this.checked = checked;
- },
-
- onChange: function(/*Boolean*/ checked){
- // summary:
- // User defined function to handle check/uncheck events
- // tags:
- // callback
- },
-
- _onClick: function(/*Event*/ e){
- // summary:
- // Clicking this item just toggles its state
- // tags:
- // private
- if(!this.disabled){
- this.attr("checked", !this.checked);
- this.onChange(this.checked);
- }
- this.inherited(arguments);
- }
- });
-
-}
diff --git a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/ColorPalette.js b/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/ColorPalette.js
deleted file mode 100644
index 82eb2cf..0000000
--- a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/ColorPalette.js
+++ /dev/null
@@ -1,365 +0,0 @@
-/*
- Copyright (c) 2004-2009, The Dojo Foundation All Rights Reserved.
- Available via Academic Free License >= 2.1 OR the modified BSD license.
- see: http://dojotoolkit.org/license for details
-*/
-
-
-if(!dojo._hasResource["dijit.ColorPalette"]){ //_hasResource checks added by build. Do not use _hasResource directly in your code.
-dojo._hasResource["dijit.ColorPalette"] = true;
-dojo.provide("dijit.ColorPalette");
-
-dojo.require("dijit._Widget");
-dojo.require("dijit._Templated");
-dojo.require("dojo.colors");
-dojo.require("dojo.i18n");
-dojo.requireLocalization("dojo", "colors", null, "ROOT,ar,ca,cs,da,de,el,es,fi,fr,he,hu,it,ja,ko,nb,nl,pl,pt,pt-pt,ru,sk,sl,sv,th,tr,zh,zh-tw");
-
-dojo.declare("dijit.ColorPalette",
- [dijit._Widget, dijit._Templated],
- {
- // summary:
- // A keyboard accessible color-picking widget
- // description:
- // Grid showing various colors, so the user can pick a certain color.
- // Can be used standalone, or as a popup.
- //
- // example:
- // | <div dojoType="dijit.ColorPalette"></div>
- //
- // example:
- // | var picker = new dijit.ColorPalette({ },srcNode);
- // | picker.startup();
-
- // defaultTimeout: Number
- // Number of milliseconds before a held key or button becomes typematic
- defaultTimeout: 500,
-
- // timeoutChangeRate: Number
- // Fraction of time used to change the typematic timer between events
- // 1.0 means that each typematic event fires at defaultTimeout intervals
- // < 1.0 means that each typematic event fires at an increasing faster rate
- timeoutChangeRate: 0.90,
-
- // palette: String
- // Size of grid, either "7x10" or "3x4".
- palette: "7x10",
-
- // value: String
- // The value of the selected color.
- value: null,
-
- // _currentFocus: [private] DomNode
- // The currently focused or hovered color.
- // Different from value, which represents the selected (i.e. clicked) color.
- _currentFocus: 0,
-
- // _xDim: [protected] Integer
- // This is the number of colors horizontally across.
- _xDim: null,
-
- // _yDim: [protected] Integer
- /// This is the number of colors vertically down.
- _yDim: null,
-
- // _palettes: [protected] Map
- // This represents the value of the colors.
- // The first level is a hashmap of the different arrays available
- // The next two dimensions represent the columns and rows of colors.
- _palettes: {
- "7x10": [["white", "seashell", "cornsilk", "lemonchiffon","lightyellow", "palegreen", "paleturquoise", "lightcyan", "lavender", "plum"],
- ["lightgray", "pink", "bisque", "moccasin", "khaki", "lightgreen", "lightseagreen", "lightskyblue", "cornflowerblue", "violet"],
- ["silver", "lightcoral", "sandybrown", "orange", "palegoldenrod", "chartreuse", "mediumturquoise", "skyblue", "mediumslateblue","orchid"],
- ["gray", "red", "orangered", "darkorange", "yellow", "limegreen", "darkseagreen", "royalblue", "slateblue", "mediumorchid"],
- ["dimgray", "crimson", "chocolate", "coral", "gold", "forestgreen", "seagreen", "blue", "blueviolet", "darkorchid"],
- ["darkslategray","firebrick","saddlebrown", "sienna", "olive", "green", "darkcyan", "mediumblue","darkslateblue", "darkmagenta" ],
- ["black", "darkred", "maroon", "brown", "darkolivegreen", "darkgreen", "midnightblue", "navy", "indigo", "purple"]],
-
- "3x4": [["white", "lime", "green", "blue"],
- ["silver", "yellow", "fuchsia", "navy"],
- ["gray", "red", "purple", "black"]]
- },
-
- // _imagePaths: [protected] Map
- // This is stores the path to the palette images
- _imagePaths: {
- "7x10": dojo.moduleUrl("dijit.themes", "a11y/colors7x10.png"),
- "3x4": dojo.moduleUrl("dijit.themes", "a11y/colors3x4.png")
- },
-
- // _paletteCoords: [protected] Map
- // This is a map that is used to calculate the coordinates of the
- // images that make up the palette.
- _paletteCoords: {
- "leftOffset": 3, "topOffset": 3,
- "cWidth": 20, "cHeight": 20
- },
-
- // templateString: String
- // The template of this widget.
- templateString: dojo.cache("dijit", "templates/ColorPalette.html", "<div class=\"dijitInline dijitColorPalette\">\n\t<div class=\"dijitColorPaletteInner\" dojoAttachPoint=\"divNode\" waiRole=\"grid\"\">\n\t\t<img class=\"dijitColorPaletteUnder\" dojoAttachPoint=\"imageNode\" waiRole=\"presentation\" alt=\"\">\n\t</div>\n</div>\n"),
-
- // _paletteDims: [protected] Object
- // Size of the supported palettes for alignment purposes.
- _paletteDims: {
- "7x10": {"width": "206px", "height": "145px"},
- "3x4": {"width": "86px", "height": "64px"}
- },
-
- // tabIndex: String
- // Widget tab index.
- tabIndex: "0",
-
- buildRendering: function(){
- // Instantiate the template, which makes a skeleton into which we'll insert a bunch of
- // <img> nodes
- this.inherited(arguments);
-
- // A name has to be given to the colorMap, this needs to be unique per Palette.
- dojo.mixin(this.divNode.style, this._paletteDims[this.palette]);
- this.imageNode.setAttribute("src", this._imagePaths[this.palette].toString());
- var choices = this._palettes[this.palette];
- this.domNode.style.position = "relative";
- this._cellNodes = [];
- this.colorNames = dojo.i18n.getLocalization("dojo", "colors", this.lang);
- var url = this._blankGif,
- colorObject = new dojo.Color(),
- coords = this._paletteCoords;
- for(var row=0; row < choices.length; row++){
- var rowNode = dojo.create("div", {
- role: "row"
- }, this.divNode);
- for(var col=0; col < choices[row].length; col++){
-
- var color = choices[row][col],
- colorValue = colorObject.setColor(dojo.Color.named[color]);
-
- var cellNode = dojo.create("span", {
- "class": "dijitPaletteCell",
- tabIndex: "-1",
- title: this.colorNames[color],
- style: {
- top: coords.topOffset + (row * coords.cHeight) + "px",
- left: coords.leftOffset + (col * coords.cWidth) + "px"
- }
- });
-
- var imgNode = dojo.create("img",{
- src: url,
- "class":"dijitPaletteImg",
- alt: this.colorNames[color]
- }, cellNode);
-
- // FIXME: color is an attribute of img?
- imgNode.color = colorValue.toHex();
- var imgStyle = imgNode.style;
- imgStyle.color = imgStyle.backgroundColor = imgNode.color;
-
- dojo.forEach(["Dijitclick", "MouseEnter", "MouseLeave", "Focus"], function(handler){
- this.connect(cellNode, "on" + handler.toLowerCase(), "_onCell" + handler);
- }, this);
-
- dojo.place(cellNode, rowNode);
-
- dijit.setWaiRole(cellNode, "gridcell");
- cellNode.index = this._cellNodes.length;
- this._cellNodes.push(cellNode);
- }
- }
- this._xDim = choices[0].length;
- this._yDim = choices.length;
-
- // Now set all events
- // The palette itself is navigated to with the tab key on the keyboard
- // Keyboard navigation within the Palette is with the arrow keys
- // Spacebar selects the color.
- // For the up key the index is changed by negative the x dimension.
-
- var keyIncrementMap = {
- UP_ARROW: -this._xDim,
- // The down key the index is increase by the x dimension.
- DOWN_ARROW: this._xDim,
- // Right and left move the index by 1.
- RIGHT_ARROW: 1,
- LEFT_ARROW: -1
- };
- for(var key in keyIncrementMap){
- this._connects.push(dijit.typematic.addKeyListener(this.domNode,
- {charOrCode:dojo.keys[key], ctrlKey:false, altKey:false, shiftKey:false},
- this,
- function(){
- var increment = keyIncrementMap[key];
- return function(count){ this._navigateByKey(increment, count); };
- }(),
- this.timeoutChangeRate, this.defaultTimeout));
- }
- },
-
- postCreate: function(){
- this.inherited(arguments);
-
- // Set initial navigable node. At any point in time there's exactly one
- // cell with tabIndex != -1. If focus is inside the ColorPalette then
- // focus is on that cell.
- // TODO: if we set aria info (for the current value) on the ColorPalette itself then can we avoid
- // having to focus each individual cell?
- this._currentFocus = this._cellNodes[0];
- dojo.attr(this._currentFocus, "tabIndex", this.tabIndex);
- },
-
- focus: function(){
- // summary:
- // Focus this ColorPalette. Puts focus on the most recently focused cell.
-
- // The cell already has tabIndex set, just need to set CSS and focus it
- dojo.addClass(this._currentFocus, "dijitPaletteCellHighlight");
- dijit.focus(this._currentFocus);
- },
-
- onChange: function(color){
- // summary:
- // Callback when a color is selected.
- // color: String
- // Hex value corresponding to color.
-// console.debug("Color selected is: "+color);
- },
-
- _onFocus: function(){
- // summary:
- // Handler for when the ColorPalette gets focus (because a cell inside
- // the ColorPalette got focus)
- // tags:
- // protected
-
- dojo.addClass(this._currentFocus, "dijitPaletteCellHighlight");
- this.inherited(arguments);
- },
-
- _onBlur: function(){
- // summary:
- // Handler for when the ColorPalette loses focus
- // tags:
- // protected
-
- // Just to be the same as 1.3, when I am focused again go to first (0,0) cell rather than
- // currently focused node.
- dojo.attr(this._currentFocus, "tabIndex", "-1");
- dojo.removeClass(this._currentFocus, "dijitPaletteCellHighlight");
- this._currentFocus = this._cellNodes[0];
- dojo.attr(this._currentFocus, "tabIndex", this.tabIndex);
-
- this.inherited(arguments);
- },
-
- _onCellDijitclick: function(/*Event*/ evt){
- // summary:
- // Handler for click, enter key & space key. Selects the color.
- // evt:
- // The event.
- // tags:
- // private
-
- var target = evt.currentTarget;
- this._selectColor(target);
- dojo.stopEvent(evt);
- },
-
- _onCellMouseEnter: function(/*Event*/ evt){
- // summary:
- // Handler for onMouseEnter event on a cell. Put highlight on the color under the mouse.
- // evt:
- // The mouse event.
- // tags:
- // private
-
- var target = evt.currentTarget;
- this._setCurrent(target);
- },
-
- _onCellMouseLeave: function(/*Event*/ evt){
- // summary:
- // Handler for onMouseLeave event on a cell. Remove highlight on the color under the mouse.
- // evt:
- // The mouse event.
- // tags:
- // private
-
- dojo.removeClass(this._currentFocus, "dijitPaletteCellHighlight");
- },
-
- _onCellFocus: function(/*Event*/ evt){
- // summary:
- // Handler for onFocus of a cell.
- // description:
- // Removes highlight of the color that just lost focus, and highlights
- // the new color. Also moves the tabIndex setting to the new cell.
- //
- // evt:
- // The focus event.
- // tags:
- // private
-
- this._setCurrent(evt.currentTarget);
- },
-
- _setCurrent: function(/*Node*/ node){
- // summary:
- // Called when a color is hovered or focused.
- // description:
- // Removes highlight of the old color, and highlights
- // the new color. Also moves the tabIndex setting to the new cell.
- // tags:
- // protected
- if("_currentFocus" in this){
- // Remove highlight and tabIndex on old cell
- dojo.attr(this._currentFocus, "tabIndex", "-1");
- dojo.removeClass(this._currentFocus, "dijitPaletteCellHighlight");
- }
-
- // Set highlight and tabIndex of new cell
- this._currentFocus = node;
- if(node){
- dojo.attr(node, "tabIndex", this.tabIndex);
- dojo.addClass(node, "dijitPaletteCellHighlight");
- }
- },
-
- _selectColor: function(selectNode){
- // summary:
- // This selects a color. It triggers the onChange event
- // area:
- // The area node that covers the color being selected.
- // tags:
- // private
- var img = selectNode.getElementsByTagName("img")[0];
- this.onChange(this.value = img.color);
- },
-
- _navigateByKey: function(increment, typeCount){
- // summary:
- // This is the callback for typematic.
- // It changes the focus and the highlighed color.
- // increment:
- // How much the key is navigated.
- // typeCount:
- // How many times typematic has fired.
- // tags:
- // private
-
- // typecount == -1 means the key is released.
- if(typeCount == -1){ return; }
-
- var newFocusIndex = this._currentFocus.index + increment;
- if(newFocusIndex < this._cellNodes.length && newFocusIndex > -1)
- {
- var focusNode = this._cellNodes[newFocusIndex];
- this._setCurrent(focusNode);
-
- // Actually focus the node, for the benefit of screen readers.
- // Use setTimeout because IE doesn't like changing focus inside of an event handler
- setTimeout(dojo.hitch(dijit, "focus", focusNode), 0);
- }
- }
-});
-
-}
diff --git a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/Declaration.js b/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/Declaration.js
deleted file mode 100644
index 9403517..0000000
--- a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/Declaration.js
+++ /dev/null
@@ -1,97 +0,0 @@
-/*
- Copyright (c) 2004-2009, The Dojo Foundation All Rights Reserved.
- Available via Academic Free License >= 2.1 OR the modified BSD license.
- see: http://dojotoolkit.org/license for details
-*/
-
-
-if(!dojo._hasResource["dijit.Declaration"]){ //_hasResource checks added by build. Do not use _hasResource directly in your code.
-dojo._hasResource["dijit.Declaration"] = true;
-dojo.provide("dijit.Declaration");
-dojo.require("dijit._Widget");
-dojo.require("dijit._Templated");
-
-dojo.declare(
- "dijit.Declaration",
- dijit._Widget,
- {
- // summary:
- // The Declaration widget allows a developer to declare new widget
- // classes directly from a snippet of markup.
-
- // _noScript: [private] Boolean
- // Flag to parser to leave alone the script tags contained inside of me
- _noScript: true,
-
- // widgetClass: String
- // Name of class being declared, ex: "acme.myWidget"
- widgetClass: "",
-
- // propList: Object
- // Set of attributes for this widget along with default values, ex:
- // {delay: 100, title: "hello world"}
- defaults: null,
-
- // mixins: String[]
- // List containing the prototype for this widget, and also any mixins,
- // ex: ["dijit._Widget", "dijit._Container"]
- mixins: [],
-
- buildRendering: function(){
- var src = this.srcNodeRef.parentNode.removeChild(this.srcNodeRef),
- methods = dojo.query("> script[type^='dojo/method'][event]", src).orphan(),
- postscriptConnects = dojo.query("> script[type^='dojo/method']", src).orphan(),
- regularConnects = dojo.query("> script[type^='dojo/connect']", src).orphan(),
- srcType = src.nodeName;
-
- var propList = this.defaults || {};
-
- // For all methods defined like <script type="dojo/method" event="foo">,
- // add that method to prototype
- dojo.forEach(methods, function(s){
- var evt = s.getAttribute("event"),
- func = dojo.parser._functionFromScript(s);
- propList[evt] = func;
- });
-
- // map array of strings like [ "dijit.form.Button" ] to array of mixin objects
- // (note that dojo.map(this.mixins, dojo.getObject) doesn't work because it passes
- // a bogus third argument to getObject(), confusing it)
- this.mixins = this.mixins.length ?
- dojo.map(this.mixins, function(name){ return dojo.getObject(name); } ) :
- [ dijit._Widget, dijit._Templated ];
-
- propList.widgetsInTemplate = true;
- propList._skipNodeCache = true;
- propList.templateString = "<"+srcType+" class='"+src.className+"' dojoAttachPoint='"+(src.getAttribute("dojoAttachPoint") || '')+"' dojoAttachEvent='"+(src.getAttribute("dojoAttachEvent") || '')+"' >"+src.innerHTML.replace(/\%7B/g,"{").replace(/\%7D/g,"}")+"</"+srcType+">";
-
- // strip things so we don't create stuff under us in the initial setup phase
- dojo.query("[dojoType]", src).forEach(function(node){
- node.removeAttribute("dojoType");
- });
-
- // create the new widget class
- var wc = dojo.declare(
- this.widgetClass,
- this.mixins,
- propList
- );
-
- // Handle <script> blocks of form:
- // <script type="dojo/connect" event="foo">
- // and
- // <script type="dojo/method">
- // (Note that the second one is just shorthand for a dojo/connect to postscript)
- // Since this is a connect in the declaration, we are actually connection to the method
- // in the _prototype_.
- var connects = regularConnects.concat(postscriptConnects);
- dojo.forEach(connects, function(s){
- var evt = s.getAttribute("event") || "postscript",
- func = dojo.parser._functionFromScript(s);
- dojo.connect(wc.prototype, evt, func);
- });
- }
- }
-);
-
-}
diff --git a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/Dialog.js b/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/Dialog.js
deleted file mode 100644
index d7e7c06..0000000
--- a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/Dialog.js
+++ /dev/null
@@ -1,529 +0,0 @@
-/*
- Copyright (c) 2004-2009, The Dojo Foundation All Rights Reserved.
- Available via Academic Free License >= 2.1 OR the modified BSD license.
- see: http://dojotoolkit.org/license for details
-*/
-
-
-if(!dojo._hasResource["dijit.Dialog"]){ //_hasResource checks added by build. Do not use _hasResource directly in your code.
-dojo._hasResource["dijit.Dialog"] = true;
-dojo.provide("dijit.Dialog");
-
-dojo.require("dojo.dnd.move");
-dojo.require("dojo.dnd.TimedMoveable");
-dojo.require("dojo.fx");
-
-dojo.require("dijit._Widget");
-dojo.require("dijit._Templated");
-dojo.require("dijit.form._FormMixin");
-dojo.require("dijit._DialogMixin");
-dojo.require("dijit.DialogUnderlay");
-dojo.require("dijit.layout.ContentPane");
-dojo.requireLocalization("dijit", "common", null, "ROOT,ar,ca,cs,da,de,el,es,fi,fr,he,hu,it,ja,ko,nb,nl,pl,pt,pt-pt,ru,sk,sl,sv,th,tr,zh,zh-tw");
-
-/*=====
-dijit._underlay = function(kwArgs){
- // summary:
- // A shared instance of a `dijit.DialogUnderlay`
- //
- // description:
- // A shared instance of a `dijit.DialogUnderlay` created and
- // used by `dijit.Dialog`, though never created until some Dialog
- // or subclass thereof is shown.
-};
-=====*/
-
-dojo.declare(
- "dijit._DialogBase",
- [dijit._Templated, dijit.form._FormMixin, dijit._DialogMixin],
- {
- // summary:
- // A modal dialog Widget
- //
- // description:
- // Pops up a modal dialog window, blocking access to the screen
- // and also graying out the screen Dialog is extended from
- // ContentPane so it supports all the same parameters (href, etc.)
- //
- // example:
- // | <div dojoType="dijit.Dialog" href="test.html"></div>
- //
- // example:
- // | var foo = new dijit.Dialog({ title: "test dialog", content: "test content" };
- // | dojo.body().appendChild(foo.domNode);
- // | foo.startup();
-
- templateString: dojo.cache("dijit", "templates/Dialog.html", "<div class=\"dijitDialog\" tabindex=\"-1\" waiRole=\"dialog\" waiState=\"labelledby-${id}_title\">\n\t<div dojoAttachPoint=\"titleBar\" class=\"dijitDialogTitleBar\">\n\t<span dojoAttachPoint=\"titleNode\" class=\"dijitDialogTitle\" id=\"${id}_title\"></span>\n\t<span dojoAttachPoint=\"closeButtonNode\" class=\"dijitDialogCloseIcon\" dojoAttachEvent=\"onclick: onCancel, onmouseenter: _onCloseEnter, onmouseleave: _onCloseLeave\" title=\"${buttonCancel}\">\n\t\t<span dojoAttachPoint=\"closeText\" class=\"closeText\" title=\"${buttonCancel}\">x</span>\n\t</span>\n\t</div>\n\t\t<div dojoAttachPoint=\"containerNode\" class=\"dijitDialogPaneContent\"></div>\n</div>\n"),
-
- attributeMap: dojo.delegate(dijit._Widget.prototype.attributeMap, {
- title: [
- { node: "titleNode", type: "innerHTML" },
- { node: "titleBar", type: "attribute" }
- ],
- "aria-describedby":""
- }),
-
- // open: Boolean
- // True if Dialog is currently displayed on screen.
- open: false,
-
- // duration: Integer
- // The time in milliseconds it takes the dialog to fade in and out
- duration: dijit.defaultDuration,
-
- // refocus: Boolean
- // A Toggle to modify the default focus behavior of a Dialog, which
- // is to re-focus the element which had focus before being opened.
- // False will disable refocusing. Default: true
- refocus: true,
-
- // autofocus: Boolean
- // A Toggle to modify the default focus behavior of a Dialog, which
- // is to focus on the first dialog element after opening the dialog.
- // False will disable autofocusing. Default: true
- autofocus: true,
-
- // _firstFocusItem: [private] [readonly] DomNode
- // The pointer to the first focusable node in the dialog.
- // Set by `dijit._DialogMixin._getFocusItems`.
- _firstFocusItem: null,
-
- // _lastFocusItem: [private] [readonly] DomNode
- // The pointer to which node has focus prior to our dialog.
- // Set by `dijit._DialogMixin._getFocusItems`.
- _lastFocusItem: null,
-
- // doLayout: [protected] Boolean
- // Don't change this parameter from the default value.
- // This ContentPane parameter doesn't make sense for Dialog, since Dialog
- // is never a child of a layout container, nor can you specify the size of
- // Dialog in order to control the size of an inner widget.
- doLayout: false,
-
- // draggable: Boolean
- // Toggles the moveable aspect of the Dialog. If true, Dialog
- // can be dragged by it's title. If false it will remain centered
- // in the viewport.
- draggable: true,
-
- //aria-describedby: String
- // Allows the user to add an aria-describedby attribute onto the dialog. The value should
- // be the id of the container element of text that describes the dialog purpose (usually
- // the first text in the dialog).
- // <div dojoType="dijit.Dialog" aria-describedby="intro" .....>
- // <div id="intro">Introductory text</div>
- // <div>rest of dialog contents</div>
- // </div>
- "aria-describedby":"",
-
- postMixInProperties: function(){
- var _nlsResources = dojo.i18n.getLocalization("dijit", "common");
- dojo.mixin(this, _nlsResources);
- this.inherited(arguments);
- },
-
- postCreate: function(){
- dojo.style(this.domNode, {
- display: "none",
- position:"absolute"
- });
- dojo.body().appendChild(this.domNode);
-
- this.inherited(arguments);
-
- this.connect(this, "onExecute", "hide");
- this.connect(this, "onCancel", "hide");
- this._modalconnects = [];
- },
-
- onLoad: function(){
- // summary:
- // Called when data has been loaded from an href.
- // Unlike most other callbacks, this function can be connected to (via `dojo.connect`)
- // but should *not* be overriden.
- // tags:
- // callback
-
- // when href is specified we need to reposition the dialog after the data is loaded
- this._position();
- this.inherited(arguments);
- },
-
- _endDrag: function(e){
- // summary:
- // Called after dragging the Dialog. Saves the position of the dialog in the viewport.
- // tags:
- // private
- if(e && e.node && e.node === this.domNode){
- this._relativePosition = dojo.position(e.node);
- }
- },
-
- _setup: function(){
- // summary:
- // Stuff we need to do before showing the Dialog for the first
- // time (but we defer it until right beforehand, for
- // performance reasons).
- // tags:
- // private
-
- var node = this.domNode;
-
- if(this.titleBar && this.draggable){
- this._moveable = (dojo.isIE == 6) ?
- new dojo.dnd.TimedMoveable(node, { handle: this.titleBar }) : // prevent overload, see #5285
- new dojo.dnd.Moveable(node, { handle: this.titleBar, timeout: 0 });
- dojo.subscribe("/dnd/move/stop",this,"_endDrag");
- }else{
- dojo.addClass(node,"dijitDialogFixed");
- }
-
- this.underlayAttrs = {
- dialogId: this.id,
- "class": dojo.map(this["class"].split(/\s/), function(s){ return s+"_underlay"; }).join(" ")
- };
-
- this._fadeIn = dojo.fadeIn({
- node: node,
- duration: this.duration,
- beforeBegin: dojo.hitch(this, function(){
- var underlay = dijit._underlay;
- if(!underlay){
- underlay = dijit._underlay = new dijit.DialogUnderlay(this.underlayAttrs);
- }else{
- underlay.attr(this.underlayAttrs);
- }
-
- var zIndex = 948 + dijit._dialogStack.length*2;
- dojo.style(dijit._underlay.domNode, 'zIndex', zIndex);
- dojo.style(this.domNode, 'zIndex', zIndex + 1);
- underlay.show();
- }),
- onEnd: dojo.hitch(this, function(){
- if(this.autofocus){
- // find focusable Items each time dialog is shown since if dialog contains a widget the
- // first focusable items can change
- this._getFocusItems(this.domNode);
- dijit.focus(this._firstFocusItem);
- }
- })
- });
-
- this._fadeOut = dojo.fadeOut({
- node: node,
- duration: this.duration,
- onEnd: dojo.hitch(this, function(){
- node.style.display = "none";
-
- // Restore the previous dialog in the stack, or if this is the only dialog
- // then restore to original page
- var ds = dijit._dialogStack;
- if(ds.length == 0){
- dijit._underlay.hide();
- }else{
- dojo.style(dijit._underlay.domNode, 'zIndex', 948 + ds.length*2);
- dijit._underlay.attr(ds[ds.length-1].underlayAttrs);
- }
-
- // Restore focus to wherever it was before this dialog was displayed
- if(this.refocus){
- var focus = this._savedFocus;
-
- // If we are returning control to a previous dialog but for some reason
- // that dialog didn't have a focused field, set focus to first focusable item.
- // This situation could happen if two dialogs appeared at nearly the same time,
- // since a dialog doesn't set it's focus until the fade-in is finished.
- if(ds.length > 0){
- var pd = ds[ds.length-1];
- if(!dojo.isDescendant(focus.node, pd.domNode)){
- pd._getFocusItems(pd.domNode);
- focus = pd._firstFocusItem;
- }
- }
-
- dijit.focus(focus);
- }
- })
- });
- },
-
- uninitialize: function(){
- var wasPlaying = false;
- if(this._fadeIn && this._fadeIn.status() == "playing"){
- wasPlaying = true;
- this._fadeIn.stop();
- }
- if(this._fadeOut && this._fadeOut.status() == "playing"){
- wasPlaying = true;
- this._fadeOut.stop();
- }
-
- // Hide the underlay, unless the underlay widget has already been destroyed
- // because we are being called during page unload (when all widgets are destroyed)
- if((this.open || wasPlaying) && !dijit._underlay._destroyed){
- dijit._underlay.hide();
- }
- if(this._moveable){
- this._moveable.destroy();
- }
- this.inherited(arguments);
- },
-
- _size: function(){
- // summary:
- // If necessary, shrink dialog contents so dialog fits in viewport
- // tags:
- // private
-
- this._checkIfSingleChild();
-
- // If we resized the dialog contents earlier, reset them back to original size, so
- // that if the user later increases the viewport size, the dialog can display w/out a scrollbar.
- // Need to do this before the dojo.marginBox(this.domNode) call below.
- if(this._singleChild){
- if(this._singleChildOriginalStyle){
- this._singleChild.domNode.style.cssText = this._singleChildOriginalStyle;
- }
- delete this._singleChildOriginalStyle;
- }else{
- dojo.style(this.containerNode, {
- width:"auto",
- height:"auto"
- });
- }
-
- var mb = dojo.marginBox(this.domNode);
- var viewport = dijit.getViewport();
- if(mb.w >= viewport.w || mb.h >= viewport.h){
- // Reduce size of dialog contents so that dialog fits in viewport
-
- var w = Math.min(mb.w, Math.floor(viewport.w * 0.75)),
- h = Math.min(mb.h, Math.floor(viewport.h * 0.75));
-
- if(this._singleChild && this._singleChild.resize){
- this._singleChildOriginalStyle = this._singleChild.domNode.style.cssText;
- this._singleChild.resize({w: w, h: h});
- }else{
- dojo.style(this.containerNode, {
- width: w + "px",
- height: h + "px",
- overflow: "auto",
- position: "relative" // workaround IE bug moving scrollbar or dragging dialog
- });
- }
- }else{
- if(this._singleChild && this._singleChild.resize){
- this._singleChild.resize();
- }
- }
- },
-
- _position: function(){
- // summary:
- // Position modal dialog in the viewport. If no relative offset
- // in the viewport has been determined (by dragging, for instance),
- // center the node. Otherwise, use the Dialog's stored relative offset,
- // and position the node to top: left: values based on the viewport.
- // tags:
- // private
- if(!dojo.hasClass(dojo.body(),"dojoMove")){
- var node = this.domNode,
- viewport = dijit.getViewport(),
- p = this._relativePosition,
- bb = p ? null : dojo._getBorderBox(node),
- l = Math.floor(viewport.l + (p ? p.x : (viewport.w - bb.w) / 2)),
- t = Math.floor(viewport.t + (p ? p.y : (viewport.h - bb.h) / 2))
- ;
- dojo.style(node,{
- left: l + "px",
- top: t + "px"
- });
- }
- },
-
- _onKey: function(/*Event*/ evt){
- // summary:
- // Handles the keyboard events for accessibility reasons
- // tags:
- // private
-
- var ds = dijit._dialogStack;
- if(ds[ds.length-1] != this){
- // console.debug(this.id + ': skipping because', this, 'is not the active dialog');
- return;
- }
-
- if(evt.charOrCode){
- var dk = dojo.keys;
- var node = evt.target;
- if(evt.charOrCode === dk.TAB){
- this._getFocusItems(this.domNode);
- }
- var singleFocusItem = (this._firstFocusItem == this._lastFocusItem);
- // see if we are shift-tabbing from first focusable item on dialog
- if(node == this._firstFocusItem && evt.shiftKey && evt.charOrCode === dk.TAB){
- if(!singleFocusItem){
- dijit.focus(this._lastFocusItem); // send focus to last item in dialog
- }
- dojo.stopEvent(evt);
- }else if(node == this._lastFocusItem && evt.charOrCode === dk.TAB && !evt.shiftKey){
- if(!singleFocusItem){
- dijit.focus(this._firstFocusItem); // send focus to first item in dialog
- }
- dojo.stopEvent(evt);
- }else{
- // see if the key is for the dialog
- while(node){
- if(node == this.domNode || dojo.hasClass(node, "dijitPopup")){
- if(evt.charOrCode == dk.ESCAPE){
- this.onCancel();
- }else{
- return; // just let it go
- }
- }
- node = node.parentNode;
- }
- // this key is for the disabled document window
- if(evt.charOrCode !== dk.TAB){ // allow tabbing into the dialog for a11y
- dojo.stopEvent(evt);
- // opera won't tab to a div
- }else if(!dojo.isOpera){
- try{
- this._firstFocusItem.focus();
- }catch(e){ /*squelch*/ }
- }
- }
- }
- },
-
- show: function(){
- // summary:
- // Display the dialog
- if(this.open){ return; }
-
- // first time we show the dialog, there's some initialization stuff to do
- if(!this._alreadyInitialized){
- this._setup();
- this._alreadyInitialized=true;
- }
-
- if(this._fadeOut.status() == "playing"){
- this._fadeOut.stop();
- }
-
- this._modalconnects.push(dojo.connect(window, "onscroll", this, "layout"));
- this._modalconnects.push(dojo.connect(window, "onresize", this, function(){
- // IE gives spurious resize events and can actually get stuck
- // in an infinite loop if we don't ignore them
- var viewport = dijit.getViewport();
- if(!this._oldViewport ||
- viewport.h != this._oldViewport.h ||
- viewport.w != this._oldViewport.w){
- this.layout();
- this._oldViewport = viewport;
- }
- }));
- this._modalconnects.push(dojo.connect(dojo.doc.documentElement, "onkeypress", this, "_onKey"));
-
- dojo.style(this.domNode, {
- opacity:0,
- display:""
- });
-
- this.open = true;
- this._onShow(); // lazy load trigger
-
- this._size();
- this._position();
- dijit._dialogStack.push(this);
- this._fadeIn.play();
-
- this._savedFocus = dijit.getFocus(this);
- },
-
- hide: function(){
- // summary:
- // Hide the dialog
-
- // if we haven't been initialized yet then we aren't showing and we can just return
- // or if we aren't the active dialog, don't allow us to close yet
- var ds = dijit._dialogStack;
- if(!this._alreadyInitialized || this != ds[ds.length-1]){
- return;
- }
-
- if(this._fadeIn.status() == "playing"){
- this._fadeIn.stop();
- }
-
- // throw away current active dialog from stack -- making the previous dialog or the node on the original page active
- ds.pop();
-
- this._fadeOut.play();
-
- if(this._scrollConnected){
- this._scrollConnected = false;
- }
- dojo.forEach(this._modalconnects, dojo.disconnect);
- this._modalconnects = [];
-
- if(this._relativePosition){
- delete this._relativePosition;
- }
- this.open = false;
-
- this.onHide();
- },
-
- layout: function(){
- // summary:
- // Position the Dialog and the underlay
- // tags:
- // private
- if(this.domNode.style.display != "none"){
- if(dijit._underlay){ // avoid race condition during show()
- dijit._underlay.layout();
- }
- this._position();
- }
- },
-
- destroy: function(){
- dojo.forEach(this._modalconnects, dojo.disconnect);
- if(this.refocus && this.open){
- setTimeout(dojo.hitch(dijit,"focus",this._savedFocus), 25);
- }
- this.inherited(arguments);
- },
-
- _onCloseEnter: function(){
- // summary:
- // Called when user hovers over close icon
- // tags:
- // private
- dojo.addClass(this.closeButtonNode, "dijitDialogCloseIcon-hover");
- },
-
- _onCloseLeave: function(){
- // summary:
- // Called when user stops hovering over close icon
- // tags:
- // private
- dojo.removeClass(this.closeButtonNode, "dijitDialogCloseIcon-hover");
- }
- }
-);
-
-dojo.declare(
- "dijit.Dialog",
- [dijit.layout.ContentPane, dijit._DialogBase],
- {}
-);
-
-// Stack of currenctly displayed dialogs, layered on top of each other
-dijit._dialogStack = [];
-
-// For back-compat. TODO: remove in 2.0
-dojo.require("dijit.TooltipDialog");
-
-}
diff --git a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/DialogUnderlay.js b/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/DialogUnderlay.js
deleted file mode 100644
index d6e6090..0000000
--- a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/DialogUnderlay.js
+++ /dev/null
@@ -1,115 +0,0 @@
-/*
- Copyright (c) 2004-2009, The Dojo Foundation All Rights Reserved.
- Available via Academic Free License >= 2.1 OR the modified BSD license.
- see: http://dojotoolkit.org/license for details
-*/
-
-
-if(!dojo._hasResource["dijit.DialogUnderlay"]){ //_hasResource checks added by build. Do not use _hasResource directly in your code.
-dojo._hasResource["dijit.DialogUnderlay"] = true;
-dojo.provide("dijit.DialogUnderlay");
-
-dojo.require("dijit._Widget");
-dojo.require("dijit._Templated");
-
-dojo.declare(
- "dijit.DialogUnderlay",
- [dijit._Widget, dijit._Templated],
- {
- // summary:
- // The component that blocks the screen behind a `dijit.Dialog`
- //
- // description:
- // A component used to block input behind a `dijit.Dialog`. Only a single
- // instance of this widget is created by `dijit.Dialog`, and saved as
- // a reference to be shared between all Dialogs as `dijit._underlay`
- //
- // The underlay itself can be styled based on and id:
- // | #myDialog_underlay { background-color:red; }
- //
- // In the case of `dijit.Dialog`, this id is based on the id of the Dialog,
- // suffixed with _underlay.
-
- // Template has two divs; outer div is used for fade-in/fade-out, and also to hold background iframe.
- // Inner div has opacity specified in CSS file.
- templateString: "<div class='dijitDialogUnderlayWrapper'><div class='dijitDialogUnderlay' dojoAttachPoint='node'></div></div>",
-
- // Parameters on creation or updatable later
-
- // dialogId: String
- // Id of the dialog.... DialogUnderlay's id is based on this id
- dialogId: "",
-
- // class: String
- // This class name is used on the DialogUnderlay node, in addition to dijitDialogUnderlay
- "class": "",
-
- attributeMap: { id: "domNode" },
-
- _setDialogIdAttr: function(id){
- dojo.attr(this.node, "id", id + "_underlay");
- },
-
- _setClassAttr: function(clazz){
- this.node.className = "dijitDialogUnderlay " + clazz;
- },
-
- postCreate: function(){
- // summary:
- // Append the underlay to the body
- dojo.body().appendChild(this.domNode);
- },
-
- layout: function(){
- // summary:
- // Sets the background to the size of the viewport
- //
- // description:
- // Sets the background to the size of the viewport (rather than the size
- // of the document) since we need to cover the whole browser window, even
- // if the document is only a few lines long.
- // tags:
- // private
-
- var is = this.node.style,
- os = this.domNode.style;
-
- // hide the background temporarily, so that the background itself isn't
- // causing scrollbars to appear (might happen when user shrinks browser
- // window and then we are called to resize)
- os.display = "none";
-
- // then resize and show
- var viewport = dijit.getViewport();
- os.top = viewport.t + "px";
- os.left = viewport.l + "px";
- is.width = viewport.w + "px";
- is.height = viewport.h + "px";
- os.display = "block";
- },
-
- show: function(){
- // summary:
- // Show the dialog underlay
- this.domNode.style.display = "block";
- this.layout();
- this.bgIframe = new dijit.BackgroundIframe(this.domNode);
- },
-
- hide: function(){
- // summary:
- // Hides the dialog underlay
- this.bgIframe.destroy();
- this.domNode.style.display = "none";
- },
-
- uninitialize: function(){
- if(this.bgIframe){
- this.bgIframe.destroy();
- }
- this.inherited(arguments);
- }
- }
-);
-
-}
diff --git a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/Editor.js b/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/Editor.js
deleted file mode 100644
index fc37881..0000000
--- a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/Editor.js
+++ /dev/null
@@ -1,604 +0,0 @@
-/*
- Copyright (c) 2004-2009, The Dojo Foundation All Rights Reserved.
- Available via Academic Free License >= 2.1 OR the modified BSD license.
- see: http://dojotoolkit.org/license for details
-*/
-
-
-if(!dojo._hasResource["dijit.Editor"]){ //_hasResource checks added by build. Do not use _hasResource directly in your code.
-dojo._hasResource["dijit.Editor"] = true;
-dojo.provide("dijit.Editor");
-dojo.require("dijit._editor.RichText");
-dojo.require("dijit.Toolbar");
-dojo.require("dijit.ToolbarSeparator");
-dojo.require("dijit._editor._Plugin");
-dojo.require("dijit._editor.plugins.EnterKeyHandling");
-dojo.require("dijit._editor.range");
-dojo.require("dijit._Container");
-dojo.require("dojo.i18n");
-dojo.requireLocalization("dijit._editor", "commands", null, "ROOT,ar,ca,cs,da,de,el,es,fi,fr,he,hu,it,ja,ko,nb,nl,pl,pt,pt-pt,ru,sk,sl,sv,th,tr,zh,zh-tw");
-
-dojo.declare(
- "dijit.Editor",
- dijit._editor.RichText,
- {
- // summary:
- // A rich text Editing widget
- //
- // description:
- // This widget provides basic WYSIWYG editing features, based on the browser's
- // underlying rich text editing capability, accompanied by a toolbar (`dijit.Toolbar`).
- // A plugin model is available to extend the editor's capabilities as well as the
- // the options available in the toolbar. Content generation may vary across
- // browsers, and clipboard operations may have different results, to name
- // a few limitations. Note: this widget should not be used with the HTML
- // <TEXTAREA> tag -- see dijit._editor.RichText for details.
-
- // plugins: Object[]
- // A list of plugin names (as strings) or instances (as objects)
- // for this widget.
- //
- // When declared in markup, it might look like:
- // | plugins="['bold',{name:'dijit._editor.plugins.FontChoice', command:'fontName', generic:true}]"
- plugins: null,
-
- // extraPlugins: Object[]
- // A list of extra plugin names which will be appended to plugins array
- extraPlugins: null,
-
- constructor: function(){
- // summary:
- // Runs on widget initialization to setup arrays etc.
- // tags:
- // private
-
- if(!dojo.isArray(this.plugins)){
- this.plugins=["undo","redo","|","cut","copy","paste","|","bold","italic","underline","strikethrough","|",
- "insertOrderedList","insertUnorderedList","indent","outdent","|","justifyLeft","justifyRight","justifyCenter","justifyFull",
- "dijit._editor.plugins.EnterKeyHandling" /*, "createLink"*/];
- }
-
- this._plugins=[];
- this._editInterval = this.editActionInterval * 1000;
-
- //IE will always lose focus when other element gets focus, while for FF and safari,
- //when no iframe is used, focus will be lost whenever another element gets focus.
- //For IE, we can connect to onBeforeDeactivate, which will be called right before
- //the focus is lost, so we can obtain the selected range. For other browsers,
- //no equivelent of onBeforeDeactivate, so we need to do two things to make sure
- //selection is properly saved before focus is lost: 1) when user clicks another
- //element in the page, in which case we listen to mousedown on the entire page and
- //see whether user clicks out of a focus editor, if so, save selection (focus will
- //only lost after onmousedown event is fired, so we can obtain correct caret pos.)
- //2) when user tabs away from the editor, which is handled in onKeyDown below.
- if(dojo.isIE){
- this.events.push("onBeforeDeactivate");
- this.events.push("onBeforeActivate");
- }
- },
-
- postCreate: function(){
- //for custom undo/redo
- if(this.customUndo){
- dojo['require']("dijit._editor.range");
- this._steps=this._steps.slice(0);
- this._undoedSteps=this._undoedSteps.slice(0);
-// this.addKeyHandler('z',this.KEY_CTRL,this.undo);
-// this.addKeyHandler('y',this.KEY_CTRL,this.redo);
- }
- if(dojo.isArray(this.extraPlugins)){
- this.plugins=this.plugins.concat(this.extraPlugins);
- }
-
-// try{
- this.inherited(arguments);
-// dijit.Editor.superclass.postCreate.apply(this, arguments);
-
- this.commands = dojo.i18n.getLocalization("dijit._editor", "commands", this.lang);
-
- if(!this.toolbar){
- // if we haven't been assigned a toolbar, create one
- this.toolbar = new dijit.Toolbar({});
- dojo.place(this.toolbar.domNode, this.editingArea, "before");
- }
-
- dojo.forEach(this.plugins, this.addPlugin, this);
- this.onNormalizedDisplayChanged(); //update toolbar button status
-// }catch(e){ console.debug(e); }
-
- this.toolbar.startup();
- },
- destroy: function(){
- dojo.forEach(this._plugins, function(p){
- if(p && p.destroy){
- p.destroy();
- }
- });
- this._plugins=[];
- this.toolbar.destroyRecursive();
- delete this.toolbar;
- this.inherited(arguments);
- },
- addPlugin: function(/*String||Object*/plugin, /*Integer?*/index){
- // summary:
- // takes a plugin name as a string or a plugin instance and
- // adds it to the toolbar and associates it with this editor
- // instance. The resulting plugin is added to the Editor's
- // plugins array. If index is passed, it's placed in the plugins
- // array at that index. No big magic, but a nice helper for
- // passing in plugin names via markup.
- //
- // plugin: String, args object or plugin instance
- //
- // args:
- // This object will be passed to the plugin constructor
- //
- // index: Integer
- // Used when creating an instance from
- // something already in this.plugins. Ensures that the new
- // instance is assigned to this.plugins at that index.
- var args=dojo.isString(plugin)?{name:plugin}:plugin;
- if(!args.setEditor){
- var o={"args":args,"plugin":null,"editor":this};
- dojo.publish(dijit._scopeName + ".Editor.getPlugin",[o]);
- if(!o.plugin){
- var pc = dojo.getObject(args.name);
- if(pc){
- o.plugin=new pc(args);
- }
- }
- if(!o.plugin){
- console.warn('Cannot find plugin',plugin);
- return;
- }
- plugin=o.plugin;
- }
- if(arguments.length > 1){
- this._plugins[index] = plugin;
- }else{
- this._plugins.push(plugin);
- }
- plugin.setEditor(this);
- if(dojo.isFunction(plugin.setToolbar)){
- plugin.setToolbar(this.toolbar);
- }
- },
- //the following 3 functions are required to make the editor play nice under a layout widget, see #4070
- startup: function(){
- // summary:
- // Exists to make Editor work as a child of a layout widget.
- // Developers don't need to call this method.
- // tags:
- // protected
- //console.log('startup',arguments);
- },
- resize: function(size){
- // summary:
- // Resize the editor to the specified size, see `dijit.layout._LayoutWidget.resize`
- if(size){
- // we've been given a height/width for the entire editor (toolbar + contents), calls layout()
- // to split the allocated size between the toolbar and the contents
- dijit.layout._LayoutWidget.prototype.resize.apply(this, arguments);
- }
- /*
- else{
- // do nothing, the editor is already laid out correctly. The user has probably specified
- // the height parameter, which was used to set a size on the iframe
- }
- */
- },
- layout: function(){
- // summary:
- // Called from `dijit.layout._LayoutWidget.resize`. This shouldn't be called directly
- // tags:
- // protected
-
- // Converts the iframe (or rather the <div> surrounding it) to take all the available space
- // except what's needed for the toolbar
- this.editingArea.style.height = (this._contentBox.h - dojo.marginBox(this.toolbar.domNode).h)+"px";
- if(this.iframe){
- this.iframe.style.height="100%";
- }
- this._layoutMode = true;
- },
- _onIEMouseDown: function(/*Event*/ e){
- // summary:
- // IE only to prevent 2 clicks to focus
- // tags:
- // private
-
- var outsideClientArea = this.document.body.componentFromPoint(e.x, e.y);
- if(!outsideClientArea){
- delete this._savedSelection; // new mouse position overrides old selection
- if(e.target.tagName == "BODY"){
- setTimeout(dojo.hitch(this, "placeCursorAtEnd"), 0);
- }
- this.inherited(arguments);
- }
- },
- onBeforeActivate: function(e){
- this._restoreSelection();
- },
- onBeforeDeactivate: function(e){
- // summary:
- // Called on IE right before focus is lost. Saves the selected range.
- // tags:
- // private
- if(this.customUndo){
- this.endEditing(true);
- }
- //in IE, the selection will be lost when other elements get focus,
- //let's save focus before the editor is deactivated
- if(e.target.tagName != "BODY"){
- this._saveSelection();
- }
- //console.log('onBeforeDeactivate',this);
- },
-
- /* beginning of custom undo/redo support */
-
- // customUndo: Boolean
- // Whether we shall use custom undo/redo support instead of the native
- // browser support. By default, we only enable customUndo for IE, as it
- // has broken native undo/redo support. Note: the implementation does
- // support other browsers which have W3C DOM2 Range API implemented.
- customUndo: dojo.isIE,
-
- // editActionInterval: Integer
- // When using customUndo, not every keystroke will be saved as a step.
- // Instead typing (including delete) will be grouped together: after
- // a user stops typing for editActionInterval seconds, a step will be
- // saved; if a user resume typing within editActionInterval seconds,
- // the timeout will be restarted. By default, editActionInterval is 3
- // seconds.
- editActionInterval: 3,
-
- beginEditing: function(cmd){
- // summary:
- // Called to note that the user has started typing alphanumeric characters, if it's not already noted.
- // Deals with saving undo; see editActionInterval parameter.
- // tags:
- // private
- if(!this._inEditing){
- this._inEditing=true;
- this._beginEditing(cmd);
- }
- if(this.editActionInterval>0){
- if(this._editTimer){
- clearTimeout(this._editTimer);
- }
- this._editTimer = setTimeout(dojo.hitch(this, this.endEditing), this._editInterval);
- }
- },
- _steps:[],
- _undoedSteps:[],
- execCommand: function(cmd){
- // summary:
- // Main handler for executing any commands to the editor, like paste, bold, etc.
- // Called by plugins, but not meant to be called by end users.
- // tags:
- // protected
- if(this.customUndo && (cmd == 'undo' || cmd == 'redo')){
- return this[cmd]();
- }else{
- if(this.customUndo){
- this.endEditing();
- this._beginEditing();
- }
- var r;
- try{
- r = this.inherited('execCommand', arguments);
- if(dojo.isWebKit && cmd == 'paste' && !r){ //see #4598: safari does not support invoking paste from js
- throw { code: 1011 }; // throw an object like Mozilla's error
- }
- }catch(e){
- //TODO: when else might we get an exception? Do we need the Mozilla test below?
- if(e.code == 1011 /* Mozilla: service denied */ && /copy|cut|paste/.test(cmd)){
- // Warn user of platform limitation. Cannot programmatically access clipboard. See ticket #4136
- var sub = dojo.string.substitute,
- accel = {cut:'X', copy:'C', paste:'V'};
- alert(sub(this.commands.systemShortcut,
- [this.commands[cmd], sub(this.commands[dojo.isMac ? 'appleKey' : 'ctrlKey'], [accel[cmd]])]));
- }
- r = false;
- }
- if(this.customUndo){
- this._endEditing();
- }
- return r;
- }
- },
- queryCommandEnabled: function(cmd){
- // summary:
- // Returns true if specified editor command is enabled.
- // Used by the plugins to know when to highlight/not highlight buttons.
- // tags:
- // protected
- if(this.customUndo && (cmd == 'undo' || cmd == 'redo')){
- return cmd == 'undo' ? (this._steps.length > 1) : (this._undoedSteps.length > 0);
- }else{
- return this.inherited('queryCommandEnabled',arguments);
- }
- },
-
- _moveToBookmark: function(b){
- // summary:
- // Selects the text specified in bookmark b
- // tags:
- // private
- var bookmark = b.mark;
- var mark = b.mark;
- var col = b.isCollapsed;
- if(dojo.isIE){
- if(dojo.isArray(mark)){//IE CONTROL
- bookmark = [];
- dojo.forEach(mark,function(n){
- bookmark.push(dijit.range.getNode(n,this.editNode));
- },this);
- }
- }else{//w3c range
- var r=dijit.range.create(this.window);
- r.setStart(dijit.range.getNode(b.startContainer,this.editNode),b.startOffset);
- r.setEnd(dijit.range.getNode(b.endContainer,this.editNode),b.endOffset);
- bookmark=r;
- }
- dojo.withGlobal(this.window,'moveToBookmark',dijit,[{mark: bookmark, isCollapsed: col}]);
- },
-
- _changeToStep: function(from, to){
- // summary:
- // Reverts editor to "to" setting, from the undo stack.
- // tags:
- // private
- this.setValue(to.text);
- var b=to.bookmark;
- if(!b){ return; }
- this._moveToBookmark(b);
- },
- undo: function(){
- // summary:
- // Handler for editor undo (ex: ctrl-z) operation
- // tags:
- // private
-// console.log('undo');
- this.endEditing(true);
- var s=this._steps.pop();
- if(this._steps.length>0){
- this.focus();
- this._changeToStep(s,this._steps[this._steps.length-1]);
- this._undoedSteps.push(s);
- this.onDisplayChanged();
- return true;
- }
- return false;
- },
- redo: function(){
- // summary:
- // Handler for editor redo (ex: ctrl-y) operation
- // tags:
- // private
-
-// console.log('redo');
- this.endEditing(true);
- var s=this._undoedSteps.pop();
- if(s && this._steps.length>0){
- this.focus();
- this._changeToStep(this._steps[this._steps.length-1],s);
- this._steps.push(s);
- this.onDisplayChanged();
- return true;
- }
- return false;
- },
- endEditing: function(ignore_caret){
- // summary:
- // Called to note that the user has stopped typing alphanumeric characters, if it's not already noted.
- // Deals with saving undo; see editActionInterval parameter.
- // tags:
- // private
- if(this._editTimer){
- clearTimeout(this._editTimer);
- }
- if(this._inEditing){
- this._endEditing(ignore_caret);
- this._inEditing=false;
- }
- },
- _getBookmark: function(){
- // summary:
- // Get the currently selected text
- // tags:
- // protected
- var b=dojo.withGlobal(this.window,dijit.getBookmark);
- var tmp=[];
- if(b.mark){
- var mark = b.mark;
- if(dojo.isIE){
- if(dojo.isArray(mark)){//CONTROL
- dojo.forEach(mark,function(n){
- tmp.push(dijit.range.getIndex(n,this.editNode).o);
- },this);
- b.mark = tmp;
- }
- }else{//w3c range
- tmp=dijit.range.getIndex(mark.startContainer,this.editNode).o;
- b.mark ={startContainer:tmp,
- startOffset:mark.startOffset,
- endContainer:mark.endContainer === mark.startContainer?tmp:dijit.range.getIndex(mark.endContainer,this.editNode).o,
- endOffset:mark.endOffset};
- }
- }
- return b;
- },
- _beginEditing: function(cmd){
- // summary:
- // Called when the user starts typing alphanumeric characters.
- // Deals with saving undo; see editActionInterval parameter.
- // tags:
- // private
- if(this._steps.length === 0){
- this._steps.push({'text':this.savedContent,'bookmark':this._getBookmark()});
- }
- },
- _endEditing: function(ignore_caret){
- // summary:
- // Called when the user stops typing alphanumeric characters.
- // Deals with saving undo; see editActionInterval parameter.
- // tags:
- // private
- var v=this.getValue(true);
-
- this._undoedSteps=[];//clear undoed steps
- this._steps.push({text: v, bookmark: this._getBookmark()});
- },
- onKeyDown: function(e){
- // summary:
- // Handler for onkeydown event.
- // tags:
- // private
-
- //We need to save selection if the user TAB away from this editor
- //no need to call _saveSelection for IE, as that will be taken care of in onBeforeDeactivate
- if(!dojo.isIE && !this.iframe && e.keyCode == dojo.keys.TAB && !this.tabIndent){
- this._saveSelection();
- }
- if(!this.customUndo){
- this.inherited(arguments);
- return;
- }
- var k = e.keyCode, ks = dojo.keys;
- if(e.ctrlKey && !e.altKey){//undo and redo only if the special right Alt + z/y are not pressed #5892
- if(k == 90 || k == 122){ //z
- dojo.stopEvent(e);
- this.undo();
- return;
- }else if(k == 89 || k == 121){ //y
- dojo.stopEvent(e);
- this.redo();
- return;
- }
- }
- this.inherited(arguments);
-
- switch(k){
- case ks.ENTER:
- case ks.BACKSPACE:
- case ks.DELETE:
- this.beginEditing();
- break;
- case 88: //x
- case 86: //v
- if(e.ctrlKey && !e.altKey && !e.metaKey){
- this.endEditing();//end current typing step if any
- if(e.keyCode == 88){
- this.beginEditing('cut');
- //use timeout to trigger after the cut is complete
- setTimeout(dojo.hitch(this, this.endEditing), 1);
- }else{
- this.beginEditing('paste');
- //use timeout to trigger after the paste is complete
- setTimeout(dojo.hitch(this, this.endEditing), 1);
- }
- break;
- }
- //pass through
- default:
- if(!e.ctrlKey && !e.altKey && !e.metaKey && (e.keyCode<dojo.keys.F1 || e.keyCode>dojo.keys.F15)){
- this.beginEditing();
- break;
- }
- //pass through
- case ks.ALT:
- this.endEditing();
- break;
- case ks.UP_ARROW:
- case ks.DOWN_ARROW:
- case ks.LEFT_ARROW:
- case ks.RIGHT_ARROW:
- case ks.HOME:
- case ks.END:
- case ks.PAGE_UP:
- case ks.PAGE_DOWN:
- this.endEditing(true);
- break;
- //maybe ctrl+backspace/delete, so don't endEditing when ctrl is pressed
- case ks.CTRL:
- case ks.SHIFT:
- case ks.TAB:
- break;
- }
- },
- _onBlur: function(){
- // summary:
- // Called from focus manager when focus has moved away from this editor
- // tags:
- // protected
-
- //this._saveSelection();
- this.inherited('_onBlur',arguments);
- this.endEditing(true);
- },
- _saveSelection: function(){
- // summary:
- // Save the currently selected text in _savedSelection attribute
- // tags:
- // private
- this._savedSelection=this._getBookmark();
- //console.log('save selection',this._savedSelection,this);
- },
- _restoreSelection: function(){
- // summary:
- // Re-select the text specified in _savedSelection attribute;
- // see _saveSelection().
- // tags:
- // private
- if(this._savedSelection){
- // only restore the selection if the current range is collapsed
- // if not collapsed, then it means the editor does not lose
- // selection and there is no need to restore it
- if(dojo.withGlobal(this.window,'isCollapsed',dijit)){
- this._moveToBookmark(this._savedSelection);
- }
- delete this._savedSelection;
- }
- },
-
- onClick: function(){
- // summary:
- // Handler for when editor is clicked
- // tags:
- // protected
- this.endEditing(true);
- this.inherited(arguments);
- }
- /* end of custom undo/redo support */
- }
-);
-
-// Register the "default plugins", ie, the built-in editor commands
-dojo.subscribe(dijit._scopeName + ".Editor.getPlugin",null,function(o){
- if(o.plugin){ return; }
- var args = o.args, p;
- var _p = dijit._editor._Plugin;
- var name = args.name;
- switch(name){
- case "undo": case "redo": case "cut": case "copy": case "paste": case "insertOrderedList":
- case "insertUnorderedList": case "indent": case "outdent": case "justifyCenter":
- case "justifyFull": case "justifyLeft": case "justifyRight": case "delete":
- case "selectAll": case "removeFormat": case "unlink":
- case "insertHorizontalRule":
- p = new _p({ command: name });
- break;
-
- case "bold": case "italic": case "underline": case "strikethrough":
- case "subscript": case "superscript":
- p = new _p({ buttonClass: dijit.form.ToggleButton, command: name });
- break;
- case "|":
- p = new _p({ button: new dijit.ToolbarSeparator() });
- }
-// console.log('name',name,p);
- o.plugin=p;
-});
-
-}
diff --git a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/InlineEditBox.js b/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/InlineEditBox.js
deleted file mode 100644
index f4b8188..0000000
--- a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/InlineEditBox.js
+++ /dev/null
@@ -1,536 +0,0 @@
-/*
- Copyright (c) 2004-2009, The Dojo Foundation All Rights Reserved.
- Available via Academic Free License >= 2.1 OR the modified BSD license.
- see: http://dojotoolkit.org/license for details
-*/
-
-
-if(!dojo._hasResource["dijit.InlineEditBox"]){ //_hasResource checks added by build. Do not use _hasResource directly in your code.
-dojo._hasResource["dijit.InlineEditBox"] = true;
-dojo.provide("dijit.InlineEditBox");
-
-dojo.require("dojo.i18n");
-
-dojo.require("dijit._Widget");
-dojo.require("dijit._Container");
-dojo.require("dijit.form.Button");
-dojo.require("dijit.form.TextBox");
-
-dojo.requireLocalization("dijit", "common", null, "ROOT,ar,ca,cs,da,de,el,es,fi,fr,he,hu,it,ja,ko,nb,nl,pl,pt,pt-pt,ru,sk,sl,sv,th,tr,zh,zh-tw");
-
-dojo.declare("dijit.InlineEditBox",
- dijit._Widget,
- {
- // summary:
- // An element with in-line edit capabilitites
- //
- // description:
- // Behavior for an existing node (`<p>`, `<div>`, `<span>`, etc.) so that
- // when you click it, an editor shows up in place of the original
- // text. Optionally, Save and Cancel button are displayed below the edit widget.
- // When Save is clicked, the text is pulled from the edit
- // widget and redisplayed and the edit widget is again hidden.
- // By default a plain Textarea widget is used as the editor (or for
- // inline values a TextBox), but you can specify an editor such as
- // dijit.Editor (for editing HTML) or a Slider (for adjusting a number).
- // An edit widget must support the following API to be used:
- // - displayedValue or value as initialization parameter,
- // and available through attr('displayedValue') / attr('value')
- // - void focus()
- // - DOM-node focusNode = node containing editable text
-
- // editing: [readonly] Boolean
- // Is the node currently in edit mode?
- editing: false,
-
- // autoSave: Boolean
- // Changing the value automatically saves it; don't have to push save button
- // (and save button isn't even displayed)
- autoSave: true,
-
- // buttonSave: String
- // Save button label
- buttonSave: "",
-
- // buttonCancel: String
- // Cancel button label
- buttonCancel: "",
-
- // renderAsHtml: Boolean
- // Set this to true if the specified Editor's value should be interpreted as HTML
- // rather than plain text (ex: `dijit.Editor`)
- renderAsHtml: false,
-
- // editor: String
- // Class name for Editor widget
- editor: "dijit.form.TextBox",
-
- // editorWrapper: String
- // Class name for widget that wraps the editor widget, displaying save/cancel
- // buttons.
- editorWrapper: "dijit._InlineEditor",
-
- // editorParams: Object
- // Set of parameters for editor, like {required: true}
- editorParams: {},
-
- onChange: function(value){
- // summary:
- // Set this handler to be notified of changes to value.
- // tags:
- // callback
- },
-
- onCancel: function(){
- // summary:
- // Set this handler to be notified when editing is cancelled.
- // tags:
- // callback
- },
-
- // width: String
- // Width of editor. By default it's width=100% (ie, block mode).
- width: "100%",
-
- // value: String
- // The display value of the widget in read-only mode
- value: "",
-
- // noValueIndicator: [const] String
- // The text that gets displayed when there is no value (so that the user has a place to click to edit)
- noValueIndicator: "<span style='font-family: wingdings; text-decoration: underline;'> ✍ </span>",
-
- constructor: function(){
- // summary:
- // Sets up private arrays etc.
- // tags:
- // private
- this.editorParams = {};
- },
-
- postMixInProperties: function(){
- this.inherited(arguments);
-
- // save pointer to original source node, since Widget nulls-out srcNodeRef
- this.displayNode = this.srcNodeRef;
-
- // connect handlers to the display node
- var events = {
- ondijitclick: "_onClick",
- onmouseover: "_onMouseOver",
- onmouseout: "_onMouseOut",
- onfocus: "_onMouseOver",
- onblur: "_onMouseOut"
- };
- for(var name in events){
- this.connect(this.displayNode, name, events[name]);
- }
- dijit.setWaiRole(this.displayNode, "button");
- if(!this.displayNode.getAttribute("tabIndex")){
- this.displayNode.setAttribute("tabIndex", 0);
- }
-
- this.attr('value', this.value || this.displayNode.innerHTML);
- },
-
- setDisabled: function(/*Boolean*/ disabled){
- // summary:
- // Deprecated. Use attr('disable', ...) instead.
- // tags:
- // deprecated
- dojo.deprecated("dijit.InlineEditBox.setDisabled() is deprecated. Use attr('disabled', bool) instead.", "", "2.0");
- this.attr('disabled', disabled);
- },
-
- _setDisabledAttr: function(/*Boolean*/ disabled){
- // summary:
- // Hook to make attr("disabled", ...) work.
- // Set disabled state of widget.
- this.disabled = disabled;
- dijit.setWaiState(this.domNode, "disabled", disabled);
- if(disabled){
- this.displayNode.removeAttribute("tabIndex");
- }else{
- this.displayNode.setAttribute("tabIndex", 0);
- }
- },
-
- _onMouseOver: function(){
- // summary:
- // Handler for onmouseover event.
- // tags:
- // private
- dojo.addClass(this.displayNode, this.disabled ? "dijitDisabledClickableRegion" : "dijitClickableRegion");
- },
-
- _onMouseOut: function(){
- // summary:
- // Handler for onmouseout event.
- // tags:
- // private
- dojo.removeClass(this.displayNode, this.disabled ? "dijitDisabledClickableRegion" : "dijitClickableRegion");
- },
-
- _onClick: function(/*Event*/ e){
- // summary:
- // Handler for onclick event.
- // tags:
- // private
- if(this.disabled){ return; }
- if(e){ dojo.stopEvent(e); }
- this._onMouseOut();
-
- // Since FF gets upset if you move a node while in an event handler for that node...
- setTimeout(dojo.hitch(this, "edit"), 0);
- },
-
- edit: function(){
- // summary:
- // Display the editor widget in place of the original (read only) markup.
- // tags:
- // private
-
- if(this.disabled || this.editing){ return; }
- this.editing = true;
-
- // save some display node values that can be restored later
- this._savedPosition = dojo.style(this.displayNode, "position") || "static";
- this._savedOpacity = dojo.style(this.displayNode, "opacity") || "1";
- this._savedTabIndex = dojo.attr(this.displayNode, "tabIndex") || "0";
-
- if(this.wrapperWidget){
- this.wrapperWidget.editWidget.attr("displayedValue" in this.editorParams ? "displayedValue" : "value", this.value);
- }else{
- // Placeholder for edit widget
- // Put place holder (and eventually editWidget) before the display node so that it's positioned correctly
- // when Calendar dropdown appears, which happens automatically on focus.
- var placeholder = dojo.create("span", null, this.domNode, "before");
-
- // Create the editor wrapper (the thing that holds the editor widget and the save/cancel buttons)
- var ewc = dojo.getObject(this.editorWrapper);
- this.wrapperWidget = new ewc({
- value: this.value,
- buttonSave: this.buttonSave,
- buttonCancel: this.buttonCancel,
- tabIndex: this._savedTabIndex,
- editor: this.editor,
- inlineEditBox: this,
- sourceStyle: dojo.getComputedStyle(this.displayNode),
- save: dojo.hitch(this, "save"),
- cancel: dojo.hitch(this, "cancel")
- }, placeholder);
- }
- var ww = this.wrapperWidget;
-
- if(dojo.isIE){
- dijit.focus(dijit.getFocus()); // IE (at least 8) needs help with tab order changes
- }
- // to avoid screen jitter, we first create the editor with position:absolute, visibility:hidden,
- // and then when it's finished rendering, we switch from display mode to editor
- // position:absolute releases screen space allocated to the display node
- // opacity:0 is the same as visibility:hidden but is still focusable
- // visiblity:hidden removes focus outline
-
- dojo.style(this.displayNode, { position: "absolute", opacity: "0", display: "none" }); // makes display node invisible, display style used for focus-ability
- dojo.style(ww.domNode, { position: this._savedPosition, visibility: "visible", opacity: "1" });
- dojo.attr(this.displayNode, "tabIndex", "-1"); // needed by WebKit for TAB from editor to skip displayNode
-
- // Replace the display widget with edit widget, leaving them both displayed for a brief time so that
- // focus can be shifted without incident. (browser may needs some time to render the editor.)
- setTimeout(dojo.hitch(this, function(){
- ww.focus(); // both nodes are showing, so we can switch focus safely
- ww._resetValue = ww.getValue();
- }), 0);
- },
-
- _onBlur: function(){
- // summary:
- // Called when focus moves outside the InlineEditBox.
- // Performs garbage collection.
- // tags:
- // private
-
- this.inherited(arguments);
- if(!this.editing){
- setTimeout(dojo.hitch(this, function(){
- if(this.wrapperWidget){
- this.wrapperWidget.destroy();
- delete this.wrapperWidget;
- }
- }), 0);
- }
- },
-
- _showText: function(/*Boolean*/ focus){
- // summary:
- // Revert to display mode, and optionally focus on display node
- // tags:
- // private
-
- var ww = this.wrapperWidget;
- dojo.style(ww.domNode, { position: "absolute", visibility: "hidden", opacity: "0" }); // hide the editor from mouse/keyboard events
- dojo.style(this.displayNode, { position: this._savedPosition, opacity: this._savedOpacity, display: "" }); // make the original text visible
- dojo.attr(this.displayNode, "tabIndex", this._savedTabIndex);
- if(focus){
- dijit.focus(this.displayNode);
- }
- },
-
- save: function(/*Boolean*/ focus){
- // summary:
- // Save the contents of the editor and revert to display mode.
- // focus: Boolean
- // Focus on the display mode text
- // tags:
- // private
-
- if(this.disabled || !this.editing){ return; }
- this.editing = false;
-
- var ww = this.wrapperWidget;
- var value = ww.getValue();
- this.attr('value', value); // display changed, formatted value
-
- // tell the world that we have changed
- setTimeout(dojo.hitch(this, "onChange", value), 0); // setTimeout prevents browser freeze for long-running event handlers
-
- this._showText(focus); // set focus as needed
- },
-
- setValue: function(/*String*/ val){
- // summary:
- // Deprecated. Use attr('value', ...) instead.
- // tags:
- // deprecated
- dojo.deprecated("dijit.InlineEditBox.setValue() is deprecated. Use attr('value', ...) instead.", "", "2.0");
- return this.attr("value", val);
- },
-
- _setValueAttr: function(/*String*/ val){
- // summary:
- // Hook to make attr("value", ...) work.
- // Inserts specified HTML value into this node, or an "input needed" character if node is blank.
-
- this.value = val = dojo.trim(val);
- if(!this.renderAsHtml){
- val = val.replace(/&/gm, "&").replace(/</gm, "<").replace(/>/gm, ">").replace(/"/gm, """).replace(/\n/g, "<br>");
- }
- this.displayNode.innerHTML = val || this.noValueIndicator;
- },
-
- getValue: function(){
- // summary:
- // Deprecated. Use attr('value') instead.
- // tags:
- // deprecated
- dojo.deprecated("dijit.InlineEditBox.getValue() is deprecated. Use attr('value') instead.", "", "2.0");
- return this.attr("value");
- },
-
- cancel: function(/*Boolean*/ focus){
- // summary:
- // Revert to display mode, discarding any changes made in the editor
- // tags:
- // private
-
- if(this.disabled || !this.editing){ return; }
- this.editing = false;
-
- // tell the world that we have no changes
- setTimeout(dojo.hitch(this, "onCancel"), 0); // setTimeout prevents browser freeze for long-running event handlers
-
- this._showText(focus);
- }
-});
-
-dojo.declare(
- "dijit._InlineEditor",
- [dijit._Widget, dijit._Templated],
-{
- // summary:
- // Internal widget used by InlineEditBox, displayed when in editing mode
- // to display the editor and maybe save/cancel buttons. Calling code should
- // connect to save/cancel methods to detect when editing is finished
- //
- // Has mainly the same parameters as InlineEditBox, plus these values:
- //
- // style: Object
- // Set of CSS attributes of display node, to replicate in editor
- //
- // value: String
- // Value as an HTML string or plain text string, depending on renderAsHTML flag
-
- templateString: dojo.cache("dijit", "templates/InlineEditBox.html", "<span dojoAttachPoint=\"editNode\" waiRole=\"presentation\" style=\"position: absolute; visibility:hidden\" class=\"dijitReset dijitInline\"\n\tdojoAttachEvent=\"onkeypress: _onKeyPress\"\n\t><span dojoAttachPoint=\"editorPlaceholder\"></span\n\t><span dojoAttachPoint=\"buttonContainer\"\n\t\t><button class='saveButton' dojoAttachPoint=\"saveButton\" dojoType=\"dijit.form.Button\" dojoAttachEvent=\"onClick:save\" label=\"${buttonSave}\"></button\n\t\t><button class='cancelButton' dojoAttachPoint=\"cancelButton\" dojoType=\"dijit.form.Button\" dojoAttachEvent=\"onClick:cancel\" label=\"${buttonCancel}\"></button\n\t></span\n></span>\n"),
- widgetsInTemplate: true,
-
- postMixInProperties: function(){
- this.inherited(arguments);
- this.messages = dojo.i18n.getLocalization("dijit", "common", this.lang);
- dojo.forEach(["buttonSave", "buttonCancel"], function(prop){
- if(!this[prop]){ this[prop] = this.messages[prop]; }
- }, this);
- },
-
- postCreate: function(){
- // Create edit widget in place in the template
- var cls = dojo.getObject(this.editor);
-
- // Copy the style from the source
- // Don't copy ALL properties though, just the necessary/applicable ones
- var srcStyle = this.sourceStyle;
- var editStyle = "line-height:" + srcStyle.lineHeight + ";";
- dojo.forEach(["Weight","Family","Size","Style"], function(prop){
- editStyle += "font-"+prop+":"+srcStyle["font"+prop]+";";
- }, this);
- dojo.forEach(["marginTop","marginBottom","marginLeft", "marginRight"], function(prop){
- this.domNode.style[prop] = srcStyle[prop];
- }, this);
- var width = this.inlineEditBox.width;
- if(width == "100%"){
- // block mode
- editStyle += "width:100%;";
- this.domNode.style.display = "block";
- }else{
- // inline-block mode
- editStyle += "width:" + (width + (Number(width) == width ? "px" : "")) + ";";
- }
- var editorParams = this.inlineEditBox.editorParams;
- editorParams.style = editStyle;
- editorParams[ "displayedValue" in cls.prototype ? "displayedValue" : "value"] = this.value;
- var ew = this.editWidget = new cls(editorParams, this.editorPlaceholder);
-
- if(this.inlineEditBox.autoSave){
- // Hide the save/cancel buttons since saving is done by simply tabbing away or
- // selecting a value from the drop down list
- this.buttonContainer.style.display="none";
-
- // Selecting a value from a drop down list causes an onChange event and then we save
- this.connect(ew, "onChange", "_onChange");
-
- // ESC and TAB should cancel and save. Note that edit widgets do a stopEvent() on ESC key (to
- // prevent Dialog from closing when the user just wants to revert the value in the edit widget),
- // so this is the only way we can see the key press event.
- this.connect(ew, "onKeyPress", "_onKeyPress");
- }else{
- // If possible, enable/disable save button based on whether the user has changed the value
- if("intermediateChanges" in cls.prototype){
- ew.attr("intermediateChanges", true);
- this.connect(ew, "onChange", "_onIntermediateChange");
- this.saveButton.attr("disabled", true);
- }
- }
- },
-
- _onIntermediateChange: function(val){
- // summary:
- // Called for editor widgets that support the intermediateChanges=true flag as a way
- // to detect when to enable/disabled the save button
- this.saveButton.attr("disabled", (this.getValue() == this._resetValue) || !this.enableSave());
- },
-
- destroy: function(){
- this.editWidget.destroy(true); // let the parent wrapper widget clean up the DOM
- this.inherited(arguments);
- },
-
- getValue: function(){
- // summary:
- // Return the [display] value of the edit widget
- var ew = this.editWidget;
- return String(ew.attr("displayedValue" in ew ? "displayedValue" : "value"));
- },
-
- _onKeyPress: function(e){
- // summary:
- // Handler for keypress in the edit box in autoSave mode.
- // description:
- // For autoSave widgets, if Esc/Enter, call cancel/save.
- // tags:
- // private
-
- if(this.inlineEditBox.autoSave && this.inlineEditBox.editing){
- if(e.altKey || e.ctrlKey){ return; }
- // If Enter/Esc pressed, treat as save/cancel.
- if(e.charOrCode == dojo.keys.ESCAPE){
- dojo.stopEvent(e);
- this.cancel(true); // sets editing=false which short-circuits _onBlur processing
- }else if(e.charOrCode == dojo.keys.ENTER && e.target.tagName == "INPUT"){
- dojo.stopEvent(e);
- this._onChange(); // fire _onBlur and then save
- }
-
- // _onBlur will handle TAB automatically by allowing
- // the TAB to change focus before we mess with the DOM: #6227
- // Expounding by request:
- // The current focus is on the edit widget input field.
- // save() will hide and destroy this widget.
- // We want the focus to jump from the currently hidden
- // displayNode, but since it's hidden, it's impossible to
- // unhide it, focus it, and then have the browser focus
- // away from it to the next focusable element since each
- // of these events is asynchronous and the focus-to-next-element
- // is already queued.
- // So we allow the browser time to unqueue the move-focus event
- // before we do all the hide/show stuff.
- }
- },
-
- _onBlur: function(){
- // summary:
- // Called when focus moves outside the editor
- // tags:
- // private
-
- this.inherited(arguments);
- if(this.inlineEditBox.autoSave && this.inlineEditBox.editing){
- if(this.getValue() == this._resetValue){
- this.cancel(false);
- }else if(this.enableSave()){
- this.save(false);
- }
- }
- },
-
- _onChange: function(){
- // summary:
- // Called when the underlying widget fires an onChange event,
- // such as when the user selects a value from the drop down list of a ComboBox,
- // which means that the user has finished entering the value and we should save.
- // tags:
- // private
-
- if(this.inlineEditBox.autoSave && this.inlineEditBox.editing && this.enableSave()){
- dojo.style(this.inlineEditBox.displayNode, { display: "" });
- dijit.focus(this.inlineEditBox.displayNode); // fires _onBlur which will save the formatted value
- }
- },
-
- enableSave: function(){
- // summary:
- // User overridable function returning a Boolean to indicate
- // if the Save button should be enabled or not - usually due to invalid conditions
- // tags:
- // extension
- return (
- this.editWidget.isValid
- ? this.editWidget.isValid()
- : true
- );
- },
-
- focus: function(){
- // summary:
- // Focus the edit widget.
- // tags:
- // protected
-
- this.editWidget.focus();
- setTimeout(dojo.hitch(this, function(){
- if(this.editWidget.focusNode.tagName == "INPUT"){
- dijit.selectInputText(this.editWidget.focusNode);
- }
- }), 0);
- }
-});
-
-}
diff --git a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/LICENSE b/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/LICENSE
deleted file mode 100644
index ad1676a..0000000
--- a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/LICENSE
+++ /dev/null
@@ -1,195 +0,0 @@
-Dojo is available under *either* the terms of the modified BSD license *or* the
-Academic Free License version 2.1. As a recipient of Dojo, you may choose which
-license to receive this code under (except as noted in per-module LICENSE
-files). Some modules may not be the copyright of the Dojo Foundation. These
-modules contain explicit declarations of copyright in both the LICENSE files in
-the directories in which they reside and in the code itself. No external
-contributions are allowed under licenses which are fundamentally incompatible
-with the AFL or BSD licenses that Dojo is distributed under.
-
-The text of the AFL and BSD licenses is reproduced below.
-
--------------------------------------------------------------------------------
-The "New" BSD License:
-**********************
-
-Copyright (c) 2005-2009, The Dojo Foundation
-All rights reserved.
-
-Redistribution and use in source and binary forms, with or without
-modification, are permitted provided that the following conditions are met:
-
- * Redistributions of source code must retain the above copyright notice, this
- list of conditions and the following disclaimer.
- * Redistributions in binary form must reproduce the above copyright notice,
- this list of conditions and the following disclaimer in the documentation
- and/or other materials provided with the distribution.
- * Neither the name of the Dojo Foundation nor the names of its contributors
- may be used to endorse or promote products derived from this software
- without specific prior written permission.
-
-THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
-ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
-WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
-DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE
-FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
-DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
-SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
-CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
-OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
-OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-
--------------------------------------------------------------------------------
-The Academic Free License, v. 2.1:
-**********************************
-
-This Academic Free License (the "License") applies to any original work of
-authorship (the "Original Work") whose owner (the "Licensor") has placed the
-following notice immediately following the copyright notice for the Original
-Work:
-
-Licensed under the Academic Free License version 2.1
-
-1) Grant of Copyright License. Licensor hereby grants You a world-wide,
-royalty-free, non-exclusive, perpetual, sublicenseable license to do the
-following:
-
-a) to reproduce the Original Work in copies;
-
-b) to prepare derivative works ("Derivative Works") based upon the Original
-Work;
-
-c) to distribute copies of the Original Work and Derivative Works to the
-public;
-
-d) to perform the Original Work publicly; and
-
-e) to display the Original Work publicly.
-
-2) Grant of Patent License. Licensor hereby grants You a world-wide,
-royalty-free, non-exclusive, perpetual, sublicenseable license, under patent
-claims owned or controlled by the Licensor that are embodied in the Original
-Work as furnished by the Licensor, to make, use, sell and offer for sale the
-Original Work and Derivative Works.
-
-3) Grant of Source Code License. The term "Source Code" means the preferred
-form of the Original Work for making modifications to it and all available
-documentation describing how to modify the Original Work. Licensor hereby
-agrees to provide a machine-readable copy of the Source Code of the Original
-Work along with each copy of the Original Work that Licensor distributes.
-Licensor reserves the right to satisfy this obligation by placing a
-machine-readable copy of the Source Code in an information repository
-reasonably calculated to permit inexpensive and convenient access by You for as
-long as Licensor continues to distribute the Original Work, and by publishing
-the address of that information repository in a notice immediately following
-the copyright notice that applies to the Original Work.
-
-4) Exclusions From License Grant. Neither the names of Licensor, nor the names
-of any contributors to the Original Work, nor any of their trademarks or
-service marks, may be used to endorse or promote products derived from this
-Original Work without express prior written permission of the Licensor. Nothing
-in this License shall be deemed to grant any rights to trademarks, copyrights,
-patents, trade secrets or any other intellectual property of Licensor except as
-expressly stated herein. No patent license is granted to make, use, sell or
-offer to sell embodiments of any patent claims other than the licensed claims
-defined in Section 2. No right is granted to the trademarks of Licensor even if
-such marks are included in the Original Work. Nothing in this License shall be
-interpreted to prohibit Licensor from licensing under different terms from this
-License any Original Work that Licensor otherwise would have a right to
-license.
-
-5) This section intentionally omitted.
-
-6) Attribution Rights. You must retain, in the Source Code of any Derivative
-Works that You create, all copyright, patent or trademark notices from the
-Source Code of the Original Work, as well as any notices of licensing and any
-descriptive text identified therein as an "Attribution Notice." You must cause
-the Source Code for any Derivative Works that You create to carry a prominent
-Attribution Notice reasonably calculated to inform recipients that You have
-modified the Original Work.
-
-7) Warranty of Provenance and Disclaimer of Warranty. Licensor warrants that
-the copyright in and to the Original Work and the patent rights granted herein
-by Licensor are owned by the Licensor or are sublicensed to You under the terms
-of this License with the permission of the contributor(s) of those copyrights
-and patent rights. Except as expressly stated in the immediately proceeding
-sentence, the Original Work is provided under this License on an "AS IS" BASIS
-and WITHOUT WARRANTY, either express or implied, including, without limitation,
-the warranties of NON-INFRINGEMENT, MERCHANTABILITY or FITNESS FOR A PARTICULAR
-PURPOSE. THE ENTIRE RISK AS TO THE QUALITY OF THE ORIGINAL WORK IS WITH YOU.
-This DISCLAIMER OF WARRANTY constitutes an essential part of this License. No
-license to Original Work is granted hereunder except under this disclaimer.
-
-8) Limitation of Liability. Under no circumstances and under no legal theory,
-whether in tort (including negligence), contract, or otherwise, shall the
-Licensor be liable to any person for any direct, indirect, special, incidental,
-or consequential damages of any character arising as a result of this License
-or the use of the Original Work including, without limitation, damages for loss
-of goodwill, work stoppage, computer failure or malfunction, or any and all
-other commercial damages or losses. This limitation of liability shall not
-apply to liability for death or personal injury resulting from Licensor's
-negligence to the extent applicable law prohibits such limitation. Some
-jurisdictions do not allow the exclusion or limitation of incidental or
-consequential damages, so this exclusion and limitation may not apply to You.
-
-9) Acceptance and Termination. If You distribute copies of the Original Work or
-a Derivative Work, You must make a reasonable effort under the circumstances to
-obtain the express assent of recipients to the terms of this License. Nothing
-else but this License (or another written agreement between Licensor and You)
-grants You permission to create Derivative Works based upon the Original Work
-or to exercise any of the rights granted in Section 1 herein, and any attempt
-to do so except under the terms of this License (or another written agreement
-between Licensor and You) is expressly prohibited by U.S. copyright law, the
-equivalent laws of other countries, and by international treaty. Therefore, by
-exercising any of the rights granted to You in Section 1 herein, You indicate
-Your acceptance of this License and all of its terms and conditions.
-
-10) Termination for Patent Action. This License shall terminate automatically
-and You may no longer exercise any of the rights granted to You by this License
-as of the date You commence an action, including a cross-claim or counterclaim,
-against Licensor or any licensee alleging that the Original Work infringes a
-patent. This termination provision shall not apply for an action alleging
-patent infringement by combinations of the Original Work with other software or
-hardware.
-
-11) Jurisdiction, Venue and Governing Law. Any action or suit relating to this
-License may be brought only in the courts of a jurisdiction wherein the
-Licensor resides or in which Licensor conducts its primary business, and under
-the laws of that jurisdiction excluding its conflict-of-law provisions. The
-application of the United Nations Convention on Contracts for the International
-Sale of Goods is expressly excluded. Any use of the Original Work outside the
-scope of this License or after its termination shall be subject to the
-requirements and penalties of the U.S. Copyright Act, 17 U.S.C. § 101 et
-seq., the equivalent laws of other countries, and international treaty. This
-section shall survive the termination of this License.
-
-12) Attorneys Fees. In any action to enforce the terms of this License or
-seeking damages relating thereto, the prevailing party shall be entitled to
-recover its costs and expenses, including, without limitation, reasonable
-attorneys' fees and costs incurred in connection with such action, including
-any appeal of such action. This section shall survive the termination of this
-License.
-
-13) Miscellaneous. This License represents the complete agreement concerning
-the subject matter hereof. If any provision of this License is held to be
-unenforceable, such provision shall be reformed only to the extent necessary to
-make it enforceable.
-
-14) Definition of "You" in This License. "You" throughout this License, whether
-in upper or lower case, means an individual or a legal entity exercising rights
-under, and complying with all of the terms of, this License. For legal
-entities, "You" includes any entity that controls, is controlled by, or is
-under common control with you. For purposes of this definition, "control" means
-(i) the power, direct or indirect, to cause the direction or management of such
-entity, whether by contract or otherwise, or (ii) ownership of fifty percent
-(50%) or more of the outstanding shares, or (iii) beneficial ownership of such
-entity.
-
-15) Right to Use. You may use the Original Work in all ways not otherwise
-restricted or conditioned by this License or by law, and Licensor promises not
-to interfere with or be responsible for such uses by You.
-
-This license is Copyright (C) 2003-2004 Lawrence E. Rosen. All rights reserved.
-Permission is hereby granted to copy and distribute this license without
-modification. This license may not be modified without the express written
-permission of its copyright owner.
diff --git a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/Menu.js b/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/Menu.js
deleted file mode 100644
index 4db6119..0000000
--- a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/Menu.js
+++ /dev/null
@@ -1,712 +0,0 @@
-/*
- Copyright (c) 2004-2009, The Dojo Foundation All Rights Reserved.
- Available via Academic Free License >= 2.1 OR the modified BSD license.
- see: http://dojotoolkit.org/license for details
-*/
-
-
-if(!dojo._hasResource["dijit.Menu"]){ //_hasResource checks added by build. Do not use _hasResource directly in your code.
-dojo._hasResource["dijit.Menu"] = true;
-dojo.provide("dijit.Menu");
-
-dojo.require("dijit._Widget");
-dojo.require("dijit._KeyNavContainer");
-dojo.require("dijit._Templated");
-
-dojo.declare("dijit._MenuBase",
- [dijit._Widget, dijit._Templated, dijit._KeyNavContainer],
-{
- // summary:
- // Base class for Menu and MenuBar
-
- // parentMenu: [readonly] Widget
- // pointer to menu that displayed me
- parentMenu: null,
-
- // popupDelay: Integer
- // number of milliseconds before hovering (without clicking) causes the popup to automatically open.
- popupDelay: 500,
-
- startup: function(){
- if(this._started){ return; }
-
- dojo.forEach(this.getChildren(), function(child){ child.startup(); });
- this.startupKeyNavChildren();
-
- this.inherited(arguments);
- },
-
- onExecute: function(){
- // summary:
- // Attach point for notification about when a menu item has been executed.
- // This is an internal mechanism used for Menus to signal to their parent to
- // close them, because they are about to execute the onClick handler. In
- // general developers should not attach to or override this method.
- // tags:
- // protected
- },
-
- onCancel: function(/*Boolean*/ closeAll){
- // summary:
- // Attach point for notification about when the user cancels the current menu
- // This is an internal mechanism used for Menus to signal to their parent to
- // close them. In general developers should not attach to or override this method.
- // tags:
- // protected
- },
-
- _moveToPopup: function(/*Event*/ evt){
- // summary:
- // This handles the right arrow key (left arrow key on RTL systems),
- // which will either open a submenu, or move to the next item in the
- // ancestor MenuBar
- // tags:
- // private
-
- if(this.focusedChild && this.focusedChild.popup && !this.focusedChild.disabled){
- this.focusedChild._onClick(evt);
- }else{
- var topMenu = this._getTopMenu();
- if(topMenu && topMenu._isMenuBar){
- topMenu.focusNext();
- }
- }
- },
-
- _onPopupHover: function(/*Event*/ evt){
- // summary:
- // This handler is called when the mouse moves over the popup.
- // tags:
- // private
-
- // if the mouse hovers over a menu popup that is in pending-close state,
- // then stop the close operation.
- // This can't be done in onItemHover since some popup targets don't have MenuItems (e.g. ColorPicker)
- if(this.currentPopup && this.currentPopup._pendingClose_timer){
- var parentMenu = this.currentPopup.parentMenu;
- // highlight the parent menu item pointing to this popup
- if(parentMenu.focusedChild){
- parentMenu.focusedChild._setSelected(false);
- }
- parentMenu.focusedChild = this.currentPopup.from_item;
- parentMenu.focusedChild._setSelected(true);
- // cancel the pending close
- this._stopPendingCloseTimer(this.currentPopup);
- }
- },
-
- onItemHover: function(/*MenuItem*/ item){
- // summary:
- // Called when cursor is over a MenuItem.
- // tags:
- // protected
-
- // Don't do anything unless user has "activated" the menu by:
- // 1) clicking it
- // 2) opening it from a parent menu (which automatically focuses it)
- if(this.isActive){
- this.focusChild(item);
- if(this.focusedChild.popup && !this.focusedChild.disabled && !this.hover_timer){
- this.hover_timer = setTimeout(dojo.hitch(this, "_openPopup"), this.popupDelay);
- }
- }
- // if the user is mixing mouse and keyboard navigation,
- // then the menu may not be active but a menu item has focus,
- // but it's not the item that the mouse just hovered over.
- // To avoid both keyboard and mouse selections, use the latest.
- if(this.focusedChild){
- this.focusChild(item);
- }
- this._hoveredChild = item;
- },
-
- _onChildBlur: function(item){
- // summary:
- // Called when a child MenuItem becomes inactive because focus
- // has been removed from the MenuItem *and* it's descendant menus.
- // tags:
- // private
- this._stopPopupTimer();
- item._setSelected(false);
- // Close all popups that are open and descendants of this menu
- var itemPopup = item.popup;
- if(itemPopup){
- this._stopPendingCloseTimer(itemPopup);
- itemPopup._pendingClose_timer = setTimeout(function(){
- itemPopup._pendingClose_timer = null;
- if(itemPopup.parentMenu){
- itemPopup.parentMenu.currentPopup = null;
- }
- dijit.popup.close(itemPopup); // this calls onClose
- }, this.popupDelay);
- }
- },
-
- onItemUnhover: function(/*MenuItem*/ item){
- // summary:
- // Callback fires when mouse exits a MenuItem
- // tags:
- // protected
-
- if(this.isActive){
- this._stopPopupTimer();
- }
- if(this._hoveredChild == item){ this._hoveredChild = null; }
- },
-
- _stopPopupTimer: function(){
- // summary:
- // Cancels the popup timer because the user has stop hovering
- // on the MenuItem, etc.
- // tags:
- // private
- if(this.hover_timer){
- clearTimeout(this.hover_timer);
- this.hover_timer = null;
- }
- },
-
- _stopPendingCloseTimer: function(/*dijit._Widget*/ popup){
- // summary:
- // Cancels the pending-close timer because the close has been preempted
- // tags:
- // private
- if(popup._pendingClose_timer){
- clearTimeout(popup._pendingClose_timer);
- popup._pendingClose_timer = null;
- }
- },
-
- _stopFocusTimer: function(){
- // summary:
- // Cancels the pending-focus timer because the menu was closed before focus occured
- // tags:
- // private
- if(this._focus_timer){
- clearTimeout(this._focus_timer);
- this._focus_timer = null;
- }
- },
-
- _getTopMenu: function(){
- // summary:
- // Returns the top menu in this chain of Menus
- // tags:
- // private
- for(var top=this; top.parentMenu; top=top.parentMenu);
- return top;
- },
-
- onItemClick: function(/*dijit._Widget*/ item, /*Event*/ evt){
- // summary:
- // Handle clicks on an item.
- // tags:
- // private
- if(item.disabled){ return false; }
-
- // this can't be done in _onFocus since the _onFocus events occurs asynchronously
- if(typeof this.isShowingNow == 'undefined'){ // non-popup menu
- this._markActive();
- }
-
- this.focusChild(item);
-
- if(item.popup){
- this._openPopup();
- }else{
- // before calling user defined handler, close hierarchy of menus
- // and restore focus to place it was when menu was opened
- this.onExecute();
-
- // user defined handler for click
- item.onClick(evt);
- }
- },
-
- _openPopup: function(){
- // summary:
- // Open the popup to the side of/underneath the current menu item
- // tags:
- // protected
-
- this._stopPopupTimer();
- var from_item = this.focusedChild;
- if(!from_item){ return; } // the focused child lost focus since the timer was started
- var popup = from_item.popup;
- if(popup.isShowingNow){ return; }
- if(this.currentPopup){
- this._stopPendingCloseTimer(this.currentPopup);
- dijit.popup.close(this.currentPopup);
- }
- popup.parentMenu = this;
- popup.from_item = from_item; // helps finding the parent item that should be focused for this popup
- var self = this;
- dijit.popup.open({
- parent: this,
- popup: popup,
- around: from_item.domNode,
- orient: this._orient || (this.isLeftToRight() ?
- {'TR': 'TL', 'TL': 'TR', 'BR': 'BL', 'BL': 'BR'} :
- {'TL': 'TR', 'TR': 'TL', 'BL': 'BR', 'BR': 'BL'}),
- onCancel: function(){ // called when the child menu is canceled
- // set isActive=false (_closeChild vs _cleanUp) so that subsequent hovering will NOT open child menus
- // which seems aligned with the UX of most applications (e.g. notepad, wordpad, paint shop pro)
- self.focusChild(from_item); // put focus back on my node
- self._cleanUp(); // close the submenu (be sure this is done _after_ focus is moved)
- from_item._setSelected(true); // oops, _cleanUp() deselected the item
- self.focusedChild = from_item; // and unset focusedChild
- },
- onExecute: dojo.hitch(this, "_cleanUp")
- });
-
- this.currentPopup = popup;
- // detect mouseovers to handle lazy mouse movements that temporarily focus other menu items
- popup.connect(popup.domNode, "onmouseenter", dojo.hitch(self, "_onPopupHover")); // cleaned up when the popped-up widget is destroyed on close
-
- if(popup.focus){
- // If user is opening the popup via keyboard (right arrow, or down arrow for MenuBar),
- // if the cursor happens to collide with the popup, it will generate an onmouseover event
- // even though the mouse wasn't moved. Use a setTimeout() to call popup.focus so that
- // our focus() call overrides the onmouseover event, rather than vice-versa. (#8742)
- popup._focus_timer = setTimeout(dojo.hitch(popup, function(){
- this._focus_timer = null;
- this.focus();
- }), 0);
- }
- },
-
- _markActive: function(){
- // summary:
- // Mark this menu's state as active.
- // Called when this Menu gets focus from:
- // 1) clicking it (mouse or via space/arrow key)
- // 2) being opened by a parent menu.
- // This is not called just from mouse hover.
- // Focusing a menu via TAB does NOT automatically set isActive
- // since TAB is a navigation operation and not a selection one.
- // For Windows apps, pressing the ALT key focuses the menubar
- // menus (similar to TAB navigation) but the menu is not active
- // (ie no dropdown) until an item is clicked.
- this.isActive = true;
- dojo.addClass(this.domNode, "dijitMenuActive");
- dojo.removeClass(this.domNode, "dijitMenuPassive");
- },
-
- onOpen: function(/*Event*/ e){
- // summary:
- // Callback when this menu is opened.
- // This is called by the popup manager as notification that the menu
- // was opened.
- // tags:
- // private
-
- this.isShowingNow = true;
- this._markActive();
- },
-
- _markInactive: function(){
- // summary:
- // Mark this menu's state as inactive.
- this.isActive = false; // don't do this in _onBlur since the state is pending-close until we get here
- dojo.removeClass(this.domNode, "dijitMenuActive");
- dojo.addClass(this.domNode, "dijitMenuPassive");
- },
-
- onClose: function(){
- // summary:
- // Callback when this menu is closed.
- // This is called by the popup manager as notification that the menu
- // was closed.
- // tags:
- // private
-
- this._stopFocusTimer();
- this._markInactive();
- this.isShowingNow = false;
- this.parentMenu = null;
- },
-
- _closeChild: function(){
- // summary:
- // Called when submenu is clicked or focus is lost. Close hierarchy of menus.
- // tags:
- // private
- this._stopPopupTimer();
- if(this.focusedChild){ // unhighlight the focused item
- this.focusedChild._setSelected(false);
- this.focusedChild._onUnhover();
- this.focusedChild = null;
- }
- if(this.currentPopup){
- // Close all popups that are open and descendants of this menu
- dijit.popup.close(this.currentPopup);
- this.currentPopup = null;
- }
- },
-
- _onItemFocus: function(/*MenuItem*/ item){
- // summary:
- // Called when child of this Menu gets focus from:
- // 1) clicking it
- // 2) tabbing into it
- // 3) being opened by a parent menu.
- // This is not called just from mouse hover.
- if(this._hoveredChild && this._hoveredChild != item){
- this._hoveredChild._onUnhover(); // any previous mouse movement is trumped by focus selection
- }
- },
-
- _onBlur: function(){
- // summary:
- // Called when focus is moved away from this Menu and it's submenus.
- // tags:
- // protected
- this._cleanUp();
- this.inherited(arguments);
- },
-
- _cleanUp: function(){
- // summary:
- // Called when the user is done with this menu. Closes hierarchy of menus.
- // tags:
- // private
-
- this._closeChild(); // don't call this.onClose since that's incorrect for MenuBar's that never close
- if(typeof this.isShowingNow == 'undefined'){ // non-popup menu doesn't call onClose
- this._markInactive();
- }
- }
-});
-
-dojo.declare("dijit.Menu",
- dijit._MenuBase,
- {
- // summary
- // A context menu you can assign to multiple elements
-
- // TODO: most of the code in here is just for context menu (right-click menu)
- // support. In retrospect that should have been a separate class (dijit.ContextMenu).
- // Split them for 2.0
-
- constructor: function(){
- this._bindings = [];
- },
-
- templateString: dojo.cache("dijit", "templates/Menu.html", "<table class=\"dijit dijitMenu dijitMenuPassive dijitReset dijitMenuTable\" waiRole=\"menu\" tabIndex=\"${tabIndex}\" dojoAttachEvent=\"onkeypress:_onKeyPress\">\n\t<tbody class=\"dijitReset\" dojoAttachPoint=\"containerNode\"></tbody>\n</table>\n"),
-
- // targetNodeIds: [const] String[]
- // Array of dom node ids of nodes to attach to.
- // Fill this with nodeIds upon widget creation and it becomes context menu for those nodes.
- targetNodeIds: [],
-
- // contextMenuForWindow: [const] Boolean
- // If true, right clicking anywhere on the window will cause this context menu to open.
- // If false, must specify targetNodeIds.
- contextMenuForWindow: false,
-
- // leftClickToOpen: [const] Boolean
- // If true, menu will open on left click instead of right click, similiar to a file menu.
- leftClickToOpen: false,
-
- // refocus: Boolean
- // When this menu closes, re-focus the element which had focus before it was opened.
- refocus: true,
-
- // _contextMenuWithMouse: [private] Boolean
- // Used to record mouse and keyboard events to determine if a context
- // menu is being opened with the keyboard or the mouse.
- _contextMenuWithMouse: false,
-
- postCreate: function(){
- if(this.contextMenuForWindow){
- this.bindDomNode(dojo.body());
- }else{
- // TODO: should have _setTargetNodeIds() method to handle initialization and a possible
- // later attr('targetNodeIds', ...) call. There's also a problem that targetNodeIds[]
- // gets stale after calls to bindDomNode()/unBindDomNode() as it still is just the original list (see #9610)
- dojo.forEach(this.targetNodeIds, this.bindDomNode, this);
- }
- var k = dojo.keys, l = this.isLeftToRight();
- this._openSubMenuKey = l ? k.RIGHT_ARROW : k.LEFT_ARROW;
- this._closeSubMenuKey = l ? k.LEFT_ARROW : k.RIGHT_ARROW;
- this.connectKeyNavHandlers([k.UP_ARROW], [k.DOWN_ARROW]);
- },
-
- _onKeyPress: function(/*Event*/ evt){
- // summary:
- // Handle keyboard based menu navigation.
- // tags:
- // protected
-
- if(evt.ctrlKey || evt.altKey){ return; }
-
- switch(evt.charOrCode){
- case this._openSubMenuKey:
- this._moveToPopup(evt);
- dojo.stopEvent(evt);
- break;
- case this._closeSubMenuKey:
- if(this.parentMenu){
- if(this.parentMenu._isMenuBar){
- this.parentMenu.focusPrev();
- }else{
- this.onCancel(false);
- }
- }else{
- dojo.stopEvent(evt);
- }
- break;
- }
- },
-
- // thanks burstlib!
- _iframeContentWindow: function(/* HTMLIFrameElement */iframe_el){
- // summary:
- // Returns the window reference of the passed iframe
- // tags:
- // private
- var win = dijit.getDocumentWindow(this._iframeContentDocument(iframe_el)) ||
- // Moz. TODO: is this available when defaultView isn't?
- this._iframeContentDocument(iframe_el)['__parent__'] ||
- (iframe_el.name && dojo.doc.frames[iframe_el.name]) || null;
- return win; // Window
- },
-
- _iframeContentDocument: function(/* HTMLIFrameElement */iframe_el){
- // summary:
- // Returns a reference to the document object inside iframe_el
- // tags:
- // protected
- var doc = iframe_el.contentDocument // W3
- || (iframe_el.contentWindow && iframe_el.contentWindow.document) // IE
- || (iframe_el.name && dojo.doc.frames[iframe_el.name] && dojo.doc.frames[iframe_el.name].document)
- || null;
- return doc; // HTMLDocument
- },
-
- bindDomNode: function(/*String|DomNode*/ node){
- // summary:
- // Attach menu to given node
- node = dojo.byId(node);
-
- var cn; // Connect node
-
- // Support context menus on iframes. Rather than binding to the iframe itself we need
- // to bind to the <body> node inside the iframe.
- if(node.tagName.toLowerCase() == "iframe"){
- var iframe = node,
- win = this._iframeContentWindow(iframe);
- cn = dojo.withGlobal(win, dojo.body);
- }else{
-
- // To capture these events at the top level, attach to <html>, not <body>.
- // Otherwise right-click context menu just doesn't work.
- cn = (node == dojo.body() ? dojo.doc.documentElement : node);
- }
-
-
- // "binding" is the object to track our connection to the node (ie, the parameter to bindDomNode())
- var binding = {
- node: node,
- iframe: iframe
- };
-
- // Save info about binding in _bindings[], and make node itself record index(+1) into
- // _bindings[] array. Prefix w/_dijitMenu to avoid setting an attribute that may
- // start with a number, which fails on FF/safari.
- dojo.attr(node, "_dijitMenu" + this.id, this._bindings.push(binding));
-
- // Setup the connections to monitor click etc., unless we are connecting to an iframe which hasn't finished
- // loading yet, in which case we need to wait for the onload event first, and then connect
- var doConnects = dojo.hitch(this, function(cn){
- return [
- dojo.connect(cn, (this.leftClickToOpen)?"onclick":"oncontextmenu", this, function(evt){
- this._openMyself(evt, cn, iframe);
- }),
- dojo.connect(cn, "onkeydown", this, "_contextKey"),
- dojo.connect(cn, "onmousedown", this, "_contextMouse")
- ];
- });
- binding.connects = cn ? doConnects(cn) : [];
-
- if(iframe){
- // Setup handler to [re]bind to the iframe when the contents are initially loaded,
- // and every time the contents change.
- // Need to do this b/c we are actually binding to the iframe's <body> node.
- // Note: can't use dojo.connect(), see #9609.
-
- binding.onloadHandler = dojo.hitch(this, function(){
- // want to remove old connections, but IE throws exceptions when trying to
- // access the <body> node because it's already gone, or at least in a state of limbo
-
- var win = this._iframeContentWindow(iframe);
- cn = dojo.withGlobal(win, dojo.body);
- binding.connects = doConnects(cn);
- });
- if(iframe.addEventListener){
- iframe.addEventListener("load", binding.onloadHandler, false);
- }else{
- iframe.attachEvent("onload", binding.onloadHandler);
- }
- }
- },
-
- unBindDomNode: function(/*String|DomNode*/ nodeName){
- // summary:
- // Detach menu from given node
-
- var node;
- try{
- node = dojo.byId(nodeName);
- }catch(e){
- // On IE the dojo.byId() call will get an exception if the attach point was
- // the <body> node of an <iframe> that has since been reloaded (and thus the
- // <body> node is in a limbo state of destruction.
- return;
- }
-
- // node["_dijitMenu" + this.id] contains index(+1) into my _bindings[] array
- var attrName = "_dijitMenu" + this.id;
- if(node && dojo.hasAttr(node, attrName)){
- var bid = dojo.attr(node, attrName)-1, b = this._bindings[bid];
- dojo.forEach(b.connects, dojo.disconnect);
-
- // Remove listener for iframe onload events
- var iframe = b.iframe;
- if(iframe){
- if(iframe.removeEventListener){
- iframe.removeEventListener("load", b.onloadHandler, false);
- }else{
- iframe.detachEvent("onload", b.onloadHandler);
- }
- }
-
- dojo.removeAttr(node, attrName);
- delete this._bindings[bid];
- }
- },
-
- _contextKey: function(e){
- // summary:
- // Code to handle popping up editor using F10 key rather than mouse
- // tags:
- // private
- this._contextMenuWithMouse = false;
- if(e.keyCode == dojo.keys.F10){
- dojo.stopEvent(e);
- if(e.shiftKey && e.type == "keydown"){
- // FF: copying the wrong property from e will cause the system
- // context menu to appear in spite of stopEvent. Don't know
- // exactly which properties cause this effect.
- var _e = { target: e.target, pageX: e.pageX, pageY: e.pageY };
- _e.preventDefault = _e.stopPropagation = function(){};
- // IE: without the delay, focus work in "open" causes the system
- // context menu to appear in spite of stopEvent.
- window.setTimeout(dojo.hitch(this, function(){ this._openMyself(_e); }), 1);
- }
- }
- },
-
- _contextMouse: function(e){
- // summary:
- // Helper to remember when we opened the context menu with the mouse instead
- // of with the keyboard
- // tags:
- // private
- this._contextMenuWithMouse = true;
- },
-
- _openMyself: function(/*Event*/ e, /*DomNode?*/ node, /*DomNode?*/ iframe){
- // summary:
- // Internal function for opening myself when the user
- // does a right-click or something similar.
- // node:
- // The node that is being clicked
- // iframe:
- // If an <iframe> is being clicked, iframe points to that iframe and node
- // points to the iframe's body.
- // tags:
- // private
-
- if(this.leftClickToOpen && e.button>0){
- return;
- }
- dojo.stopEvent(e);
-
- // Get coordinates.
- // If we are opening the menu with the mouse or on safari open
- // the menu at the mouse cursor
- // (Safari does not have a keyboard command to open the context menu
- // and we don't currently have a reliable way to determine
- // _contextMenuWithMouse on Safari)
- var x,y;
- if(dojo.isSafari || this._contextMenuWithMouse){
- x=e.pageX;
- y=e.pageY;
-
- if(iframe){
- // Event is on <body> node of an <iframe>, convert coordinates to match main document
- var od = e.target.ownerDocument,
- ifc = dojo.position(iframe, true),
- win = this._iframeContentWindow(iframe),
- scroll = dojo.withGlobal(win, "_docScroll", dojo);
-
- var cs = dojo.getComputedStyle(iframe),
- tp = dojo._toPixelValue,
- left = (dojo.isIE && dojo.isQuirks ? 0 : tp(iframe, cs.paddingLeft)) + (dojo.isIE && dojo.isQuirks ? tp(iframe, cs.borderLeftWidth) : 0),
- top = (dojo.isIE && dojo.isQuirks ? 0 : tp(iframe, cs.paddingTop)) + (dojo.isIE && dojo.isQuirks ? tp(iframe, cs.borderTopWidth) : 0);
-
- x += ifc.x + left - scroll.x;
- y += ifc.y + top - scroll.y;
- }
- }else{
- // otherwise open near e.target
- var coords = dojo.position(e.target, true);
- x = coords.x + 10;
- y = coords.y + 10;
- }
-
- var self=this;
- var savedFocus = dijit.getFocus(this);
- function closeAndRestoreFocus(){
- // user has clicked on a menu or popup
- if(self.refocus){
- dijit.focus(savedFocus);
- }
- dijit.popup.close(self);
- }
- dijit.popup.open({
- popup: this,
- x: x,
- y: y,
- onExecute: closeAndRestoreFocus,
- onCancel: closeAndRestoreFocus,
- orient: this.isLeftToRight() ? 'L' : 'R'
- });
- this.focus();
-
- this._onBlur = function(){
- this.inherited('_onBlur', arguments);
- // Usually the parent closes the child widget but if this is a context
- // menu then there is no parent
- dijit.popup.close(this);
- // don't try to restore focus; user has clicked another part of the screen
- // and set focus there
- };
- },
-
- uninitialize: function(){
- dojo.forEach(this._bindings, function(b){ if(b){ this.unBindDomNode(b.node); } }, this);
- this.inherited(arguments);
- }
-}
-);
-
-// Back-compat (TODO: remove in 2.0)
-dojo.require("dijit.MenuItem");
-dojo.require("dijit.PopupMenuItem");
-dojo.require("dijit.CheckedMenuItem");
-dojo.require("dijit.MenuSeparator");
-
-
-}
diff --git a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/MenuBar.js b/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/MenuBar.js
deleted file mode 100644
index dbf1eb3..0000000
--- a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/MenuBar.js
+++ /dev/null
@@ -1,82 +0,0 @@
-/*
- Copyright (c) 2004-2009, The Dojo Foundation All Rights Reserved.
- Available via Academic Free License >= 2.1 OR the modified BSD license.
- see: http://dojotoolkit.org/license for details
-*/
-
-
-if(!dojo._hasResource["dijit.MenuBar"]){ //_hasResource checks added by build. Do not use _hasResource directly in your code.
-dojo._hasResource["dijit.MenuBar"] = true;
-dojo.provide("dijit.MenuBar");
-
-dojo.require("dijit.Menu");
-
-dojo.declare("dijit.MenuBar", dijit._MenuBase, {
- // summary:
- // A menu bar, listing menu choices horizontally, like the "File" menu in most desktop applications
-
- templateString: dojo.cache("dijit", "templates/MenuBar.html", "<div class=\"dijitMenuBar dijitMenuPassive\" dojoAttachPoint=\"containerNode\" waiRole=\"menubar\" tabIndex=\"${tabIndex}\" dojoAttachEvent=\"onkeypress: _onKeyPress\"></div>\n"),
-
- // _isMenuBar: [protected] Boolean
- // This is a MenuBar widget, not a (vertical) Menu widget.
- _isMenuBar: true,
-
- constructor: function(){
- // summary:
- // Sets up local variables etc.
- // tags:
- // private
-
- // parameter to dijit.popup.open() about where to put popup (relative to this.domNode)
- this._orient = this.isLeftToRight() ? {BL: 'TL'} : {BR: 'TR'};
- },
-
- postCreate: function(){
- var k = dojo.keys, l = this.isLeftToRight();
- this.connectKeyNavHandlers(
- l ? [k.LEFT_ARROW] : [k.RIGHT_ARROW],
- l ? [k.RIGHT_ARROW] : [k.LEFT_ARROW]
- );
- },
-
- focusChild: function(item){
- // overload focusChild so that whenever the focus is moved to a new item,
- // check the previous focused whether it has its popup open, if so, after
- // focusing the new item, open its submenu immediately
- var prev_item = this.focusedChild,
- showpopup = prev_item && prev_item.popup && prev_item.popup.isShowingNow;
- this.inherited(arguments);
- if(showpopup && item.popup && !item.disabled){
- this._openPopup(); // TODO: on down arrow, _openPopup() is called here and in onItemClick()
- }
- },
-
- _onKeyPress: function(/*Event*/ evt){
- // summary:
- // Handle keyboard based menu navigation.
- // tags:
- // protected
-
- if(evt.ctrlKey || evt.altKey){ return; }
-
- switch(evt.charOrCode){
- case dojo.keys.DOWN_ARROW:
- this._moveToPopup(evt);
- dojo.stopEvent(evt);
- }
- },
-
- onItemClick: function(/*dijit._Widget*/ item, /*Event*/ evt){
- // summary:
- // Handle clicks on an item. Cancels a dropdown if already open.
- // tags:
- // private
- if(item.popup && item.popup.isShowingNow){
- item.popup.onCancel();
- }else{
- this.inherited(arguments);
- }
- }
-});
-
-}
diff --git a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/MenuBarItem.js b/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/MenuBarItem.js
deleted file mode 100644
index a191c2c..0000000
--- a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/MenuBarItem.js
+++ /dev/null
@@ -1,29 +0,0 @@
-/*
- Copyright (c) 2004-2009, The Dojo Foundation All Rights Reserved.
- Available via Academic Free License >= 2.1 OR the modified BSD license.
- see: http://dojotoolkit.org/license for details
-*/
-
-
-if(!dojo._hasResource["dijit.MenuBarItem"]){ //_hasResource checks added by build. Do not use _hasResource directly in your code.
-dojo._hasResource["dijit.MenuBarItem"] = true;
-dojo.provide("dijit.MenuBarItem");
-
-dojo.require("dijit.MenuItem");
-
-dojo.declare("dijit._MenuBarItemMixin", null, {
- templateString: dojo.cache("dijit", "templates/MenuBarItem.html", "<div class=\"dijitReset dijitInline dijitMenuItem dijitMenuItemLabel\" dojoAttachPoint=\"focusNode\" waiRole=\"menuitem\" tabIndex=\"-1\"'\n\t\tdojoAttachEvent=\"onmouseenter:_onHover,onmouseleave:_onUnhover,ondijitclick:_onClick\">\n\t<span dojoAttachPoint=\"containerNode\"></span>\n</div>\n"),
-
- // overriding attributeMap because we don't have icon
- attributeMap: dojo.delegate(dijit._Widget.prototype.attributeMap, {
- label: { node: "containerNode", type: "innerHTML" }
- })
-});
-
-dojo.declare("dijit.MenuBarItem", [dijit.MenuItem, dijit._MenuBarItemMixin], {
- // summary:
- // Item in a MenuBar that's clickable, and doesn't spawn a submenu when pressed (or hovered)
-
-});
-
-}
diff --git a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/MenuItem.js b/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/MenuItem.js
deleted file mode 100644
index 59597c2..0000000
--- a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/MenuItem.js
+++ /dev/null
@@ -1,192 +0,0 @@
-/*
- Copyright (c) 2004-2009, The Dojo Foundation All Rights Reserved.
- Available via Academic Free License >= 2.1 OR the modified BSD license.
- see: http://dojotoolkit.org/license for details
-*/
-
-
-if(!dojo._hasResource["dijit.MenuItem"]){ //_hasResource checks added by build. Do not use _hasResource directly in your code.
-dojo._hasResource["dijit.MenuItem"] = true;
-dojo.provide("dijit.MenuItem");
-
-dojo.require("dijit._Widget");
-dojo.require("dijit._Templated");
-dojo.require("dijit._Contained");
-
-dojo.declare("dijit.MenuItem",
- [dijit._Widget, dijit._Templated, dijit._Contained],
- {
- // summary:
- // A line item in a Menu Widget
-
- // Make 3 columns
- // icon, label, and expand arrow (BiDi-dependent) indicating sub-menu
- templateString: dojo.cache("dijit", "templates/MenuItem.html", "<tr class=\"dijitReset dijitMenuItem\" dojoAttachPoint=\"focusNode\" waiRole=\"menuitem\" tabIndex=\"-1\"\n\t\tdojoAttachEvent=\"onmouseenter:_onHover,onmouseleave:_onUnhover,ondijitclick:_onClick\">\n\t<td class=\"dijitReset\" waiRole=\"presentation\">\n\t\t<img src=\"${_blankGif}\" alt=\"\" class=\"dijitMenuItemIcon\" dojoAttachPoint=\"iconNode\">\n\t</td>\n\t<td class=\"dijitReset dijitMenuItemLabel\" colspan=\"2\" dojoAttachPoint=\"containerNode\"></td>\n\t<td class=\"dijitReset dijitMenuItemAccelKey\" style=\"display: none\" dojoAttachPoint=\"accelKeyNode\"></td>\n\t<td class=\"dijitReset dijitMenuArrowCell\" waiRole=\"presentation\">\n\t\t<div dojoAttachPoint=\"arrowWrapper\" style=\"visibility: hidden\">\n\t\t\t<img src=\"${_blankGif}\" alt=\"\" class=\"dijitMenuExpand\">\n\t\t\t<span class=\"dijitMenuExpandA11y\">+</span>\n\t\t</div>\n\t</td>\n</tr>\n"),
-
- attributeMap: dojo.delegate(dijit._Widget.prototype.attributeMap, {
- label: { node: "containerNode", type: "innerHTML" },
- iconClass: { node: "iconNode", type: "class" }
- }),
-
- // label: String
- // Menu text
- label: '',
-
- // iconClass: String
- // Class to apply to DOMNode to make it display an icon.
- iconClass: "",
-
- // accelKey: String
- // Text for the accelerator (shortcut) key combination.
- // Note that although Menu can display accelerator keys there
- // is no infrastructure to actually catch and execute these
- // accelerators.
- accelKey: "",
-
- // disabled: Boolean
- // If true, the menu item is disabled.
- // If false, the menu item is enabled.
- disabled: false,
-
- _fillContent: function(/*DomNode*/ source){
- // If button label is specified as srcNodeRef.innerHTML rather than
- // this.params.label, handle it here.
- if(source && !("label" in this.params)){
- this.attr('label', source.innerHTML);
- }
- },
-
- postCreate: function(){
- dojo.setSelectable(this.domNode, false);
- var label = this.id+"_text";
- dojo.attr(this.containerNode, "id", label);
- if(this.accelKeyNode){
- dojo.attr(this.accelKeyNode, "id", this.id + "_accel");
- label += " " + this.id + "_accel";
- }
- dijit.setWaiState(this.domNode, "labelledby", label);
- },
-
- _onHover: function(){
- // summary:
- // Handler when mouse is moved onto menu item
- // tags:
- // protected
- dojo.addClass(this.domNode, 'dijitMenuItemHover');
- this.getParent().onItemHover(this);
- },
-
- _onUnhover: function(){
- // summary:
- // Handler when mouse is moved off of menu item,
- // possibly to a child menu, or maybe to a sibling
- // menuitem or somewhere else entirely.
- // tags:
- // protected
-
- // if we are unhovering the currently selected item
- // then unselect it
- dojo.removeClass(this.domNode, 'dijitMenuItemHover');
- this.getParent().onItemUnhover(this);
- },
-
- _onClick: function(evt){
- // summary:
- // Internal handler for click events on MenuItem.
- // tags:
- // private
- this.getParent().onItemClick(this, evt);
- dojo.stopEvent(evt);
- },
-
- onClick: function(/*Event*/ evt){
- // summary:
- // User defined function to handle clicks
- // tags:
- // callback
- },
-
- focus: function(){
- // summary:
- // Focus on this MenuItem
- try{
- if(dojo.isIE == 8){
- // needed for IE8 which won't scroll TR tags into view on focus yet calling scrollIntoView creates flicker (#10275)
- this.containerNode.focus();
- }
- dijit.focus(this.focusNode);
- }catch(e){
- // this throws on IE (at least) in some scenarios
- }
- },
-
- _onFocus: function(){
- // summary:
- // This is called by the focus manager when focus
- // goes to this MenuItem or a child menu.
- // tags:
- // protected
- this._setSelected(true);
- this.getParent()._onItemFocus(this);
-
- this.inherited(arguments);
- },
-
- _setSelected: function(selected){
- // summary:
- // Indicate that this node is the currently selected one
- // tags:
- // private
-
- /***
- * TODO: remove this method and calls to it, when _onBlur() is working for MenuItem.
- * Currently _onBlur() gets called when focus is moved from the MenuItem to a child menu.
- * That's not supposed to happen, but the problem is:
- * In order to allow dijit.popup's getTopPopup() to work,a sub menu's popupParent
- * points to the parent Menu, bypassing the parent MenuItem... thus the
- * MenuItem is not in the chain of active widgets and gets a premature call to
- * _onBlur()
- */
-
- dojo.toggleClass(this.domNode, "dijitMenuItemSelected", selected);
- },
-
- setLabel: function(/*String*/ content){
- // summary:
- // Deprecated. Use attr('label', ...) instead.
- // tags:
- // deprecated
- dojo.deprecated("dijit.MenuItem.setLabel() is deprecated. Use attr('label', ...) instead.", "", "2.0");
- this.attr("label", content);
- },
-
- setDisabled: function(/*Boolean*/ disabled){
- // summary:
- // Deprecated. Use attr('disabled', bool) instead.
- // tags:
- // deprecated
- dojo.deprecated("dijit.Menu.setDisabled() is deprecated. Use attr('disabled', bool) instead.", "", "2.0");
- this.attr('disabled', disabled);
- },
- _setDisabledAttr: function(/*Boolean*/ value){
- // summary:
- // Hook for attr('disabled', ...) to work.
- // Enable or disable this menu item.
- this.disabled = value;
- dojo[value ? "addClass" : "removeClass"](this.domNode, 'dijitMenuItemDisabled');
- dijit.setWaiState(this.focusNode, 'disabled', value ? 'true' : 'false');
- },
- _setAccelKeyAttr: function(/*String*/ value){
- // summary:
- // Hook for attr('accelKey', ...) to work.
- // Set accelKey on this menu item.
- this.accelKey=value;
-
- this.accelKeyNode.style.display=value?"":"none";
- this.accelKeyNode.innerHTML=value;
- //have to use colSpan to make it work in IE
- dojo.attr(this.containerNode,'colSpan',value?"1":"2");
- }
- });
-
-}
diff --git a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/MenuSeparator.js b/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/MenuSeparator.js
deleted file mode 100644
index 60e38fa..0000000
--- a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/MenuSeparator.js
+++ /dev/null
@@ -1,39 +0,0 @@
-/*
- Copyright (c) 2004-2009, The Dojo Foundation All Rights Reserved.
- Available via Academic Free License >= 2.1 OR the modified BSD license.
- see: http://dojotoolkit.org/license for details
-*/
-
-
-if(!dojo._hasResource["dijit.MenuSeparator"]){ //_hasResource checks added by build. Do not use _hasResource directly in your code.
-dojo._hasResource["dijit.MenuSeparator"] = true;
-dojo.provide("dijit.MenuSeparator");
-
-dojo.require("dijit._Widget");
-dojo.require("dijit._Templated");
-dojo.require("dijit._Contained");
-
-dojo.declare("dijit.MenuSeparator",
- [dijit._Widget, dijit._Templated, dijit._Contained],
- {
- // summary:
- // A line between two menu items
-
- templateString: dojo.cache("dijit", "templates/MenuSeparator.html", "<tr class=\"dijitMenuSeparator\">\n\t<td colspan=\"4\">\n\t\t<div class=\"dijitMenuSeparatorTop\"></div>\n\t\t<div class=\"dijitMenuSeparatorBottom\"></div>\n\t</td>\n</tr>\n"),
-
- postCreate: function(){
- dojo.setSelectable(this.domNode, false);
- },
-
- isFocusable: function(){
- // summary:
- // Override to always return false
- // tags:
- // protected
-
- return false; // Boolean
- }
- });
-
-
-}
diff --git a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/PopupMenuBarItem.js b/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/PopupMenuBarItem.js
deleted file mode 100644
index 31e9942..0000000
--- a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/PopupMenuBarItem.js
+++ /dev/null
@@ -1,21 +0,0 @@
-/*
- Copyright (c) 2004-2009, The Dojo Foundation All Rights Reserved.
- Available via Academic Free License >= 2.1 OR the modified BSD license.
- see: http://dojotoolkit.org/license for details
-*/
-
-
-if(!dojo._hasResource["dijit.PopupMenuBarItem"]){ //_hasResource checks added by build. Do not use _hasResource directly in your code.
-dojo._hasResource["dijit.PopupMenuBarItem"] = true;
-dojo.provide("dijit.PopupMenuBarItem");
-
-dojo.require("dijit.PopupMenuItem");
-dojo.require("dijit.MenuBarItem");
-
-dojo.declare("dijit.PopupMenuBarItem", [dijit.PopupMenuItem, dijit._MenuBarItemMixin], {
- // summary:
- // Item in a MenuBar like "File" or "Edit", that spawns a submenu when pressed (or hovered)
-});
-
-
-}
diff --git a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/PopupMenuItem.js b/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/PopupMenuItem.js
deleted file mode 100644
index 4632774..0000000
--- a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/PopupMenuItem.js
+++ /dev/null
@@ -1,74 +0,0 @@
-/*
- Copyright (c) 2004-2009, The Dojo Foundation All Rights Reserved.
- Available via Academic Free License >= 2.1 OR the modified BSD license.
- see: http://dojotoolkit.org/license for details
-*/
-
-
-if(!dojo._hasResource["dijit.PopupMenuItem"]){ //_hasResource checks added by build. Do not use _hasResource directly in your code.
-dojo._hasResource["dijit.PopupMenuItem"] = true;
-dojo.provide("dijit.PopupMenuItem");
-
-dojo.require("dijit.MenuItem");
-
-dojo.declare("dijit.PopupMenuItem",
- dijit.MenuItem,
- {
- _fillContent: function(){
- // summary:
- // When Menu is declared in markup, this code gets the menu label and
- // the popup widget from the srcNodeRef.
- // description:
- // srcNodeRefinnerHTML contains both the menu item text and a popup widget
- // The first part holds the menu item text and the second part is the popup
- // example:
- // | <div dojoType="dijit.PopupMenuItem">
- // | <span>pick me</span>
- // | <popup> ... </popup>
- // | </div>
- // tags:
- // protected
-
- if(this.srcNodeRef){
- var nodes = dojo.query("*", this.srcNodeRef);
- dijit.PopupMenuItem.superclass._fillContent.call(this, nodes[0]);
-
- // save pointer to srcNode so we can grab the drop down widget after it's instantiated
- this.dropDownContainer = this.srcNodeRef;
- }
- },
-
- startup: function(){
- if(this._started){ return; }
- this.inherited(arguments);
-
- // we didn't copy the dropdown widget from the this.srcNodeRef, so it's in no-man's
- // land now. move it to dojo.doc.body.
- if(!this.popup){
- var node = dojo.query("[widgetId]", this.dropDownContainer)[0];
- this.popup = dijit.byNode(node);
- }
- dojo.body().appendChild(this.popup.domNode);
-
- this.popup.domNode.style.display="none";
- if(this.arrowWrapper){
- dojo.style(this.arrowWrapper, "visibility", "");
- }
- dijit.setWaiState(this.focusNode, "haspopup", "true");
- },
-
- destroyDescendants: function(){
- if(this.popup){
- // Destroy the popup, unless it's already been destroyed. This can happen because
- // the popup is a direct child of <body> even though it's logically my child.
- if(!this.popup._destroyed){
- this.popup.destroyRecursive();
- }
- delete this.popup;
- }
- this.inherited(arguments);
- }
- });
-
-
-}
diff --git a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/ProgressBar.js b/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/ProgressBar.js
deleted file mode 100644
index d8c6758..0000000
--- a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/ProgressBar.js
+++ /dev/null
@@ -1,146 +0,0 @@
-/*
- Copyright (c) 2004-2009, The Dojo Foundation All Rights Reserved.
- Available via Academic Free License >= 2.1 OR the modified BSD license.
- see: http://dojotoolkit.org/license for details
-*/
-
-
-if(!dojo._hasResource["dijit.ProgressBar"]){ //_hasResource checks added by build. Do not use _hasResource directly in your code.
-dojo._hasResource["dijit.ProgressBar"] = true;
-dojo.provide("dijit.ProgressBar");
-
-dojo.require("dojo.fx");
-dojo.require("dojo.number");
-
-dojo.require("dijit._Widget");
-dojo.require("dijit._Templated");
-
-dojo.declare("dijit.ProgressBar", [dijit._Widget, dijit._Templated], {
- // summary:
- // A progress indication widget, showing the amount completed
- // (often the percentage completed) of a task.
- //
- // example:
- // | <div dojoType="ProgressBar"
- // | places="0"
- // | progress="..." maximum="...">
- // | </div>
- //
- // description:
- // Note that the progress bar is updated via (a non-standard)
- // update() method, rather than via attr() like other widgets.
-
- // progress: [const] String (Percentage or Number)
- // Number or percentage indicating amount of task completed.
- // With "%": percentage value, 0% <= progress <= 100%, or
- // without "%": absolute value, 0 <= progress <= maximum
- // TODO: rename to value for 2.0
- progress: "0",
-
- // maximum: [const] Float
- // Max sample number
- maximum: 100,
-
- // places: [const] Number
- // Number of places to show in values; 0 by default
- places: 0,
-
- // indeterminate: [const] Boolean
- // If false: show progress value (number or percentage).
- // If true: show that a process is underway but that the amount completed is unknown.
- indeterminate: false,
-
- // name: String
- // this is the field name (for a form) if set. This needs to be set if you want to use
- // this widget in a dijit.form.Form widget (such as dijit.Dialog)
- name: '',
-
- templateString: dojo.cache("dijit", "templates/ProgressBar.html", "<div class=\"dijitProgressBar dijitProgressBarEmpty\"\n\t><div waiRole=\"progressbar\" dojoAttachPoint=\"internalProgress\" class=\"dijitProgressBarFull\"\n\t\t><div class=\"dijitProgressBarTile\"></div\n\t\t><span style=\"visibility:hidden\"> </span\n\t></div\n\t><div dojoAttachPoint=\"label\" class=\"dijitProgressBarLabel\" id=\"${id}_label\"> </div\n\t><img dojoAttachPoint=\"indeterminateHighContrastImage\" class=\"dijitProgressBarIndeterminateHighContrastImage\" alt=\"\"\n\t></img\n></div>\n"),
-
- // _indeterminateHighContrastImagePath: [private] dojo._URL
- // URL to image to use for indeterminate progress bar when display is in high contrast mode
- _indeterminateHighContrastImagePath:
- dojo.moduleUrl("dijit", "themes/a11y/indeterminate_progress.gif"),
-
- // public functions
- postCreate: function(){
- this.inherited(arguments);
- this.indeterminateHighContrastImage.setAttribute("src",
- this._indeterminateHighContrastImagePath.toString());
- this.update();
- },
-
- update: function(/*Object?*/attributes){
- // summary:
- // Change attributes of ProgressBar, similar to attr(hash).
- //
- // attributes:
- // May provide progress and/or maximum properties on this parameter;
- // see attribute specs for details.
- //
- // example:
- // | myProgressBar.update({'indeterminate': true});
- // | myProgressBar.update({'progress': 80});
-
- // TODO: deprecate this method and use attr() instead
-
- dojo.mixin(this, attributes || {});
- var tip = this.internalProgress;
- var percent = 1, classFunc;
- if(this.indeterminate){
- classFunc = "addClass";
- dijit.removeWaiState(tip, "valuenow");
- dijit.removeWaiState(tip, "valuemin");
- dijit.removeWaiState(tip, "valuemax");
- }else{
- classFunc = "removeClass";
- if(String(this.progress).indexOf("%") != -1){
- percent = Math.min(parseFloat(this.progress)/100, 1);
- this.progress = percent * this.maximum;
- }else{
- this.progress = Math.min(this.progress, this.maximum);
- percent = this.progress / this.maximum;
- }
- var text = this.report(percent);
- this.label.firstChild.nodeValue = text;
- dijit.setWaiState(tip, "describedby", this.label.id);
- dijit.setWaiState(tip, "valuenow", this.progress);
- dijit.setWaiState(tip, "valuemin", 0);
- dijit.setWaiState(tip, "valuemax", this.maximum);
- }
- dojo[classFunc](this.domNode, "dijitProgressBarIndeterminate");
- tip.style.width = (percent * 100) + "%";
- this.onChange();
- },
-
- _setValueAttr: function(v){
- if(v == Infinity){
- this.update({indeterminate:true});
- }else{
- this.update({indeterminate:false, progress:v});
- }
- },
-
- _getValueAttr: function(){
- return this.progress;
- },
-
- report: function(/*float*/percent){
- // summary:
- // Generates message to show inside progress bar (normally indicating amount of task completed).
- // May be overridden.
- // tags:
- // extension
-
- return dojo.number.format(percent, { type: "percent", places: this.places, locale: this.lang });
- },
-
- onChange: function(){
- // summary:
- // Callback fired when progress updates.
- // tags:
- // progress
- }
-});
-
-}
diff --git a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/TitlePane.js b/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/TitlePane.js
deleted file mode 100644
index e4d65f8..0000000
--- a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/TitlePane.js
+++ /dev/null
@@ -1,271 +0,0 @@
-/*
- Copyright (c) 2004-2009, The Dojo Foundation All Rights Reserved.
- Available via Academic Free License >= 2.1 OR the modified BSD license.
- see: http://dojotoolkit.org/license for details
-*/
-
-
-if(!dojo._hasResource["dijit.TitlePane"]){ //_hasResource checks added by build. Do not use _hasResource directly in your code.
-dojo._hasResource["dijit.TitlePane"] = true;
-dojo.provide("dijit.TitlePane");
-
-dojo.require("dojo.fx");
-
-dojo.require("dijit._Templated");
-dojo.require("dijit.layout.ContentPane");
-
-dojo.declare(
- "dijit.TitlePane",
- [dijit.layout.ContentPane, dijit._Templated],
-{
- // summary:
- // A pane with a title on top, that can be expanded or collapsed.
- //
- // description:
- // An accessible container with a title Heading, and a content
- // section that slides open and closed. TitlePane is an extension to
- // `dijit.layout.ContentPane`, providing all the useful content-control aspects from it.
- //
- // example:
- // | // load a TitlePane from remote file:
- // | var foo = new dijit.TitlePane({ href: "foobar.html", title:"Title" });
- // | foo.startup();
- //
- // example:
- // | <!-- markup href example: -->
- // | <div dojoType="dijit.TitlePane" href="foobar.html" title="Title"></div>
- //
- // example:
- // | <!-- markup with inline data -->
- // | <div dojoType="dijit.TitlePane" title="Title">
- // | <p>I am content</p>
- // | </div>
-
- // title: String
- // Title of the pane
- title: "",
-
- // open: Boolean
- // Whether pane is opened or closed.
- open: true,
-
- // toggleable: Boolean
- // Whether pane can be opened or closed by clicking the title bar.
- toggleable: true,
-
- // tabIndex: String
- // Tabindex setting for the title (so users can tab to the title then
- // use space/enter to open/close the title pane)
- tabIndex: "0",
-
- // duration: Integer
- // Time in milliseconds to fade in/fade out
- duration: dijit.defaultDuration,
-
- // baseClass: [protected] String
- // The root className to be placed on this widget's domNode.
- baseClass: "dijitTitlePane",
-
- templateString: dojo.cache("dijit", "templates/TitlePane.html", "<div class=\"${baseClass}\">\n\t<div dojoAttachEvent=\"onclick:_onTitleClick, onkeypress:_onTitleKey, onfocus:_handleFocus, onblur:_handleFocus, onmouseenter:_onTitleEnter, onmouseleave:_onTitleLeave\"\n\t\t\tclass=\"dijitTitlePaneTitle\" dojoAttachPoint=\"titleBarNode,focusNode\">\n\t\t<img src=\"${_blankGif}\" alt=\"\" dojoAttachPoint=\"arrowNode\" class=\"dijitArrowNode\" waiRole=\"presentation\"\n\t\t><span dojoAttachPoint=\"arrowNodeInner\" class=\"dijitArrowNodeInner\"></span\n\t\t><span dojoAttachPoint=\"titleNode\" class=\"dijitTitlePaneTextNode\"></span>\n\t</div>\n\t<div class=\"dijitTitlePaneContentOuter\" dojoAttachPoint=\"hideNode\" waiRole=\"presentation\">\n\t\t<div class=\"dijitReset\" dojoAttachPoint=\"wipeNode\" waiRole=\"presentation\">\n\t\t\t<div class=\"dijitTitlePaneContentInner\" dojoAttachPoint=\"containerNode\" waiRole=\"region\" tabindex=\"-1\" id=\"${id}_pane\">\n\t\t\t\t<!-- nested divs because wipeIn()/wipeOut() doesn't work right on node w/padding etc. Put padding on inner div. -->\n\t\t\t</div>\n\t\t</div>\n\t</div>\n</div>\n"),
-
- attributeMap: dojo.delegate(dijit.layout.ContentPane.prototype.attributeMap, {
- title: { node: "titleNode", type: "innerHTML" },
- tooltip: {node: "focusNode", type: "attribute", attribute: "title"}, // focusNode spans the entire width, titleNode doesn't
- id:""
- }),
-
- postCreate: function(){
- if(!this.open){
- this.hideNode.style.display = this.wipeNode.style.display = "none";
- }
- this._setCss();
- dojo.setSelectable(this.titleNode, false);
- dijit.setWaiState(this.containerNode,"hidden", this.open ? "false" : "true");
- dijit.setWaiState(this.focusNode, "pressed", this.open ? "true" : "false");
-
- // setup open/close animations
- var hideNode = this.hideNode, wipeNode = this.wipeNode;
- this._wipeIn = dojo.fx.wipeIn({
- node: this.wipeNode,
- duration: this.duration,
- beforeBegin: function(){
- hideNode.style.display="";
- }
- });
- this._wipeOut = dojo.fx.wipeOut({
- node: this.wipeNode,
- duration: this.duration,
- onEnd: function(){
- hideNode.style.display="none";
- }
- });
- this.inherited(arguments);
- },
-
- _setOpenAttr: function(/* Boolean */ open){
- // summary:
- // Hook to make attr("open", boolean) control the open/closed state of the pane.
- // open: Boolean
- // True if you want to open the pane, false if you want to close it.
- if(this.open !== open){ this.toggle(); }
- },
-
- _setToggleableAttr: function(/* Boolean */ canToggle){
- // summary:
- // Hook to make attr("canToggle", boolean) work.
- // canToggle: Boolean
- // True to allow user to open/close pane by clicking title bar.
- this.toggleable = canToggle;
- dijit.setWaiRole(this.focusNode, canToggle ? "button" : "heading");
- dojo.attr(this.focusNode, "tabIndex", canToggle ? this.tabIndex : "-1");
- if(canToggle){
- // TODO: if canToggle is switched from true false shouldn't we remove this setting?
- dijit.setWaiState(this.focusNode, "controls", this.id+"_pane");
- }
- this._setCss();
- },
-
- _setContentAttr: function(content){
- // summary:
- // Hook to make attr("content", ...) work.
- // Typically called when an href is loaded. Our job is to make the animation smooth.
-
- if(!this.open || !this._wipeOut || this._wipeOut.status() == "playing"){
- // we are currently *closing* the pane (or the pane is closed), so just let that continue
- this.inherited(arguments);
- }else{
- if(this._wipeIn && this._wipeIn.status() == "playing"){
- this._wipeIn.stop();
- }
-
- // freeze container at current height so that adding new content doesn't make it jump
- dojo.marginBox(this.wipeNode, { h: dojo.marginBox(this.wipeNode).h });
-
- // add the new content (erasing the old content, if any)
- this.inherited(arguments);
-
- // call _wipeIn.play() to animate from current height to new height
- if(this._wipeIn){
- this._wipeIn.play();
- }else{
- this.hideNode.style.display = "";
- }
- }
- },
-
- toggle: function(){
- // summary:
- // Switches between opened and closed state
- // tags:
- // private
-
- dojo.forEach([this._wipeIn, this._wipeOut], function(animation){
- if(animation && animation.status() == "playing"){
- animation.stop();
- }
- });
-
- var anim = this[this.open ? "_wipeOut" : "_wipeIn"]
- if(anim){
- anim.play();
- }else{
- this.hideNode.style.display = this.open ? "" : "none";
- }
- this.open =! this.open;
- dijit.setWaiState(this.containerNode, "hidden", this.open ? "false" : "true");
- dijit.setWaiState(this.focusNode, "pressed", this.open ? "true" : "false");
-
- // load content (if this is the first time we are opening the TitlePane
- // and content is specified as an href, or href was set when hidden)
- if(this.open){
- this._onShow();
- }else{
- this.onHide();
- }
-
- this._setCss();
- },
-
- _setCss: function(){
- // summary:
- // Set the open/close css state for the TitlePane
- // tags:
- // private
-
- var node = this.titleBarNode || this.focusNode;
-
- if(this._titleBarClass){
- dojo.removeClass(node, this._titleBarClass);
- }
- this._titleBarClass = "dijit" + (this.toggleable ? "" : "Fixed") + (this.open ? "Open" : "Closed");
- dojo.addClass(node, this._titleBarClass);
- this.arrowNodeInner.innerHTML = this.open ? "-" : "+";
- },
-
- _onTitleKey: function(/*Event*/ e){
- // summary:
- // Handler for when user hits a key
- // tags:
- // private
-
- if(e.charOrCode == dojo.keys.ENTER || e.charOrCode == ' '){
- if(this.toggleable){
- this.toggle();
- }
- dojo.stopEvent(e);
- }else if(e.charOrCode == dojo.keys.DOWN_ARROW && this.open){
- this.containerNode.focus();
- e.preventDefault();
- }
- },
-
- _onTitleEnter: function(){
- // summary:
- // Handler for when someone hovers over my title
- // tags:
- // private
- if(this.toggleable){
- dojo.addClass(this.focusNode, "dijitTitlePaneTitle-hover");
- }
- },
-
- _onTitleLeave: function(){
- // summary:
- // Handler when someone stops hovering over my title
- // tags:
- // private
- if(this.toggleable){
- dojo.removeClass(this.focusNode, "dijitTitlePaneTitle-hover");
- }
- },
-
- _onTitleClick: function(){
- // summary:
- // Handler when user clicks the title bar
- // tags:
- // private
- if(this.toggleable){
- this.toggle();
- }
- },
-
- _handleFocus: function(/*Event*/ e){
- // summary:
- // Handle blur and focus events on title bar
- // tags:
- // private
-
- dojo.toggleClass(this.focusNode, this.baseClass + "Focused", e.type == "focus");
- },
-
- setTitle: function(/*String*/ title){
- // summary:
- // Deprecated. Use attr('title', ...) instead.
- // tags:
- // deprecated
- dojo.deprecated("dijit.TitlePane.setTitle() is deprecated. Use attr('title', ...) instead.", "", "2.0");
- this.attr("title", title);
- }
-});
-
-}
diff --git a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/Toolbar.js b/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/Toolbar.js
deleted file mode 100644
index 45ebe1b..0000000
--- a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/Toolbar.js
+++ /dev/null
@@ -1,49 +0,0 @@
-/*
- Copyright (c) 2004-2009, The Dojo Foundation All Rights Reserved.
- Available via Academic Free License >= 2.1 OR the modified BSD license.
- see: http://dojotoolkit.org/license for details
-*/
-
-
-if(!dojo._hasResource["dijit.Toolbar"]){ //_hasResource checks added by build. Do not use _hasResource directly in your code.
-dojo._hasResource["dijit.Toolbar"] = true;
-dojo.provide("dijit.Toolbar");
-
-dojo.require("dijit._Widget");
-dojo.require("dijit._KeyNavContainer");
-dojo.require("dijit._Templated");
-
-dojo.declare("dijit.Toolbar",
- [dijit._Widget, dijit._Templated, dijit._KeyNavContainer],
- {
- // summary:
- // A Toolbar widget, used to hold things like `dijit.Editor` buttons
-
- templateString:
- '<div class="dijit dijitToolbar" waiRole="toolbar" tabIndex="${tabIndex}" dojoAttachPoint="containerNode">' +
- // '<table style="table-layout: fixed" class="dijitReset dijitToolbarTable">' + // factor out style
- // '<tr class="dijitReset" dojoAttachPoint="containerNode"></tr>'+
- // '</table>' +
- '</div>',
-
- postCreate: function(){
- this.connectKeyNavHandlers(
- this.isLeftToRight() ? [dojo.keys.LEFT_ARROW] : [dojo.keys.RIGHT_ARROW],
- this.isLeftToRight() ? [dojo.keys.RIGHT_ARROW] : [dojo.keys.LEFT_ARROW]
- );
- },
-
- startup: function(){
- if(this._started){ return; }
-
- this.startupKeyNavChildren();
-
- this.inherited(arguments);
- }
-}
-);
-
-// For back-compat, remove for 2.0
-dojo.require("dijit.ToolbarSeparator");
-
-}
diff --git a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/ToolbarSeparator.js b/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/ToolbarSeparator.js
deleted file mode 100644
index 29b6853..0000000
--- a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/ToolbarSeparator.js
+++ /dev/null
@@ -1,34 +0,0 @@
-/*
- Copyright (c) 2004-2009, The Dojo Foundation All Rights Reserved.
- Available via Academic Free License >= 2.1 OR the modified BSD license.
- see: http://dojotoolkit.org/license for details
-*/
-
-
-if(!dojo._hasResource["dijit.ToolbarSeparator"]){ //_hasResource checks added by build. Do not use _hasResource directly in your code.
-dojo._hasResource["dijit.ToolbarSeparator"] = true;
-dojo.provide("dijit.ToolbarSeparator");
-
-dojo.require("dijit._Widget");
-dojo.require("dijit._Templated");
-
-dojo.declare("dijit.ToolbarSeparator",
- [ dijit._Widget, dijit._Templated ],
- {
- // summary:
- // A spacer between two `dijit.Toolbar` items
- templateString: '<div class="dijitToolbarSeparator dijitInline"></div>',
- postCreate: function(){ dojo.setSelectable(this.domNode, false); },
- isFocusable: function(){
- // summary:
- // This widget isn't focusable, so pass along that fact.
- // tags:
- // protected
- return false;
- }
-
- });
-
-
-
-}
diff --git a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/Tooltip.js b/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/Tooltip.js
deleted file mode 100644
index fa71cae..0000000
--- a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/Tooltip.js
+++ /dev/null
@@ -1,392 +0,0 @@
-/*
- Copyright (c) 2004-2009, The Dojo Foundation All Rights Reserved.
- Available via Academic Free License >= 2.1 OR the modified BSD license.
- see: http://dojotoolkit.org/license for details
-*/
-
-
-if(!dojo._hasResource["dijit.Tooltip"]){ //_hasResource checks added by build. Do not use _hasResource directly in your code.
-dojo._hasResource["dijit.Tooltip"] = true;
-dojo.provide("dijit.Tooltip");
-
-dojo.require("dijit._Widget");
-dojo.require("dijit._Templated");
-
-dojo.declare(
- "dijit._MasterTooltip",
- [dijit._Widget, dijit._Templated],
- {
- // summary:
- // Internal widget that holds the actual tooltip markup,
- // which occurs once per page.
- // Called by Tooltip widgets which are just containers to hold
- // the markup
- // tags:
- // protected
-
- // duration: Integer
- // Milliseconds to fade in/fade out
- duration: dijit.defaultDuration,
-
- templateString: dojo.cache("dijit", "templates/Tooltip.html", "<div class=\"dijitTooltip dijitTooltipLeft\" id=\"dojoTooltip\">\n\t<div class=\"dijitTooltipContainer dijitTooltipContents\" dojoAttachPoint=\"containerNode\" waiRole='alert'></div>\n\t<div class=\"dijitTooltipConnector\"></div>\n</div>\n"),
-
- postCreate: function(){
- dojo.body().appendChild(this.domNode);
-
- this.bgIframe = new dijit.BackgroundIframe(this.domNode);
-
- // Setup fade-in and fade-out functions.
- this.fadeIn = dojo.fadeIn({ node: this.domNode, duration: this.duration, onEnd: dojo.hitch(this, "_onShow") });
- this.fadeOut = dojo.fadeOut({ node: this.domNode, duration: this.duration, onEnd: dojo.hitch(this, "_onHide") });
-
- },
-
- show: function(/*String*/ innerHTML, /*DomNode*/ aroundNode, /*String[]?*/ position){
- // summary:
- // Display tooltip w/specified contents to right of specified node
- // (To left if there's no space on the right, or if LTR==right)
-
- if(this.aroundNode && this.aroundNode === aroundNode){
- return;
- }
-
- if(this.fadeOut.status() == "playing"){
- // previous tooltip is being hidden; wait until the hide completes then show new one
- this._onDeck=arguments;
- return;
- }
- this.containerNode.innerHTML=innerHTML;
-
- // Firefox bug. when innerHTML changes to be shorter than previous
- // one, the node size will not be updated until it moves.
- this.domNode.style.top = (this.domNode.offsetTop + 1) + "px";
-
- var pos = dijit.placeOnScreenAroundElement(this.domNode, aroundNode, dijit.getPopupAroundAlignment((position && position.length) ? position : dijit.Tooltip.defaultPosition, this.isLeftToRight()), dojo.hitch(this, "orient"));
-
- // show it
- dojo.style(this.domNode, "opacity", 0);
- this.fadeIn.play();
- this.isShowingNow = true;
- this.aroundNode = aroundNode;
- },
-
- orient: function(/* DomNode */ node, /* String */ aroundCorner, /* String */ tooltipCorner){
- // summary:
- // Private function to set CSS for tooltip node based on which position it's in.
- // This is called by the dijit popup code.
- // tags:
- // protected
-
- node.className = "dijitTooltip " +
- {
- "BL-TL": "dijitTooltipBelow dijitTooltipABLeft",
- "TL-BL": "dijitTooltipAbove dijitTooltipABLeft",
- "BR-TR": "dijitTooltipBelow dijitTooltipABRight",
- "TR-BR": "dijitTooltipAbove dijitTooltipABRight",
- "BR-BL": "dijitTooltipRight",
- "BL-BR": "dijitTooltipLeft"
- }[aroundCorner + "-" + tooltipCorner];
- },
-
- _onShow: function(){
- // summary:
- // Called at end of fade-in operation
- // tags:
- // protected
- if(dojo.isIE){
- // the arrow won't show up on a node w/an opacity filter
- this.domNode.style.filter="";
- }
- },
-
- hide: function(aroundNode){
- // summary:
- // Hide the tooltip
- if(this._onDeck && this._onDeck[1] == aroundNode){
- // this hide request is for a show() that hasn't even started yet;
- // just cancel the pending show()
- this._onDeck=null;
- }else if(this.aroundNode === aroundNode){
- // this hide request is for the currently displayed tooltip
- this.fadeIn.stop();
- this.isShowingNow = false;
- this.aroundNode = null;
- this.fadeOut.play();
- }else{
- // just ignore the call, it's for a tooltip that has already been erased
- }
- },
-
- _onHide: function(){
- // summary:
- // Called at end of fade-out operation
- // tags:
- // protected
-
- this.domNode.style.cssText=""; // to position offscreen again
- if(this._onDeck){
- // a show request has been queued up; do it now
- this.show.apply(this, this._onDeck);
- this._onDeck=null;
- }
- }
-
- }
-);
-
-dijit.showTooltip = function(/*String*/ innerHTML, /*DomNode*/ aroundNode, /*String[]?*/ position){
- // summary:
- // Display tooltip w/specified contents in specified position.
- // See description of dijit.Tooltip.defaultPosition for details on position parameter.
- // If position is not specified then dijit.Tooltip.defaultPosition is used.
- if(!dijit._masterTT){ dijit._masterTT = new dijit._MasterTooltip(); }
- return dijit._masterTT.show(innerHTML, aroundNode, position);
-};
-
-dijit.hideTooltip = function(aroundNode){
- // summary:
- // Hide the tooltip
- if(!dijit._masterTT){ dijit._masterTT = new dijit._MasterTooltip(); }
- return dijit._masterTT.hide(aroundNode);
-};
-
-dojo.declare(
- "dijit.Tooltip",
- dijit._Widget,
- {
- // summary:
- // Pops up a tooltip (a help message) when you hover over a node.
-
- // label: String
- // Text to display in the tooltip.
- // Specified as innerHTML when creating the widget from markup.
- label: "",
-
- // showDelay: Integer
- // Number of milliseconds to wait after hovering over/focusing on the object, before
- // the tooltip is displayed.
- showDelay: 400,
-
- // connectId: [const] String[]
- // Id's of domNodes to attach the tooltip to.
- // When user hovers over any of the specified dom nodes, the tooltip will appear.
- //
- // Note: Currently connectId can only be specified on initialization, it cannot
- // be changed via attr('connectId', ...)
- //
- // Note: in 2.0 this will be renamed to connectIds for less confusion.
- connectId: [],
-
- // position: String[]
- // See description of `dijit.Tooltip.defaultPosition` for details on position parameter.
- position: [],
-
- constructor: function(){
- // Map id's of nodes I'm connected to to a list of the this.connect() handles
- this._nodeConnectionsById = {};
- },
-
- _setConnectIdAttr: function(newIds){
- for(var oldId in this._nodeConnectionsById){
- this.removeTarget(oldId);
- }
- dojo.forEach(dojo.isArrayLike(newIds) ? newIds : [newIds], this.addTarget, this);
- },
-
- _getConnectIdAttr: function(){
- var ary = [];
- for(var id in this._nodeConnectionsById){
- ary.push(id);
- }
- return ary;
- },
-
- addTarget: function(/*DOMNODE || String*/ id){
- // summary:
- // Attach tooltip to specified node, if it's not already connected
- var node = dojo.byId(id);
- if(!node){ return; }
- if(node.id in this._nodeConnectionsById){ return; }//Already connected
-
- this._nodeConnectionsById[node.id] = [
- this.connect(node, "onmouseenter", "_onTargetMouseEnter"),
- this.connect(node, "onmouseleave", "_onTargetMouseLeave"),
- this.connect(node, "onfocus", "_onTargetFocus"),
- this.connect(node, "onblur", "_onTargetBlur")
- ];
- if(dojo.isIE && !node.style.zoom){//preserve zoom
- // BiDi workaround
- node.style.zoom = 1;
- }
- },
-
- removeTarget: function(/*DOMNODE || String*/ node){
- // summary:
- // Detach tooltip from specified node
-
- // map from DOMNode back to plain id string
- var id = node.id || node;
-
- if(id in this._nodeConnectionsById){
- dojo.forEach(this._nodeConnectionsById[id], this.disconnect, this);
- delete this._nodeConnectionsById[id];
- }
- },
-
- postCreate: function(){
- dojo.addClass(this.domNode,"dijitTooltipData");
- },
-
- startup: function(){
- this.inherited(arguments);
-
- // If this tooltip was created in a template, or for some other reason the specified connectId[s]
- // didn't exist during the widget's initialization, then connect now.
- var ids = this.connectId;
- dojo.forEach(dojo.isArrayLike(ids) ? ids : [ids], this.addTarget, this);
- },
-
- _onTargetMouseEnter: function(/*Event*/ e){
- // summary:
- // Handler for mouseenter event on the target node
- // tags:
- // private
- this._onHover(e);
- },
-
- _onTargetMouseLeave: function(/*Event*/ e){
- // summary:
- // Handler for mouseleave event on the target node
- // tags:
- // private
- this._onUnHover(e);
- },
-
- _onTargetFocus: function(/*Event*/ e){
- // summary:
- // Handler for focus event on the target node
- // tags:
- // private
-
- this._focus = true;
- this._onHover(e);
- },
-
- _onTargetBlur: function(/*Event*/ e){
- // summary:
- // Handler for blur event on the target node
- // tags:
- // private
-
- this._focus = false;
- this._onUnHover(e);
- },
-
- _onHover: function(/*Event*/ e){
- // summary:
- // Despite the name of this method, it actually handles both hover and focus
- // events on the target node, setting a timer to show the tooltip.
- // tags:
- // private
- if(!this._showTimer){
- var target = e.target;
- this._showTimer = setTimeout(dojo.hitch(this, function(){this.open(target)}), this.showDelay);
- }
- },
-
- _onUnHover: function(/*Event*/ e){
- // summary:
- // Despite the name of this method, it actually handles both mouseleave and blur
- // events on the target node, hiding the tooltip.
- // tags:
- // private
-
- // keep a tooltip open if the associated element still has focus (even though the
- // mouse moved away)
- if(this._focus){ return; }
-
- if(this._showTimer){
- clearTimeout(this._showTimer);
- delete this._showTimer;
- }
- this.close();
- },
-
- open: function(/*DomNode*/ target){
- // summary:
- // Display the tooltip; usually not called directly.
- // tags:
- // private
-
- if(this._showTimer){
- clearTimeout(this._showTimer);
- delete this._showTimer;
- }
- dijit.showTooltip(this.label || this.domNode.innerHTML, target, this.position);
-
- this._connectNode = target;
- this.onShow(target, this.position);
- },
-
- close: function(){
- // summary:
- // Hide the tooltip or cancel timer for show of tooltip
- // tags:
- // private
-
- if(this._connectNode){
- // if tooltip is currently shown
- dijit.hideTooltip(this._connectNode);
- delete this._connectNode;
- this.onHide();
- }
- if(this._showTimer){
- // if tooltip is scheduled to be shown (after a brief delay)
- clearTimeout(this._showTimer);
- delete this._showTimer;
- }
- },
-
- onShow: function(target, position){
- // summary:
- // Called when the tooltip is shown
- // tags:
- // callback
- },
-
- onHide: function(){
- // summary:
- // Called when the tooltip is hidden
- // tags:
- // callback
- },
-
- uninitialize: function(){
- this.close();
- this.inherited(arguments);
- }
- }
-);
-
-// dijit.Tooltip.defaultPosition: String[]
-// This variable controls the position of tooltips, if the position is not specified to
-// the Tooltip widget or *TextBox widget itself. It's an array of strings with the following values:
-//
-// * before: places tooltip to the left of the target node/widget, or to the right in
-// the case of RTL scripts like Hebrew and Arabic
-// * after: places tooltip to the right of the target node/widget, or to the left in
-// the case of RTL scripts like Hebrew and Arabic
-// * above: tooltip goes above target node
-// * below: tooltip goes below target node
-//
-// The list is positions is tried, in order, until a position is found where the tooltip fits
-// within the viewport.
-//
-// Be careful setting this parameter. A value of "above" may work fine until the user scrolls
-// the screen so that there's no room above the target node. Nodes with drop downs, like
-// DropDownButton or FilteringSelect, are especially problematic, in that you need to be sure
-// that the drop down and tooltip don't overlap, even when the viewport is scrolled so that there
-// is only room below (or above) the target node, but not both.
-dijit.Tooltip.defaultPosition = ["after", "before"];
-
-}
diff --git a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/TooltipDialog.js b/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/TooltipDialog.js
deleted file mode 100644
index 0c32eba..0000000
--- a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/TooltipDialog.js
+++ /dev/null
@@ -1,141 +0,0 @@
-/*
- Copyright (c) 2004-2009, The Dojo Foundation All Rights Reserved.
- Available via Academic Free License >= 2.1 OR the modified BSD license.
- see: http://dojotoolkit.org/license for details
-*/
-
-
-if(!dojo._hasResource["dijit.TooltipDialog"]){ //_hasResource checks added by build. Do not use _hasResource directly in your code.
-dojo._hasResource["dijit.TooltipDialog"] = true;
-dojo.provide("dijit.TooltipDialog");
-
-dojo.require("dijit.layout.ContentPane");
-dojo.require("dijit._Templated");
-dojo.require("dijit.form._FormMixin");
-dojo.require("dijit._DialogMixin");
-
-dojo.declare(
- "dijit.TooltipDialog",
- [dijit.layout.ContentPane, dijit._Templated, dijit.form._FormMixin, dijit._DialogMixin],
- {
- // summary:
- // Pops up a dialog that appears like a Tooltip
-
- // title: String
- // Description of tooltip dialog (required for a11y)
- title: "",
-
- // doLayout: [protected] Boolean
- // Don't change this parameter from the default value.
- // This ContentPane parameter doesn't make sense for TooltipDialog, since TooltipDialog
- // is never a child of a layout container, nor can you specify the size of
- // TooltipDialog in order to control the size of an inner widget.
- doLayout: false,
-
- // autofocus: Boolean
- // A Toggle to modify the default focus behavior of a Dialog, which
- // is to focus on the first dialog element after opening the dialog.
- // False will disable autofocusing. Default: true
- autofocus: true,
-
- // baseClass: [protected] String
- // The root className to use for the various states of this widget
- baseClass: "dijitTooltipDialog",
-
- // _firstFocusItem: [private] [readonly] DomNode
- // The pointer to the first focusable node in the dialog.
- // Set by `dijit._DialogMixin._getFocusItems`.
- _firstFocusItem: null,
-
- // _lastFocusItem: [private] [readonly] DomNode
- // The pointer to which node has focus prior to our dialog.
- // Set by `dijit._DialogMixin._getFocusItems`.
- _lastFocusItem: null,
-
- templateString: dojo.cache("dijit", "templates/TooltipDialog.html", "<div waiRole=\"presentation\">\n\t<div class=\"dijitTooltipContainer\" waiRole=\"presentation\">\n\t\t<div class =\"dijitTooltipContents dijitTooltipFocusNode\" dojoAttachPoint=\"containerNode\" tabindex=\"-1\" waiRole=\"dialog\"></div>\n\t</div>\n\t<div class=\"dijitTooltipConnector\" waiRole=\"presentation\"></div>\n</div>\n"),
-
- postCreate: function(){
- this.inherited(arguments);
- this.connect(this.containerNode, "onkeypress", "_onKey");
- this.containerNode.title = this.title;
- },
-
- orient: function(/*DomNode*/ node, /*String*/ aroundCorner, /*String*/ corner){
- // summary:
- // Configure widget to be displayed in given position relative to the button.
- // This is called from the dijit.popup code, and should not be called
- // directly.
- // tags:
- // protected
- var c = this._currentOrientClass;
- if(c){
- dojo.removeClass(this.domNode, c);
- }
- c = "dijitTooltipAB"+(corner.charAt(1) == 'L'?"Left":"Right")+" dijitTooltip"+(corner.charAt(0) == 'T' ? "Below" : "Above");
- dojo.addClass(this.domNode, c);
- this._currentOrientClass = c;
- },
-
- onOpen: function(/*Object*/ pos){
- // summary:
- // Called when dialog is displayed.
- // This is called from the dijit.popup code, and should not be called directly.
- // tags:
- // protected
-
- this.orient(this.domNode,pos.aroundCorner, pos.corner);
- this._onShow(); // lazy load trigger
-
- if(this.autofocus){
- this._getFocusItems(this.containerNode);
- dijit.focus(this._firstFocusItem);
- }
- },
-
- onClose: function(){
- // summary:
- // Called when dialog is hidden.
- // This is called from the dijit.popup code, and should not be called directly.
- // tags:
- // protected
- this.onHide();
- },
-
- _onKey: function(/*Event*/ evt){
- // summary:
- // Handler for keyboard events
- // description:
- // Keep keyboard focus in dialog; close dialog on escape key
- // tags:
- // private
-
- var node = evt.target;
- var dk = dojo.keys;
- if(evt.charOrCode === dk.TAB){
- this._getFocusItems(this.containerNode);
- }
- var singleFocusItem = (this._firstFocusItem == this._lastFocusItem);
- if(evt.charOrCode == dk.ESCAPE){
- // Use setTimeout to avoid crash on IE, see #10396.
- setTimeout(dojo.hitch(this, "onCancel"), 0);
- dojo.stopEvent(evt);
- }else if(node == this._firstFocusItem && evt.shiftKey && evt.charOrCode === dk.TAB){
- if(!singleFocusItem){
- dijit.focus(this._lastFocusItem); // send focus to last item in dialog
- }
- dojo.stopEvent(evt);
- }else if(node == this._lastFocusItem && evt.charOrCode === dk.TAB && !evt.shiftKey){
- if(!singleFocusItem){
- dijit.focus(this._firstFocusItem); // send focus to first item in dialog
- }
- dojo.stopEvent(evt);
- }else if(evt.charOrCode === dk.TAB){
- // we want the browser's default tab handling to move focus
- // but we don't want the tab to propagate upwards
- evt.stopPropagation();
- }
- }
- }
- );
-
-}
diff --git a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/Tree.js b/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/Tree.js
deleted file mode 100644
index 71ab8ed..0000000
--- a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/Tree.js
+++ /dev/null
@@ -1,1559 +0,0 @@
-/*
- Copyright (c) 2004-2009, The Dojo Foundation All Rights Reserved.
- Available via Academic Free License >= 2.1 OR the modified BSD license.
- see: http://dojotoolkit.org/license for details
-*/
-
-
-if(!dojo._hasResource["dijit.Tree"]){ //_hasResource checks added by build. Do not use _hasResource directly in your code.
-dojo._hasResource["dijit.Tree"] = true;
-dojo.provide("dijit.Tree");
-
-dojo.require("dojo.fx");
-dojo.require("dojo.DeferredList");
-
-dojo.require("dijit._Widget");
-dojo.require("dijit._Templated");
-dojo.require("dijit._Container");
-dojo.require("dijit._Contained");
-dojo.require("dojo.cookie");
-
-dojo.declare(
- "dijit._TreeNode",
- [dijit._Widget, dijit._Templated, dijit._Container, dijit._Contained],
-{
- // summary:
- // Single node within a tree. This class is used internally
- // by Tree and should not be accessed directly.
- // tags:
- // private
-
- // item: dojo.data.Item
- // the dojo.data entry this tree represents
- item: null,
-
- // isTreeNode: [protected] Boolean
- // Indicates that this is a TreeNode. Used by `dijit.Tree` only,
- // should not be accessed directly.
- isTreeNode: true,
-
- // label: String
- // Text of this tree node
- label: "",
-
- // isExpandable: [private] Boolean
- // This node has children, so show the expando node (+ sign)
- isExpandable: null,
-
- // isExpanded: [readonly] Boolean
- // This node is currently expanded (ie, opened)
- isExpanded: false,
-
- // state: [private] String
- // Dynamic loading-related stuff.
- // When an empty folder node appears, it is "UNCHECKED" first,
- // then after dojo.data query it becomes "LOADING" and, finally "LOADED"
- state: "UNCHECKED",
-
- templateString: dojo.cache("dijit", "templates/TreeNode.html", "<div class=\"dijitTreeNode\" waiRole=\"presentation\"\n\t><div dojoAttachPoint=\"rowNode\" class=\"dijitTreeRow\" waiRole=\"presentation\" dojoAttachEvent=\"onmouseenter:_onMouseEnter, onmouseleave:_onMouseLeave, onclick:_onClick, ondblclick:_onDblClick\"\n\t\t><img src=\"${_blankGif}\" alt=\"\" dojoAttachPoint=\"expandoNode\" class=\"dijitTreeExpando\" waiRole=\"presentation\"\n\t\t><span dojoAttachPoint=\"expandoNodeText\" class=\"dijitExpandoText\" waiRole=\"presentation\"\n\t\t></span\n\t\t><span dojoAttachPoint=\"contentNode\"\n\t\t\tclass=\"dijitTreeContent\" waiRole=\"presentation\">\n\t\t\t<img src=\"${_blankGif}\" alt=\"\" dojoAttachPoint=\"iconNode\" class=\"dijitTreeIcon\" waiRole=\"presentation\"\n\t\t\t><span dojoAttachPoint=\"labelNode\" class=\"dijitTreeLabel\" wairole=\"treeitem\" tabindex=\"-1\" waiState=\"selected-false\" dojoAttachEvent=\"onfocus:_onLabelFocus, onblur:_onLabelBlur\"></span>\n\t\t</span\n\t></div>\n\t<div dojoAttachPoint=\"containerNode\" class=\"dijitTreeContainer\" waiRole=\"presentation\" style=\"display: none;\"></div>\n</div>\n"),
-
- attributeMap: dojo.delegate(dijit._Widget.prototype.attributeMap, {
- label: {node: "labelNode", type: "innerText"},
- tooltip: {node: "rowNode", type: "attribute", attribute: "title"}
- }),
-
- postCreate: function(){
- // set expand icon for leaf
- this._setExpando();
-
- // set icon and label class based on item
- this._updateItemClasses(this.item);
-
- if(this.isExpandable){
- dijit.setWaiState(this.labelNode, "expanded", this.isExpanded);
- }
- },
-
- _setIndentAttr: function(indent){
- // summary:
- // Tell this node how many levels it should be indented
- // description:
- // 0 for top level nodes, 1 for their children, 2 for their
- // grandchildren, etc.
- this.indent = indent;
-
- // Math.max() is to prevent negative padding on hidden root node (when indent == -1)
- var pixels = (Math.max(indent, 0) * this.tree._nodePixelIndent) + "px";
-
- dojo.style(this.domNode, "backgroundPosition", pixels + " 0px");
- dojo.style(this.rowNode, dojo._isBodyLtr() ? "paddingLeft" : "paddingRight", pixels);
-
- dojo.forEach(this.getChildren(), function(child){
- child.attr("indent", indent+1);
- });
- },
-
- markProcessing: function(){
- // summary:
- // Visually denote that tree is loading data, etc.
- // tags:
- // private
- this.state = "LOADING";
- this._setExpando(true);
- },
-
- unmarkProcessing: function(){
- // summary:
- // Clear markup from markProcessing() call
- // tags:
- // private
- this._setExpando(false);
- },
-
- _updateItemClasses: function(item){
- // summary:
- // Set appropriate CSS classes for icon and label dom node
- // (used to allow for item updates to change respective CSS)
- // tags:
- // private
- var tree = this.tree, model = tree.model;
- if(tree._v10Compat && item === model.root){
- // For back-compat with 1.0, need to use null to specify root item (TODO: remove in 2.0)
- item = null;
- }
- this._applyClassAndStyle(item, "icon", "Icon");
- this._applyClassAndStyle(item, "label", "Label");
- this._applyClassAndStyle(item, "row", "Row");
- },
-
- _applyClassAndStyle: function(item, lower, upper){
- // summary:
- // Set the appropriate CSS classes and styles for labels, icons and rows.
- //
- // item:
- // The data item.
- //
- // lower:
- // The lower case attribute to use, e.g. 'icon', 'label' or 'row'.
- //
- // upper:
- // The upper case attribute to use, e.g. 'Icon', 'Label' or 'Row'.
- //
- // tags:
- // private
-
- var clsName = "_" + lower + "Class";
- var nodeName = lower + "Node";
-
- if(this[clsName]){
- dojo.removeClass(this[nodeName], this[clsName]);
- }
- this[clsName] = this.tree["get" + upper + "Class"](item, this.isExpanded);
- if(this[clsName]){
- dojo.addClass(this[nodeName], this[clsName]);
- }
- dojo.style(this[nodeName], this.tree["get" + upper + "Style"](item, this.isExpanded) || {});
- },
-
- _updateLayout: function(){
- // summary:
- // Set appropriate CSS classes for this.domNode
- // tags:
- // private
- var parent = this.getParent();
- if(!parent || parent.rowNode.style.display == "none"){
- /* if we are hiding the root node then make every first level child look like a root node */
- dojo.addClass(this.domNode, "dijitTreeIsRoot");
- }else{
- dojo.toggleClass(this.domNode, "dijitTreeIsLast", !this.getNextSibling());
- }
- },
-
- _setExpando: function(/*Boolean*/ processing){
- // summary:
- // Set the right image for the expando node
- // tags:
- // private
-
- var styles = ["dijitTreeExpandoLoading", "dijitTreeExpandoOpened",
- "dijitTreeExpandoClosed", "dijitTreeExpandoLeaf"],
- _a11yStates = ["*","-","+","*"],
- idx = processing ? 0 : (this.isExpandable ? (this.isExpanded ? 1 : 2) : 3);
-
- // apply the appropriate class to the expando node
- dojo.removeClass(this.expandoNode, styles);
- dojo.addClass(this.expandoNode, styles[idx]);
-
- // provide a non-image based indicator for images-off mode
- this.expandoNodeText.innerHTML = _a11yStates[idx];
-
- },
-
- expand: function(){
- // summary:
- // Show my children
- // returns:
- // Deferred that fires when expansion is complete
-
- // If there's already an expand in progress or we are already expanded, just return
- if(this._expandDeferred){
- return this._expandDeferred; // dojo.Deferred
- }
-
- // cancel in progress collapse operation
- this._wipeOut && this._wipeOut.stop();
-
- // All the state information for when a node is expanded, maybe this should be
- // set when the animation completes instead
- this.isExpanded = true;
- dijit.setWaiState(this.labelNode, "expanded", "true");
- dijit.setWaiRole(this.containerNode, "group");
- dojo.addClass(this.contentNode,'dijitTreeContentExpanded');
- this._setExpando();
- this._updateItemClasses(this.item);
- if(this == this.tree.rootNode){
- dijit.setWaiState(this.tree.domNode, "expanded", "true");
- }
-
- var def,
- wipeIn = dojo.fx.wipeIn({
- node: this.containerNode, duration: dijit.defaultDuration,
- onEnd: function(){
- def.callback(true);
- }
- });
-
- // Deferred that fires when expand is complete
- def = (this._expandDeferred = new dojo.Deferred(function(){
- // Canceller
- wipeIn.stop();
- }));
-
- wipeIn.play();
-
- return def; // dojo.Deferred
- },
-
- collapse: function(){
- // summary:
- // Collapse this node (if it's expanded)
-
- if(!this.isExpanded){ return; }
-
- // cancel in progress expand operation
- if(this._expandDeferred){
- this._expandDeferred.cancel();
- delete this._expandDeferred;
- }
-
- this.isExpanded = false;
- dijit.setWaiState(this.labelNode, "expanded", "false");
- if(this == this.tree.rootNode){
- dijit.setWaiState(this.tree.domNode, "expanded", "false");
- }
- dojo.removeClass(this.contentNode,'dijitTreeContentExpanded');
- this._setExpando();
- this._updateItemClasses(this.item);
-
- if(!this._wipeOut){
- this._wipeOut = dojo.fx.wipeOut({
- node: this.containerNode, duration: dijit.defaultDuration
- });
- }
- this._wipeOut.play();
- },
-
- // indent: Integer
- // Levels from this node to the root node
- indent: 0,
-
- setChildItems: function(/* Object[] */ items){
- // summary:
- // Sets the child items of this node, removing/adding nodes
- // from current children to match specified items[] array.
- // Also, if this.persist == true, expands any children that were previously
- // opened.
- // returns:
- // Deferred object that fires after all previously opened children
- // have been expanded again (or fires instantly if there are no such children).
-
- var tree = this.tree,
- model = tree.model,
- defs = []; // list of deferreds that need to fire before I am complete
-
-
- // Orphan all my existing children.
- // If items contains some of the same items as before then we will reattach them.
- // Don't call this.removeChild() because that will collapse the tree etc.
- this.getChildren().forEach(function(child){
- dijit._Container.prototype.removeChild.call(this, child);
- }, this);
-
- this.state = "LOADED";
-
- if(items && items.length > 0){
- this.isExpandable = true;
-
- // Create _TreeNode widget for each specified tree node, unless one already
- // exists and isn't being used (presumably it's from a DnD move and was recently
- // released
- dojo.forEach(items, function(item){
- var id = model.getIdentity(item),
- existingNodes = tree._itemNodesMap[id],
- node;
- if(existingNodes){
- for(var i=0;i<existingNodes.length;i++){
- if(existingNodes[i] && !existingNodes[i].getParent()){
- node = existingNodes[i];
- node.attr('indent', this.indent+1);
- break;
- }
- }
- }
- if(!node){
- node = this.tree._createTreeNode({
- item: item,
- tree: tree,
- isExpandable: model.mayHaveChildren(item),
- label: tree.getLabel(item),
- tooltip: tree.getTooltip(item),
- indent: this.indent + 1
- });
- if(existingNodes){
- existingNodes.push(node);
- }else{
- tree._itemNodesMap[id] = [node];
- }
- }
- this.addChild(node);
-
- // If node was previously opened then open it again now (this may trigger
- // more data store accesses, recursively)
- if(this.tree.autoExpand || this.tree._state(item)){
- defs.push(tree._expandNode(node));
- }
- }, this);
-
- // note that updateLayout() needs to be called on each child after
- // _all_ the children exist
- dojo.forEach(this.getChildren(), function(child, idx){
- child._updateLayout();
- });
- }else{
- this.isExpandable=false;
- }
-
- if(this._setExpando){
- // change expando to/from dot or + icon, as appropriate
- this._setExpando(false);
- }
-
- // On initial tree show, make the selected TreeNode as either the root node of the tree,
- // or the first child, if the root node is hidden
- if(this == tree.rootNode){
- var fc = this.tree.showRoot ? this : this.getChildren()[0];
- if(fc){
- fc.setSelected(true);
- tree.lastFocused = fc;
- }else{
- // fallback: no nodes in tree so focus on Tree <div> itself
- tree.domNode.setAttribute("tabIndex", "0");
- }
- }
-
- return new dojo.DeferredList(defs); // dojo.Deferred
- },
-
- removeChild: function(/* treeNode */ node){
- this.inherited(arguments);
-
- var children = this.getChildren();
- if(children.length == 0){
- this.isExpandable = false;
- this.collapse();
- }
-
- dojo.forEach(children, function(child){
- child._updateLayout();
- });
- },
-
- makeExpandable: function(){
- // summary:
- // if this node wasn't already showing the expando node,
- // turn it into one and call _setExpando()
-
- // TODO: hmm this isn't called from anywhere, maybe should remove it for 2.0
-
- this.isExpandable = true;
- this._setExpando(false);
- },
-
- _onLabelFocus: function(evt){
- // summary:
- // Called when this node is focused (possibly programatically)
- // tags:
- // private
- dojo.addClass(this.labelNode, "dijitTreeLabelFocused");
- this.tree._onNodeFocus(this);
- },
-
- _onLabelBlur: function(evt){
- // summary:
- // Called when focus was moved away from this node, either to
- // another TreeNode or away from the Tree entirely.
- // Note that we aren't using _onFocus/_onBlur builtin to dijit
- // because _onBlur() isn't called when focus is moved to my child TreeNode.
- // tags:
- // private
- dojo.removeClass(this.labelNode, "dijitTreeLabelFocused");
- },
-
- setSelected: function(/*Boolean*/ selected){
- // summary:
- // A Tree has a (single) currently selected node.
- // Mark that this node is/isn't that currently selected node.
- // description:
- // In particular, setting a node as selected involves setting tabIndex
- // so that when user tabs to the tree, focus will go to that node (only).
- var labelNode = this.labelNode;
- labelNode.setAttribute("tabIndex", selected ? "0" : "-1");
- dijit.setWaiState(labelNode, "selected", selected);
- dojo.toggleClass(this.rowNode, "dijitTreeNodeSelected", selected);
- },
-
- _onClick: function(evt){
- // summary:
- // Handler for onclick event on a node
- // tags:
- // private
- this.tree._onClick(this, evt);
- },
- _onDblClick: function(evt){
- // summary:
- // Handler for ondblclick event on a node
- // tags:
- // private
- this.tree._onDblClick(this, evt);
- },
-
- _onMouseEnter: function(evt){
- // summary:
- // Handler for onmouseenter event on a node
- // tags:
- // private
- dojo.addClass(this.rowNode, "dijitTreeNodeHover");
- this.tree._onNodeMouseEnter(this, evt);
- },
-
- _onMouseLeave: function(evt){
- // summary:
- // Handler for onmouseenter event on a node
- // tags:
- // private
- dojo.removeClass(this.rowNode, "dijitTreeNodeHover");
- this.tree._onNodeMouseLeave(this, evt);
- }
-});
-
-dojo.declare(
- "dijit.Tree",
- [dijit._Widget, dijit._Templated],
-{
- // summary:
- // This widget displays hierarchical data from a store.
-
- // store: [deprecated] String||dojo.data.Store
- // Deprecated. Use "model" parameter instead.
- // The store to get data to display in the tree.
- store: null,
-
- // model: dijit.Tree.model
- // Interface to read tree data, get notifications of changes to tree data,
- // and for handling drop operations (i.e drag and drop onto the tree)
- model: null,
-
- // query: [deprecated] anything
- // Deprecated. User should specify query to the model directly instead.
- // Specifies datastore query to return the root item or top items for the tree.
- query: null,
-
- // label: [deprecated] String
- // Deprecated. Use dijit.tree.ForestStoreModel directly instead.
- // Used in conjunction with query parameter.
- // If a query is specified (rather than a root node id), and a label is also specified,
- // then a fake root node is created and displayed, with this label.
- label: "",
-
- // showRoot: [const] Boolean
- // Should the root node be displayed, or hidden?
- showRoot: true,
-
- // childrenAttr: [deprecated] String[]
- // Deprecated. This information should be specified in the model.
- // One ore more attributes that holds children of a tree node
- childrenAttr: ["children"],
-
- // path: String[] or Item[]
- // Full path from rootNode to selected node expressed as array of items or array of ids.
- path: [],
-
- // selectedItem: [readonly] Item
- // The currently selected item in this tree.
- // This property can only be set (via attr('selectedItem', ...)) when that item is already
- // visible in the tree. (I.e. the tree has already been expanded to show that node.)
- // Should generally use `path` attribute to set the selected item instead.
- selectedItem: null,
-
- // openOnClick: Boolean
- // If true, clicking a folder node's label will open it, rather than calling onClick()
- openOnClick: false,
-
- // openOnDblClick: Boolean
- // If true, double-clicking a folder node's label will open it, rather than calling onDblClick()
- openOnDblClick: false,
-
- templateString: dojo.cache("dijit", "templates/Tree.html", "<div class=\"dijitTree dijitTreeContainer\" waiRole=\"tree\"\n\tdojoAttachEvent=\"onkeypress:_onKeyPress\">\n\t<div class=\"dijitInline dijitTreeIndent\" style=\"position: absolute; top: -9999px\" dojoAttachPoint=\"indentDetector\"></div>\n</div>\n"),
-
- // persist: Boolean
- // Enables/disables use of cookies for state saving.
- persist: true,
-
- // autoExpand: Boolean
- // Fully expand the tree on load. Overrides `persist`
- autoExpand: false,
-
- // dndController: [protected] String
- // Class name to use as as the dnd controller. Specifying this class enables DnD.
- // Generally you should specify this as "dijit.tree.dndSource".
- dndController: null,
-
- // parameters to pull off of the tree and pass on to the dndController as its params
- dndParams: ["onDndDrop","itemCreator","onDndCancel","checkAcceptance", "checkItemAcceptance", "dragThreshold", "betweenThreshold"],
-
- //declare the above items so they can be pulled from the tree's markup
-
- // onDndDrop: [protected] Function
- // Parameter to dndController, see `dijit.tree.dndSource.onDndDrop`.
- // Generally this doesn't need to be set.
- onDndDrop: null,
-
- /*=====
- itemCreator: function(nodes, target, source){
- // summary:
- // Returns objects passed to `Tree.model.newItem()` based on DnD nodes
- // dropped onto the tree. Developer must override this method to enable
- // dropping from external sources onto this Tree, unless the Tree.model's items
- // happen to look like {id: 123, name: "Apple" } with no other attributes.
- // description:
- // For each node in nodes[], which came from source, create a hash of name/value
- // pairs to be passed to Tree.model.newItem(). Returns array of those hashes.
- // nodes: DomNode[]
- // The DOMNodes dragged from the source container
- // target: DomNode
- // The target TreeNode.rowNode
- // source: dojo.dnd.Source
- // The source container the nodes were dragged from, perhaps another Tree or a plain dojo.dnd.Source
- // returns: Object[]
- // Array of name/value hashes for each new item to be added to the Tree, like:
- // | [
- // | { id: 123, label: "apple", foo: "bar" },
- // | { id: 456, label: "pear", zaz: "bam" }
- // | ]
- // tags:
- // extension
- return [{}];
- },
- =====*/
- itemCreator: null,
-
- // onDndCancel: [protected] Function
- // Parameter to dndController, see `dijit.tree.dndSource.onDndCancel`.
- // Generally this doesn't need to be set.
- onDndCancel: null,
-
-/*=====
- checkAcceptance: function(source, nodes){
- // summary:
- // Checks if the Tree itself can accept nodes from this source
- // source: dijit.tree._dndSource
- // The source which provides items
- // nodes: DOMNode[]
- // Array of DOM nodes corresponding to nodes being dropped, dijitTreeRow nodes if
- // source is a dijit.Tree.
- // tags:
- // extension
- return true; // Boolean
- },
-=====*/
- checkAcceptance: null,
-
-/*=====
- checkItemAcceptance: function(target, source, position){
- // summary:
- // Stub function to be overridden if one wants to check for the ability to drop at the node/item level
- // description:
- // In the base case, this is called to check if target can become a child of source.
- // When betweenThreshold is set, position="before" or "after" means that we
- // are asking if the source node can be dropped before/after the target node.
- // target: DOMNode
- // The dijitTreeRoot DOM node inside of the TreeNode that we are dropping on to
- // Use dijit.getEnclosingWidget(target) to get the TreeNode.
- // source: dijit.tree.dndSource
- // The (set of) nodes we are dropping
- // position: String
- // "over", "before", or "after"
- // tags:
- // extension
- return true; // Boolean
- },
-=====*/
- checkItemAcceptance: null,
-
- // dragThreshold: Integer
- // Number of pixels mouse moves before it's considered the start of a drag operation
- dragThreshold: 5,
-
- // betweenThreshold: Integer
- // Set to a positive value to allow drag and drop "between" nodes.
- //
- // If during DnD mouse is over a (target) node but less than betweenThreshold
- // pixels from the bottom edge, dropping the the dragged node will make it
- // the next sibling of the target node, rather than the child.
- //
- // Similarly, if mouse is over a target node but less that betweenThreshold
- // pixels from the top edge, dropping the dragged node will make it
- // the target node's previous sibling rather than the target node's child.
- betweenThreshold: 0,
-
- // _nodePixelIndent: Integer
- // Number of pixels to indent tree nodes (relative to parent node).
- // Default is 19 but can be overridden by setting CSS class dijitTreeIndent
- // and calling resize() or startup() on tree after it's in the DOM.
- _nodePixelIndent: 19,
-
- _publish: function(/*String*/ topicName, /*Object*/ message){
- // summary:
- // Publish a message for this widget/topic
- dojo.publish(this.id, [dojo.mixin({tree: this, event: topicName}, message || {})]);
- },
-
- postMixInProperties: function(){
- this.tree = this;
-
- this._itemNodesMap={};
-
- if(!this.cookieName){
- this.cookieName = this.id + "SaveStateCookie";
- }
-
- this._loadDeferred = new dojo.Deferred();
-
- this.inherited(arguments);
- },
-
- postCreate: function(){
- this._initState();
-
- // Create glue between store and Tree, if not specified directly by user
- if(!this.model){
- this._store2model();
- }
-
- // monitor changes to items
- this.connect(this.model, "onChange", "_onItemChange");
- this.connect(this.model, "onChildrenChange", "_onItemChildrenChange");
- this.connect(this.model, "onDelete", "_onItemDelete");
-
- this._load();
-
- this.inherited(arguments);
-
- if(this.dndController){
- if(dojo.isString(this.dndController)){
- this.dndController = dojo.getObject(this.dndController);
- }
- var params={};
- for(var i=0; i<this.dndParams.length;i++){
- if(this[this.dndParams[i]]){
- params[this.dndParams[i]] = this[this.dndParams[i]];
- }
- }
- this.dndController = new this.dndController(this, params);
- }
- },
-
- _store2model: function(){
- // summary:
- // User specified a store&query rather than model, so create model from store/query
- this._v10Compat = true;
- dojo.deprecated("Tree: from version 2.0, should specify a model object rather than a store/query");
-
- var modelParams = {
- id: this.id + "_ForestStoreModel",
- store: this.store,
- query: this.query,
- childrenAttrs: this.childrenAttr
- };
-
- // Only override the model's mayHaveChildren() method if the user has specified an override
- if(this.params.mayHaveChildren){
- modelParams.mayHaveChildren = dojo.hitch(this, "mayHaveChildren");
- }
-
- if(this.params.getItemChildren){
- modelParams.getChildren = dojo.hitch(this, function(item, onComplete, onError){
- this.getItemChildren((this._v10Compat && item === this.model.root) ? null : item, onComplete, onError);
- });
- }
- this.model = new dijit.tree.ForestStoreModel(modelParams);
-
- // For backwards compatibility, the visibility of the root node is controlled by
- // whether or not the user has specified a label
- this.showRoot = Boolean(this.label);
- },
-
- onLoad: function(){
- // summary:
- // Called when tree finishes loading and expanding.
- // description:
- // If persist == true the loading may encompass many levels of fetches
- // from the data store, each asynchronous. Waits for all to finish.
- // tags:
- // callback
- },
-
- _load: function(){
- // summary:
- // Initial load of the tree.
- // Load root node (possibly hidden) and it's children.
- this.model.getRoot(
- dojo.hitch(this, function(item){
- var rn = (this.rootNode = this.tree._createTreeNode({
- item: item,
- tree: this,
- isExpandable: true,
- label: this.label || this.getLabel(item),
- indent: this.showRoot ? 0 : -1
- }));
- if(!this.showRoot){
- rn.rowNode.style.display="none";
- }
- this.domNode.appendChild(rn.domNode);
- var identity = this.model.getIdentity(item);
- if(this._itemNodesMap[identity]){
- this._itemNodesMap[identity].push(rn);
- }else{
- this._itemNodesMap[identity] = [rn];
- }
-
- rn._updateLayout(); // sets "dijitTreeIsRoot" CSS classname
-
- // load top level children and then fire onLoad() event
- this._expandNode(rn).addCallback(dojo.hitch(this, function(){
- this._loadDeferred.callback(true);
- this.onLoad();
- }));
- }),
- function(err){
- console.error(this, ": error loading root: ", err);
- }
- );
- },
-
- getNodesByItem: function(/*dojo.data.Item or id*/ item){
- // summary:
- // Returns all tree nodes that refer to an item
- // returns:
- // Array of tree nodes that refer to passed item
-
- if(!item){ return []; }
- var identity = dojo.isString(item) ? item : this.model.getIdentity(item);
- // return a copy so widget don't get messed up by changes to returned array
- return [].concat(this._itemNodesMap[identity]);
- },
-
- _setSelectedItemAttr: function(/*dojo.data.Item or id*/ item){
- // summary:
- // Select a tree node related to passed item.
- // WARNING: if model use multi-parented items or desired tree node isn't already loaded
- // behavior is not granted. Use 'path' attr instead for full support.
- var oldValue = this.attr("selectedItem");
- var identity = (!item || dojo.isString(item)) ? item : this.model.getIdentity(item);
- if(identity == oldValue ? this.model.getIdentity(oldValue) : null){ return; }
- var nodes = this._itemNodesMap[identity];
- if(nodes && nodes.length){
- //select the first item
- this.focusNode(nodes[0]);
- }else if(this.lastFocused){
- // Select none so deselect current
- this.lastFocused.setSelected(false);
- this.lastFocused = null;
- }
- },
-
- _getSelectedItemAttr: function(){
- // summary:
- // Return item related to selected tree node.
- return this.lastFocused && this.lastFocused.item;
- },
-
- _setPathAttr: function(/*Item[] || String[]*/ path){
- // summary:
- // Select the tree node identified by passed path.
- // path:
- // Array of items or item id's
-
- if(!path || !path.length){ return; }
-
- // If this is called during initialization, defer running until Tree has finished loading
- this._loadDeferred.addCallback(dojo.hitch(this, function(){
- if(!this.rootNode){
- console.debug("!this.rootNode");
- return;
- }
- if(path[0] !== this.rootNode.item && (dojo.isString(path[0]) && path[0] != this.model.getIdentity(this.rootNode.item))){
- console.error(this, ":path[0] doesn't match this.rootNode.item. Maybe you are using the wrong tree.");
- return;
- }
- path.shift();
-
- var node = this.rootNode;
-
- function advance(){
- // summary:
- // Called when "node" has completed loading and expanding. Pop the next item from the path
- // (which must be a child of "node") and advance to it, and then recurse.
-
- // Set item and identity to next item in path (node is pointing to the item that was popped
- // from the path _last_ time.
- var item = path.shift(),
- identity = dojo.isString(item) ? item : this.model.getIdentity(item);
-
- // Change "node" from previous item in path to the item we just popped from path
- dojo.some(this._itemNodesMap[identity], function(n){
- if(n.getParent() == node){
- node = n;
- return true;
- }
- return false;
- });
-
- if(path.length){
- // Need to do more expanding
- this._expandNode(node).addCallback(dojo.hitch(this, advance));
- }else{
- // Final destination node, select it
- if(this.lastFocused != node){
- this.focusNode(node);
- }
- }
- }
-
- this._expandNode(node).addCallback(dojo.hitch(this, advance));
- }));
- },
-
- _getPathAttr: function(){
- // summary:
- // Return an array of items that is the path to selected tree node.
- if(!this.lastFocused){ return; }
- var res = [];
- var treeNode = this.lastFocused;
- while(treeNode && treeNode !== this.rootNode){
- res.unshift(treeNode.item);
- treeNode = treeNode.getParent();
- }
- res.unshift(this.rootNode.item);
- return res;
- },
-
- ////////////// Data store related functions //////////////////////
- // These just get passed to the model; they are here for back-compat
-
- mayHaveChildren: function(/*dojo.data.Item*/ item){
- // summary:
- // Deprecated. This should be specified on the model itself.
- //
- // Overridable function to tell if an item has or may have children.
- // Controls whether or not +/- expando icon is shown.
- // (For efficiency reasons we may not want to check if an element actually
- // has children until user clicks the expando node)
- // tags:
- // deprecated
- },
-
- getItemChildren: function(/*dojo.data.Item*/ parentItem, /*function(items)*/ onComplete){
- // summary:
- // Deprecated. This should be specified on the model itself.
- //
- // Overridable function that return array of child items of given parent item,
- // or if parentItem==null then return top items in tree
- // tags:
- // deprecated
- },
-
- ///////////////////////////////////////////////////////
- // Functions for converting an item to a TreeNode
- getLabel: function(/*dojo.data.Item*/ item){
- // summary:
- // Overridable function to get the label for a tree node (given the item)
- // tags:
- // extension
- return this.model.getLabel(item); // String
- },
-
- getIconClass: function(/*dojo.data.Item*/ item, /*Boolean*/ opened){
- // summary:
- // Overridable function to return CSS class name to display icon
- // tags:
- // extension
- return (!item || this.model.mayHaveChildren(item)) ? (opened ? "dijitFolderOpened" : "dijitFolderClosed") : "dijitLeaf"
- },
-
- getLabelClass: function(/*dojo.data.Item*/ item, /*Boolean*/ opened){
- // summary:
- // Overridable function to return CSS class name to display label
- // tags:
- // extension
- },
-
- getRowClass: function(/*dojo.data.Item*/ item, /*Boolean*/ opened){
- // summary:
- // Overridable function to return CSS class name to display row
- // tags:
- // extension
- },
-
- getIconStyle: function(/*dojo.data.Item*/ item, /*Boolean*/ opened){
- // summary:
- // Overridable function to return CSS styles to display icon
- // returns:
- // Object suitable for input to dojo.style() like {backgroundImage: "url(...)"}
- // tags:
- // extension
- },
-
- getLabelStyle: function(/*dojo.data.Item*/ item, /*Boolean*/ opened){
- // summary:
- // Overridable function to return CSS styles to display label
- // returns:
- // Object suitable for input to dojo.style() like {color: "red", background: "green"}
- // tags:
- // extension
- },
-
- getRowStyle: function(/*dojo.data.Item*/ item, /*Boolean*/ opened){
- // summary:
- // Overridable function to return CSS styles to display row
- // returns:
- // Object suitable for input to dojo.style() like {background-color: "#bbb"}
- // tags:
- // extension
- },
-
- getTooltip: function(/*dojo.data.Item*/ item){
- // summary:
- // Overridable function to get the tooltip for a tree node (given the item)
- // tags:
- // extension
- return ""; // String
- },
-
- /////////// Keyboard and Mouse handlers ////////////////////
-
- _onKeyPress: function(/*Event*/ e){
- // summary:
- // Translates keypress events into commands for the controller
- if(e.altKey){ return; }
- var dk = dojo.keys;
- var treeNode = dijit.getEnclosingWidget(e.target);
- if(!treeNode){ return; }
-
- var key = e.charOrCode;
- if(typeof key == "string"){ // handle printables (letter navigation)
- // Check for key navigation.
- if(!e.altKey && !e.ctrlKey && !e.shiftKey && !e.metaKey){
- this._onLetterKeyNav( { node: treeNode, key: key.toLowerCase() } );
- dojo.stopEvent(e);
- }
- }else{ // handle non-printables (arrow keys)
- // clear record of recent printables (being saved for multi-char letter navigation),
- // because "a", down-arrow, "b" shouldn't search for "ab"
- if(this._curSearch){
- clearTimeout(this._curSearch.timer);
- delete this._curSearch;
- }
-
- var map = this._keyHandlerMap;
- if(!map){
- // setup table mapping keys to events
- map = {};
- map[dk.ENTER]="_onEnterKey";
- map[this.isLeftToRight() ? dk.LEFT_ARROW : dk.RIGHT_ARROW]="_onLeftArrow";
- map[this.isLeftToRight() ? dk.RIGHT_ARROW : dk.LEFT_ARROW]="_onRightArrow";
- map[dk.UP_ARROW]="_onUpArrow";
- map[dk.DOWN_ARROW]="_onDownArrow";
- map[dk.HOME]="_onHomeKey";
- map[dk.END]="_onEndKey";
- this._keyHandlerMap = map;
- }
- if(this._keyHandlerMap[key]){
- this[this._keyHandlerMap[key]]( { node: treeNode, item: treeNode.item, evt: e } );
- dojo.stopEvent(e);
- }
- }
- },
-
- _onEnterKey: function(/*Object*/ message, /*Event*/ evt){
- this._publish("execute", { item: message.item, node: message.node } );
- this.onClick(message.item, message.node, evt);
- },
-
- _onDownArrow: function(/*Object*/ message){
- // summary:
- // down arrow pressed; get next visible node, set focus there
- var node = this._getNextNode(message.node);
- if(node && node.isTreeNode){
- this.focusNode(node);
- }
- },
-
- _onUpArrow: function(/*Object*/ message){
- // summary:
- // Up arrow pressed; move to previous visible node
-
- var node = message.node;
-
- // if younger siblings
- var previousSibling = node.getPreviousSibling();
- if(previousSibling){
- node = previousSibling;
- // if the previous node is expanded, dive in deep
- while(node.isExpandable && node.isExpanded && node.hasChildren()){
- // move to the last child
- var children = node.getChildren();
- node = children[children.length-1];
- }
- }else{
- // if this is the first child, return the parent
- // unless the parent is the root of a tree with a hidden root
- var parent = node.getParent();
- if(!(!this.showRoot && parent === this.rootNode)){
- node = parent;
- }
- }
-
- if(node && node.isTreeNode){
- this.focusNode(node);
- }
- },
-
- _onRightArrow: function(/*Object*/ message){
- // summary:
- // Right arrow pressed; go to child node
- var node = message.node;
-
- // if not expanded, expand, else move to 1st child
- if(node.isExpandable && !node.isExpanded){
- this._expandNode(node);
- }else if(node.hasChildren()){
- node = node.getChildren()[0];
- if(node && node.isTreeNode){
- this.focusNode(node);
- }
- }
- },
-
- _onLeftArrow: function(/*Object*/ message){
- // summary:
- // Left arrow pressed.
- // If not collapsed, collapse, else move to parent.
-
- var node = message.node;
-
- if(node.isExpandable && node.isExpanded){
- this._collapseNode(node);
- }else{
- var parent = node.getParent();
- if(parent && parent.isTreeNode && !(!this.showRoot && parent === this.rootNode)){
- this.focusNode(parent);
- }
- }
- },
-
- _onHomeKey: function(){
- // summary:
- // Home key pressed; get first visible node, and set focus there
- var node = this._getRootOrFirstNode();
- if(node){
- this.focusNode(node);
- }
- },
-
- _onEndKey: function(/*Object*/ message){
- // summary:
- // End key pressed; go to last visible node.
-
- var node = this.rootNode;
- while(node.isExpanded){
- var c = node.getChildren();
- node = c[c.length - 1];
- }
-
- if(node && node.isTreeNode){
- this.focusNode(node);
- }
- },
-
- // multiCharSearchDuration: Number
- // If multiple characters are typed where each keystroke happens within
- // multiCharSearchDuration of the previous keystroke,
- // search for nodes matching all the keystrokes.
- //
- // For example, typing "ab" will search for entries starting with
- // "ab" unless the delay between "a" and "b" is greater than multiCharSearchDuration.
- multiCharSearchDuration: 250,
-
- _onLetterKeyNav: function(message){
- // summary:
- // Called when user presses a prinatable key; search for node starting with recently typed letters.
- // message: Object
- // Like { node: TreeNode, key: 'a' } where key is the key the user pressed.
-
- // Branch depending on whether this key starts a new search, or modifies an existing search
- var cs = this._curSearch;
- if(cs){
- // We are continuing a search. Ex: user has pressed 'a', and now has pressed
- // 'b', so we want to search for nodes starting w/"ab".
- cs.pattern = cs.pattern + message.key;
- clearTimeout(cs.timer);
- }else{
- // We are starting a new search
- cs = this._curSearch = {
- pattern: message.key,
- startNode: message.node
- };
- }
-
- // set/reset timer to forget recent keystrokes
- var self = this;
- cs.timer = setTimeout(function(){
- delete self._curSearch;
- }, this.multiCharSearchDuration);
-
- // Navigate to TreeNode matching keystrokes [entered so far].
- var node = cs.startNode;
- do{
- node = this._getNextNode(node);
- //check for last node, jump to first node if necessary
- if(!node){
- node = this._getRootOrFirstNode();
- }
- }while(node !== cs.startNode && (node.label.toLowerCase().substr(0, cs.pattern.length) != cs.pattern));
- if(node && node.isTreeNode){
- // no need to set focus if back where we started
- if(node !== cs.startNode){
- this.focusNode(node);
- }
- }
- },
-
- _onClick: function(/*TreeNode*/ nodeWidget, /*Event*/ e){
- // summary:
- // Translates click events into commands for the controller to process
-
- var domElement = e.target;
-
- if( (this.openOnClick && nodeWidget.isExpandable) ||
- (domElement == nodeWidget.expandoNode || domElement == nodeWidget.expandoNodeText) ){
- // expando node was clicked, or label of a folder node was clicked; open it
- if(nodeWidget.isExpandable){
- this._onExpandoClick({node:nodeWidget});
- }
- }else{
- this._publish("execute", { item: nodeWidget.item, node: nodeWidget, evt: e } );
- this.onClick(nodeWidget.item, nodeWidget, e);
- this.focusNode(nodeWidget);
- }
- dojo.stopEvent(e);
- },
- _onDblClick: function(/*TreeNode*/ nodeWidget, /*Event*/ e){
- // summary:
- // Translates double-click events into commands for the controller to process
-
- var domElement = e.target;
-
- if( (this.openOnDblClick && nodeWidget.isExpandable) ||
- (domElement == nodeWidget.expandoNode || domElement == nodeWidget.expandoNodeText) ){
- // expando node was clicked, or label of a folder node was clicked; open it
- if(nodeWidget.isExpandable){
- this._onExpandoClick({node:nodeWidget});
- }
- }else{
- this._publish("execute", { item: nodeWidget.item, node: nodeWidget, evt: e } );
- this.onDblClick(nodeWidget.item, nodeWidget, e);
- this.focusNode(nodeWidget);
- }
- dojo.stopEvent(e);
- },
-
- _onExpandoClick: function(/*Object*/ message){
- // summary:
- // User clicked the +/- icon; expand or collapse my children.
- var node = message.node;
-
- // If we are collapsing, we might be hiding the currently focused node.
- // Also, clicking the expando node might have erased focus from the current node.
- // For simplicity's sake just focus on the node with the expando.
- this.focusNode(node);
-
- if(node.isExpanded){
- this._collapseNode(node);
- }else{
- this._expandNode(node);
- }
- },
-
- onClick: function(/* dojo.data */ item, /*TreeNode*/ node, /*Event*/ evt){
- // summary:
- // Callback when a tree node is clicked
- // tags:
- // callback
- },
- onDblClick: function(/* dojo.data */ item, /*TreeNode*/ node, /*Event*/ evt){
- // summary:
- // Callback when a tree node is double-clicked
- // tags:
- // callback
- },
- onOpen: function(/* dojo.data */ item, /*TreeNode*/ node){
- // summary:
- // Callback when a node is opened
- // tags:
- // callback
- },
- onClose: function(/* dojo.data */ item, /*TreeNode*/ node){
- // summary:
- // Callback when a node is closed
- // tags:
- // callback
- },
-
- _getNextNode: function(node){
- // summary:
- // Get next visible node
-
- if(node.isExpandable && node.isExpanded && node.hasChildren()){
- // if this is an expanded node, get the first child
- return node.getChildren()[0]; // _TreeNode
- }else{
- // find a parent node with a sibling
- while(node && node.isTreeNode){
- var returnNode = node.getNextSibling();
- if(returnNode){
- return returnNode; // _TreeNode
- }
- node = node.getParent();
- }
- return null;
- }
- },
-
- _getRootOrFirstNode: function(){
- // summary:
- // Get first visible node
- return this.showRoot ? this.rootNode : this.rootNode.getChildren()[0];
- },
-
- _collapseNode: function(/*_TreeNode*/ node){
- // summary:
- // Called when the user has requested to collapse the node
-
- if(node._expandNodeDeferred){
- delete node._expandNodeDeferred;
- }
-
- if(node.isExpandable){
- if(node.state == "LOADING"){
- // ignore clicks while we are in the process of loading data
- return;
- }
-
- node.collapse();
- this.onClose(node.item, node);
-
- if(node.item){
- this._state(node.item,false);
- this._saveState();
- }
- }
- },
-
- _expandNode: function(/*_TreeNode*/ node, /*Boolean?*/ recursive){
- // summary:
- // Called when the user has requested to expand the node
- // recursive:
- // Internal flag used when _expandNode() calls itself, don't set.
- // returns:
- // Deferred that fires when the node is loaded and opened and (if persist=true) all it's descendants
- // that were previously opened too
-
- if(node._expandNodeDeferred && !recursive){
- // there's already an expand in progress (or completed), so just return
- return node._expandNodeDeferred; // dojo.Deferred
- }
-
- var model = this.model,
- item = node.item,
- _this = this;
-
- switch(node.state){
- case "UNCHECKED":
- // need to load all the children, and then expand
- node.markProcessing();
-
- // Setup deferred to signal when the load and expand are finished.
- // Save that deferred in this._expandDeferred as a flag that operation is in progress.
- var def = (node._expandNodeDeferred = new dojo.Deferred());
-
- // Get the children
- model.getChildren(
- item,
- function(items){
- node.unmarkProcessing();
-
- // Display the children and also start expanding any children that were previously expanded
- // (if this.persist == true). The returned Deferred will fire when those expansions finish.
- var scid = node.setChildItems(items);
-
- // Call _expandNode() again but this time it will just to do the animation (default branch).
- // The returned Deferred will fire when the animation completes.
- // TODO: seems like I can avoid recursion and just use a deferred to sequence the events?
- var ed = _this._expandNode(node, true);
-
- // After the above two tasks (setChildItems() and recursive _expandNode()) finish,
- // signal that I am done.
- scid.addCallback(function(){
- ed.addCallback(function(){
- def.callback();
- })
- });
- },
- function(err){
- console.error(_this, ": error loading root children: ", err);
- }
- );
- break;
-
- default: // "LOADED"
- // data is already loaded; just expand node
- def = (node._expandNodeDeferred = node.expand());
-
- this.onOpen(node.item, node);
-
- if(item){
- this._state(item, true);
- this._saveState();
- }
- }
-
- return def; // dojo.Deferred
- },
-
- ////////////////// Miscellaneous functions ////////////////
-
- focusNode: function(/* _tree.Node */ node){
- // summary:
- // Focus on the specified node (which must be visible)
- // tags:
- // protected
-
- // set focus so that the label will be voiced using screen readers
- dijit.focus(node.labelNode);
- },
-
- _onNodeFocus: function(/*dijit._Widget*/ node){
- // summary:
- // Called when a TreeNode gets focus, either by user clicking
- // it, or programatically by arrow key handling code.
- // description:
- // It marks that the current node is the selected one, and the previously
- // selected node no longer is.
-
- if(node){
- if(node != this.lastFocused && this.lastFocused && !this.lastFocused._destroyed){
- // mark that the previously selected node is no longer the selected one
- this.lastFocused.setSelected(false);
- }
-
- // mark that the new node is the currently selected one
- node.setSelected(true);
- this.lastFocused = node;
- }
- },
-
- _onNodeMouseEnter: function(/*dijit._Widget*/ node){
- // summary:
- // Called when mouse is over a node (onmouseenter event)
- },
-
- _onNodeMouseLeave: function(/*dijit._Widget*/ node){
- // summary:
- // Called when mouse is over a node (onmouseenter event)
- },
-
- //////////////// Events from the model //////////////////////////
-
- _onItemChange: function(/*Item*/ item){
- // summary:
- // Processes notification of a change to an item's scalar values like label
- var model = this.model,
- identity = model.getIdentity(item),
- nodes = this._itemNodesMap[identity];
-
- if(nodes){
- var self = this;
- dojo.forEach(nodes,function(node){
- node.attr({
- label: self.getLabel(item),
- tooltip: self.getTooltip(item)
- });
- node._updateItemClasses(item);
- });
- }
- },
-
- _onItemChildrenChange: function(/*dojo.data.Item*/ parent, /*dojo.data.Item[]*/ newChildrenList){
- // summary:
- // Processes notification of a change to an item's children
- var model = this.model,
- identity = model.getIdentity(parent),
- parentNodes = this._itemNodesMap[identity];
-
- if(parentNodes){
- dojo.forEach(parentNodes,function(parentNode){
- parentNode.setChildItems(newChildrenList);
- });
- }
- },
-
- _onItemDelete: function(/*Item*/ item){
- // summary:
- // Processes notification of a deletion of an item
- var model = this.model,
- identity = model.getIdentity(item),
- nodes = this._itemNodesMap[identity];
-
- if(nodes){
- dojo.forEach(nodes,function(node){
- var parent = node.getParent();
- if(parent){
- // if node has not already been orphaned from a _onSetItem(parent, "children", ..) call...
- parent.removeChild(node);
- }
- node.destroyRecursive();
- });
- delete this._itemNodesMap[identity];
- }
- },
-
- /////////////// Miscellaneous funcs
-
- _initState: function(){
- // summary:
- // Load in which nodes should be opened automatically
- if(this.persist){
- var cookie = dojo.cookie(this.cookieName);
- this._openedItemIds = {};
- if(cookie){
- dojo.forEach(cookie.split(','), function(item){
- this._openedItemIds[item] = true;
- }, this);
- }
- }
- },
- _state: function(item,expanded){
- // summary:
- // Query or set expanded state for an item,
- if(!this.persist){
- return false;
- }
- var id=this.model.getIdentity(item);
- if(arguments.length === 1){
- return this._openedItemIds[id];
- }
- if(expanded){
- this._openedItemIds[id] = true;
- }else{
- delete this._openedItemIds[id];
- }
- },
- _saveState: function(){
- // summary:
- // Create and save a cookie with the currently expanded nodes identifiers
- if(!this.persist){
- return;
- }
- var ary = [];
- for(var id in this._openedItemIds){
- ary.push(id);
- }
- dojo.cookie(this.cookieName, ary.join(","), {expires:365});
- },
-
- destroy: function(){
- if(this._curSearch){
- clearTimeout(this._curSearch.timer);
- delete this._curSearch;
- }
- if(this.rootNode){
- this.rootNode.destroyRecursive();
- }
- if(this.dndController && !dojo.isString(this.dndController)){
- this.dndController.destroy();
- }
- this.rootNode = null;
- this.inherited(arguments);
- },
-
- destroyRecursive: function(){
- // A tree is treated as a leaf, not as a node with children (like a grid),
- // but defining destroyRecursive for back-compat.
- this.destroy();
- },
-
- resize: function(changeSize){
- if(changeSize){
- dojo.marginBox(this.domNode, changeSize);
- dojo.style(this.domNode, "overflow", "auto"); // for scrollbars
- }
-
- // The only JS sizing involved w/tree is the indentation, which is specified
- // in CSS and read in through this dummy indentDetector node (tree must be
- // visible and attached to the DOM to read this)
- this._nodePixelIndent = dojo.marginBox(this.tree.indentDetector).w;
-
- if(this.tree.rootNode){
- // If tree has already loaded, then reset indent for all the nodes
- this.tree.rootNode.attr('indent', this.showRoot ? 0 : -1);
- }
- },
-
- _createTreeNode: function(/*Object*/ args){
- // summary:
- // creates a TreeNode
- // description:
- // Developers can override this method to define their own TreeNode class;
- // However it will probably be removed in a future release in favor of a way
- // of just specifying a widget for the label, rather than one that contains
- // the children too.
- return new dijit._TreeNode(args);
- }
-});
-
-// For back-compat. TODO: remove in 2.0
-dojo.require("dijit.tree.TreeStoreModel");
-dojo.require("dijit.tree.ForestStoreModel");
-
-}
diff --git a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/_Calendar.js b/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/_Calendar.js
deleted file mode 100644
index e40ca44..0000000
--- a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/_Calendar.js
+++ /dev/null
@@ -1,19 +0,0 @@
-/*
- Copyright (c) 2004-2009, The Dojo Foundation All Rights Reserved.
- Available via Academic Free License >= 2.1 OR the modified BSD license.
- see: http://dojotoolkit.org/license for details
-*/
-
-
-if(!dojo._hasResource["dijit._Calendar"]){ //_hasResource checks added by build. Do not use _hasResource directly in your code.
-dojo._hasResource["dijit._Calendar"] = true;
-dojo.provide("dijit._Calendar");
-
-dojo.require("dijit.Calendar");
-dojo.deprecated("dijit._Calendar is deprecated", "dijit._Calendar moved to dijit.Calendar", 1.5);
-
-// dijit._Calendar had an underscore all this time merely because it did
-// not satisfy dijit's a11y policy.
-dijit._Calendar = dijit.Calendar;
-
-}
diff --git a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/_Contained.js b/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/_Contained.js
deleted file mode 100644
index 1543ce1..0000000
--- a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/_Contained.js
+++ /dev/null
@@ -1,76 +0,0 @@
-/*
- Copyright (c) 2004-2009, The Dojo Foundation All Rights Reserved.
- Available via Academic Free License >= 2.1 OR the modified BSD license.
- see: http://dojotoolkit.org/license for details
-*/
-
-
-if(!dojo._hasResource["dijit._Contained"]){ //_hasResource checks added by build. Do not use _hasResource directly in your code.
-dojo._hasResource["dijit._Contained"] = true;
-dojo.provide("dijit._Contained");
-
-dojo.declare("dijit._Contained",
- null,
- {
- // summary:
- // Mixin for widgets that are children of a container widget
- //
- // example:
- // | // make a basic custom widget that knows about it's parents
- // | dojo.declare("my.customClass",[dijit._Widget,dijit._Contained],{});
-
- getParent: function(){
- // summary:
- // Returns the parent widget of this widget, assuming the parent
- // specifies isContainer
- var parent = dijit.getEnclosingWidget(this.domNode.parentNode);
- return parent && parent.isContainer ? parent : null;
- },
-
- _getSibling: function(/*String*/ which){
- // summary:
- // Returns next or previous sibling
- // which:
- // Either "next" or "previous"
- // tags:
- // private
- var node = this.domNode;
- do{
- node = node[which+"Sibling"];
- }while(node && node.nodeType != 1);
- return node && dijit.byNode(node); // dijit._Widget
- },
-
- getPreviousSibling: function(){
- // summary:
- // Returns null if this is the first child of the parent,
- // otherwise returns the next element sibling to the "left".
-
- return this._getSibling("previous"); // dijit._Widget
- },
-
- getNextSibling: function(){
- // summary:
- // Returns null if this is the last child of the parent,
- // otherwise returns the next element sibling to the "right".
-
- return this._getSibling("next"); // dijit._Widget
- },
-
- getIndexInParent: function(){
- // summary:
- // Returns the index of this widget within its container parent.
- // It returns -1 if the parent does not exist, or if the parent
- // is not a dijit._Container
-
- var p = this.getParent();
- if(!p || !p.getIndexOfChild){
- return -1; // int
- }
- return p.getIndexOfChild(this); // int
- }
- }
- );
-
-
-}
diff --git a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/_Container.js b/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/_Container.js
deleted file mode 100644
index 43010a4..0000000
--- a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/_Container.js
+++ /dev/null
@@ -1,149 +0,0 @@
-/*
- Copyright (c) 2004-2009, The Dojo Foundation All Rights Reserved.
- Available via Academic Free License >= 2.1 OR the modified BSD license.
- see: http://dojotoolkit.org/license for details
-*/
-
-
-if(!dojo._hasResource["dijit._Container"]){ //_hasResource checks added by build. Do not use _hasResource directly in your code.
-dojo._hasResource["dijit._Container"] = true;
-dojo.provide("dijit._Container");
-
-dojo.declare("dijit._Container",
- null,
- {
- // summary:
- // Mixin for widgets that contain a set of widget children.
- // description:
- // Use this mixin for widgets that needs to know about and
- // keep track of their widget children. Suitable for widgets like BorderContainer
- // and TabContainer which contain (only) a set of child widgets.
- //
- // It's not suitable for widgets like ContentPane
- // which contains mixed HTML (plain DOM nodes in addition to widgets),
- // and where contained widgets are not necessarily directly below
- // this.containerNode. In that case calls like addChild(node, position)
- // wouldn't make sense.
-
- // isContainer: [protected] Boolean
- // Indicates that this widget acts as a "parent" to the descendant widgets.
- // When the parent is started it will call startup() on the child widgets.
- // See also `isLayoutContainer`.
- isContainer: true,
-
- buildRendering: function(){
- this.inherited(arguments);
- if(!this.containerNode){
- // all widgets with descendants must set containerNode
- this.containerNode = this.domNode;
- }
- },
-
- addChild: function(/*dijit._Widget*/ widget, /*int?*/ insertIndex){
- // summary:
- // Makes the given widget a child of this widget.
- // description:
- // Inserts specified child widget's dom node as a child of this widget's
- // container node, and possibly does other processing (such as layout).
-
- var refNode = this.containerNode;
- if(insertIndex && typeof insertIndex == "number"){
- var children = this.getChildren();
- if(children && children.length >= insertIndex){
- refNode = children[insertIndex-1].domNode;
- insertIndex = "after";
- }
- }
- dojo.place(widget.domNode, refNode, insertIndex);
-
- // If I've been started but the child widget hasn't been started,
- // start it now. Make sure to do this after widget has been
- // inserted into the DOM tree, so it can see that it's being controlled by me,
- // so it doesn't try to size itself.
- if(this._started && !widget._started){
- widget.startup();
- }
- },
-
- removeChild: function(/*Widget or int*/ widget){
- // summary:
- // Removes the passed widget instance from this widget but does
- // not destroy it. You can also pass in an integer indicating
- // the index within the container to remove
-
- if(typeof widget == "number" && widget > 0){
- widget = this.getChildren()[widget];
- }
-
- if(widget && widget.domNode){
- var node = widget.domNode;
- node.parentNode.removeChild(node); // detach but don't destroy
- }
- },
-
- getChildren: function(){
- // summary:
- // Returns array of children widgets.
- // description:
- // Returns the widgets that are directly under this.containerNode.
- return dojo.query("> [widgetId]", this.containerNode).map(dijit.byNode); // Widget[]
- },
-
- hasChildren: function(){
- // summary:
- // Returns true if widget has children, i.e. if this.containerNode contains something.
- return dojo.query("> [widgetId]", this.containerNode).length > 0; // Boolean
- },
-
- destroyDescendants: function(/*Boolean*/ preserveDom){
- // summary:
- // Destroys all the widgets inside this.containerNode,
- // but not this widget itself
- dojo.forEach(this.getChildren(), function(child){ child.destroyRecursive(preserveDom); });
- },
-
- _getSiblingOfChild: function(/*dijit._Widget*/ child, /*int*/ dir){
- // summary:
- // Get the next or previous widget sibling of child
- // dir:
- // if 1, get the next sibling
- // if -1, get the previous sibling
- // tags:
- // private
- var node = child.domNode,
- which = (dir>0 ? "nextSibling" : "previousSibling");
- do{
- node = node[which];
- }while(node && (node.nodeType != 1 || !dijit.byNode(node)));
- return node && dijit.byNode(node); // dijit._Widget
- },
-
- getIndexOfChild: function(/*dijit._Widget*/ child){
- // summary:
- // Gets the index of the child in this container or -1 if not found
- return dojo.indexOf(this.getChildren(), child); // int
- },
-
- startup: function(){
- // summary:
- // Called after all the widgets have been instantiated and their
- // dom nodes have been inserted somewhere under dojo.doc.body.
- //
- // Widgets should override this method to do any initialization
- // dependent on other widgets existing, and then call
- // this superclass method to finish things off.
- //
- // startup() in subclasses shouldn't do anything
- // size related because the size of the widget hasn't been set yet.
-
- if(this._started){ return; }
-
- // Startup all children of this widget
- dojo.forEach(this.getChildren(), function(child){ child.startup(); });
-
- this.inherited(arguments);
- }
- }
-);
-
-}
diff --git a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/_DialogMixin.js b/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/_DialogMixin.js
deleted file mode 100644
index ff3c970..0000000
--- a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/_DialogMixin.js
+++ /dev/null
@@ -1,84 +0,0 @@
-/*
- Copyright (c) 2004-2009, The Dojo Foundation All Rights Reserved.
- Available via Academic Free License >= 2.1 OR the modified BSD license.
- see: http://dojotoolkit.org/license for details
-*/
-
-
-if(!dojo._hasResource["dijit._DialogMixin"]){ //_hasResource checks added by build. Do not use _hasResource directly in your code.
-dojo._hasResource["dijit._DialogMixin"] = true;
-dojo.provide("dijit._DialogMixin");
-
-dojo.declare("dijit._DialogMixin", null,
- {
- // summary:
- // This provides functions useful to Dialog and TooltipDialog
-
- attributeMap: dijit._Widget.prototype.attributeMap,
-
- execute: function(/*Object*/ formContents){
- // summary:
- // Callback when the user hits the submit button.
- // Override this method to handle Dialog execution.
- // description:
- // After the user has pressed the submit button, the Dialog
- // first calls onExecute() to notify the container to hide the
- // dialog and restore focus to wherever it used to be.
- //
- // *Then* this method is called.
- // type:
- // callback
- },
-
- onCancel: function(){
- // summary:
- // Called when user has pressed the Dialog's cancel button, to notify container.
- // description:
- // Developer shouldn't override or connect to this method;
- // it's a private communication device between the TooltipDialog
- // and the thing that opened it (ex: `dijit.form.DropDownButton`)
- // type:
- // protected
- },
-
- onExecute: function(){
- // summary:
- // Called when user has pressed the dialog's OK button, to notify container.
- // description:
- // Developer shouldn't override or connect to this method;
- // it's a private communication device between the TooltipDialog
- // and the thing that opened it (ex: `dijit.form.DropDownButton`)
- // type:
- // protected
- },
-
- _onSubmit: function(){
- // summary:
- // Callback when user hits submit button
- // type:
- // protected
- this.onExecute(); // notify container that we are about to execute
- this.execute(this.attr('value'));
- },
-
- _getFocusItems: function(/*Node*/ dialogNode){
- // summary:
- // Find focusable Items each time a dialog is opened,
- // setting _firstFocusItem and _lastFocusItem
- // tags:
- // protected
-
- var elems = dijit._getTabNavigable(dojo.byId(dialogNode));
- this._firstFocusItem = elems.lowest || elems.first || dialogNode;
- this._lastFocusItem = elems.last || elems.highest || this._firstFocusItem;
- if(dojo.isMoz && this._firstFocusItem.tagName.toLowerCase() == "input" &&
- dojo.getNodeProp(this._firstFocusItem, "type").toLowerCase() == "file"){
- // FF doesn't behave well when first element is input type=file, set first focusable to dialog container
- dojo.attr(dialogNode, "tabIndex", "0");
- this._firstFocusItem = dialogNode;
- }
- }
- }
-);
-
-}
diff --git a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/_HasDropDown.js b/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/_HasDropDown.js
deleted file mode 100644
index 3055909..0000000
--- a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/_HasDropDown.js
+++ /dev/null
@@ -1,418 +0,0 @@
-/*
- Copyright (c) 2004-2009, The Dojo Foundation All Rights Reserved.
- Available via Academic Free License >= 2.1 OR the modified BSD license.
- see: http://dojotoolkit.org/license for details
-*/
-
-
-if(!dojo._hasResource["dijit._HasDropDown"]){ //_hasResource checks added by build. Do not use _hasResource directly in your code.
-dojo._hasResource["dijit._HasDropDown"] = true;
-dojo.provide("dijit._HasDropDown");
-
-dojo.require("dijit._base.place");
-dojo.require("dijit._Widget");
-
-dojo.declare("dijit._HasDropDown",
- null,
- {
- // summary:
- // Mixin for widgets that need drop down ability.
-
- // _buttonNode: [protected] DomNode
- // The button/icon/node to click to display the drop down.
- // Can be set via a dojoAttachPoint assignment.
- // If missing, then either focusNode or domNode (if focusNode is also missing) will be used.
- _buttonNode: null,
-
- // _arrowWrapperNode: [protected] DomNode
- // Will set CSS class dijitUpArrow, dijitDownArrow, dijitRightArrow etc. on this node depending
- // on where the drop down is set to be positioned.
- // Can be set via a dojoAttachPoint assignment.
- // If missing, then _buttonNode will be used.
- _arrowWrapperNode: null,
-
- // _popupStateNode: [protected] DomNode
- // The node to set the popupActive class on.
- // Can be set via a dojoAttachPoint assignment.
- // If missing, then focusNode or _buttonNode (if focusNode is missing) will be used.
- _popupStateNode: null,
-
- // _aroundNode: [protected] DomNode
- // The node to display the popup around.
- // Can be set via a dojoAttachPoint assignment.
- // If missing, then domNode will be used.
- _aroundNode: null,
-
- // dropDown: [protected] Widget
- // The widget to display as a popup. This widget *must* be
- // defined before the startup function is called.
- dropDown: null,
-
- // autoWidth: [protected] Boolean
- // Set to true to make the drop down at least as wide as this
- // widget. Set to false if the drop down should just be its
- // default width
- autoWidth: true,
-
- // forceWidth: [protected] Boolean
- // Set to true to make the drop down exactly as wide as this
- // widget. Overrides autoWidth.
- forceWidth: false,
-
- // maxHeight: [protected] Integer
- // The max height for our dropdown. Set to 0 for no max height.
- // any dropdown taller than this will have scrollbars
- maxHeight: 0,
-
- // dropDownPosition: [const] String[]
- // This variable controls the position of the drop down.
- // It's an array of strings with the following values:
- //
- // * before: places drop down to the left of the target node/widget, or to the right in
- // the case of RTL scripts like Hebrew and Arabic
- // * after: places drop down to the right of the target node/widget, or to the left in
- // the case of RTL scripts like Hebrew and Arabic
- // * above: drop down goes above target node
- // * below: drop down goes below target node
- //
- // The list is positions is tried, in order, until a position is found where the drop down fits
- // within the viewport.
- //
- dropDownPosition: ["below","above"],
-
- // _stopClickEvents: Boolean
- // When set to false, the click events will not be stopped, in
- // case you want to use them in your subwidget
- _stopClickEvents: true,
-
- _onDropDownMouse: function(/*Event*/ e){
- // summary:
- // Callback when the user mouse clicks on the arrow icon, or presses the down
- // arrow key, to open the drop down.
-
- // We handle mouse events using onmousedown in order to allow for selecting via
- // a mouseDown --> mouseMove --> mouseUp. So, our click is already handled, unless
- // we are executed via keypress - in which case, this._seenKeydown
- // will be set to true.
- if(e.type == "click" && !this._seenKeydown){ return; }
- this._seenKeydown = false;
-
- // If we are a mouse event, set up the mouseup handler. See _onDropDownMouse() for
- // details on this handler.
- if(e.type == "mousedown"){
- this._docHandler = this.connect(dojo.doc, "onmouseup", "_onDropDownMouseup");
- }
- if(this.disabled || this.readOnly){ return; }
- if(this._stopClickEvents){
- dojo.stopEvent(e);
- }
- this.toggleDropDown();
-
- // If we are a click, then we'll pretend we did a mouse up
- if(e.type == "click" || e.type == "keypress"){
- this._onDropDownMouseup();
- }
- },
-
- _onDropDownMouseup: function(/*Event?*/ e){
- // summary:
- // Callback when the user lifts their mouse after mouse down on the arrow icon.
- // If the drop is a simple menu and the mouse is over the menu, we execute it, otherwise, we focus our
- // dropDown node. If the event is missing, then we are not
- // a mouseup event.
- //
- // This is useful for the common mouse movement pattern
- // with native browser <select> nodes:
- // 1. mouse down on the select node (probably on the arrow)
- // 2. move mouse to a menu item while holding down the mouse button
- // 3. mouse up. this selects the menu item as though the user had clicked it.
-
- if(e && this._docHandler){
- this.disconnect(this._docHandler);
- }
- var dropDown = this.dropDown, overMenu = false;
-
- if(e && this._opened){
- // This code deals with the corner-case when the drop down covers the original widget,
- // because it's so large. In that case mouse-up shouldn't select a value from the menu.
- // Find out if our target is somewhere in our dropdown widget,
- // but not over our _buttonNode (the clickable node)
- var c = dojo.position(this._buttonNode, true);
- if(!(e.pageX >= c.x && e.pageX <= c.x + c.w) ||
- !(e.pageY >= c.y && e.pageY <= c.y + c.h)){
- var t = e.target;
- while(t && !overMenu){
- if(dojo.hasClass(t, "dijitPopup")){
- overMenu = true;
- }else{
- t = t.parentNode;
- }
- }
- if(overMenu){
- t = e.target;
- if(dropDown.onItemClick){
- var menuItem;
- while(t && !(menuItem = dijit.byNode(t))){
- t = t.parentNode;
- }
- if(menuItem && menuItem.onClick && menuItem.getParent){
- menuItem.getParent().onItemClick(menuItem, e);
- }
- }
- return;
- }
- }
- }
- if(this._opened && dropDown.focus){
- // Focus the dropdown widget - do it on a delay so that we
- // don't steal our own focus.
- window.setTimeout(dojo.hitch(dropDown, "focus"), 1);
- }
- },
-
- _setupDropdown: function(){
- // summary:
- // set up nodes and connect our mouse and keypress events
- this._buttonNode = this._buttonNode || this.focusNode || this.domNode;
- this._popupStateNode = this._popupStateNode || this.focusNode || this._buttonNode;
- this._aroundNode = this._aroundNode || this.domNode;
- this.connect(this._buttonNode, "onmousedown", "_onDropDownMouse");
- this.connect(this._buttonNode, "onclick", "_onDropDownMouse");
- this.connect(this._buttonNode, "onkeydown", "_onDropDownKeydown");
- this.connect(this._buttonNode, "onblur", "_onDropDownBlur");
- this.connect(this._buttonNode, "onkeypress", "_onKey");
-
- // If we have a _setStateClass function (which happens when
- // we are a form widget), then we need to connect our open/close
- // functions to it
- if(this._setStateClass){
- this.connect(this, "openDropDown", "_setStateClass");
- this.connect(this, "closeDropDown", "_setStateClass");
- }
-
- // Add a class to the "dijitDownArrowButton" type class to _buttonNode so theme can set direction of arrow
- // based on where drop down will normally appear
- var defaultPos = {
- "after" : this.isLeftToRight() ? "Right" : "Left",
- "before" : this.isLeftToRight() ? "Left" : "Right",
- "above" : "Up",
- "below" : "Down",
- "left" : "Left",
- "right" : "Right"
- }[this.dropDownPosition[0]] || this.dropDownPosition[0] || "Down";
- dojo.addClass(this._arrowWrapperNode || this._buttonNode, "dijit" + defaultPos + "ArrowButton");
- },
-
- postCreate: function(){
- this._setupDropdown();
- this.inherited(arguments);
- },
-
- destroyDescendants: function(){
- if(this.dropDown){
- // Destroy the drop down, unless it's already been destroyed. This can happen because
- // the drop down is a direct child of <body> even though it's logically my child.
- if(!this.dropDown._destroyed){
- this.dropDown.destroyRecursive();
- }
- delete this.dropDown;
- }
- this.inherited(arguments);
- },
-
- _onDropDownKeydown: function(/*Event*/ e){
- this._seenKeydown = true;
- },
-
- _onKeyPress: function(/*Event*/ e){
- if(this._opened && e.charOrCode == dojo.keys.ESCAPE && !e.shiftKey && !e.ctrlKey && !e.altKey){
- this.toggleDropDown();
- dojo.stopEvent(e);
- return;
- }
- this.inherited(arguments);
- },
-
- _onDropDownBlur: function(/*Event*/ e){
- this._seenKeydown = false;
- },
-
- _onKey: function(/*Event*/ e){
- // summary:
- // Callback when the user presses a key on menu popup node
-
- if(this.disabled || this.readOnly){ return; }
- var d = this.dropDown;
- if(d && this._opened && d.handleKey){
- if(d.handleKey(e) === false){ return; }
- }
- if(d && this._opened && e.keyCode == dojo.keys.ESCAPE){
- this.toggleDropDown();
- return;
- }
- if(e.keyCode == dojo.keys.DOWN_ARROW || e.keyCode == dojo.keys.ENTER || e.charOrCode == " "){
- this._onDropDownMouse(e);
- }
- },
-
- _onBlur: function(){
- // summary:
- // Called magically when focus has shifted away from this widget and it's dropdown
-
- this.closeDropDown();
- // don't focus on button. the user has explicitly focused on something else.
- this.inherited(arguments);
- },
-
- isLoaded: function(){
- // summary:
- // Returns whether or not the dropdown is loaded. This can
- // be overridden in order to force a call to loadDropDown().
- // tags:
- // protected
-
- return true;
- },
-
- loadDropDown: function(/* Function */ loadCallback){
- // summary:
- // Loads the data for the dropdown, and at some point, calls
- // the given callback
- // tags:
- // protected
-
- loadCallback();
- },
-
- toggleDropDown: function(){
- // summary:
- // Toggle the drop-down widget; if it is up, close it, if not, open it
- // tags:
- // protected
-
- if(this.disabled || this.readOnly){ return; }
- this.focus();
- var dropDown = this.dropDown;
- if(!dropDown){ return; }
- if(!this._opened){
- // If we aren't loaded, load it first so there isn't a flicker
- if(!this.isLoaded()){
- this.loadDropDown(dojo.hitch(this, "openDropDown"));
- return;
- }else{
- this.openDropDown();
- }
- }else{
- this.closeDropDown();
- }
- },
-
- openDropDown: function(){
- // summary:
- // Opens the dropdown for this widget - it returns the
- // return value of dijit.popup.open
- // tags:
- // protected
-
- var dropDown = this.dropDown;
- var ddNode = dropDown.domNode;
- var self = this;
-
- // Prepare our popup's height and honor maxHeight if it exists.
-
- // TODO: isn't maxHeight dependent on the return value from dijit.popup.open(),
- // ie, dependent on how much space is available (BK)
-
- if(!this._preparedNode){
- dijit.popup.moveOffScreen(ddNode);
- this._preparedNode = true;
- // Check if we have explicitly set width and height on the dropdown widget dom node
- if(ddNode.style.width){
- this._explicitDDWidth = true;
- }
- if(ddNode.style.height){
- this._explicitDDHeight = true;
- }
- }
- if(this.maxHeight || this.forceWidth || this.autoWidth){
- var myStyle = {
- display: "",
- visibility: "hidden"
- };
- if(!this._explicitDDWidth){
- myStyle.width = "";
- }
- if(!this._explicitDDHeight){
- myStyle.height = "";
- }
- dojo.style(ddNode, myStyle);
- var mb = dojo.marginBox(ddNode);
- var overHeight = (this.maxHeight && mb.h > this.maxHeight);
- dojo.style(ddNode, {overflow: overHeight ? "auto" : "hidden"});
- if(this.forceWidth){
- mb.w = this.domNode.offsetWidth;
- }else if(this.autoWidth){
- mb.w = Math.max(mb.w, this.domNode.offsetWidth);
- }else{
- delete mb.w;
- }
- if(overHeight){
- mb.h = this.maxHeight;
- if("w" in mb){
- mb.w += 16;
- }
- }else{
- delete mb.h;
- }
- delete mb.t;
- delete mb.l;
- if(dojo.isFunction(dropDown.resize)){
- dropDown.resize(mb);
- }else{
- dojo.marginBox(ddNode, mb);
- }
- }
- var retVal = dijit.popup.open({
- parent: this,
- popup: dropDown,
- around: this._aroundNode,
- orient: dijit.getPopupAroundAlignment((this.dropDownPosition && this.dropDownPosition.length) ? this.dropDownPosition : ["below"],this.isLeftToRight()),
- onExecute: function(){
- self.closeDropDown(true);
- },
- onCancel: function(){
- self.closeDropDown(true);
- },
- onClose: function(){
- dojo.attr(self._popupStateNode, "popupActive", false);
- dojo.removeClass(self._popupStateNode, "dijitHasDropDownOpen");
- self._opened = false;
- self.state = "";
- }
- });
- dojo.attr(this._popupStateNode, "popupActive", "true");
- dojo.addClass(self._popupStateNode, "dijitHasDropDownOpen");
- this._opened=true;
- this.state="Opened";
- // TODO: set this.checked and call setStateClass(), to affect button look while drop down is shown
- return retVal;
- },
-
- closeDropDown: function(/*Boolean*/ focus){
- // summary:
- // Closes the drop down on this widget
- // tags:
- // protected
-
- if(this._opened){
- dijit.popup.close(this.dropDown);
- if(focus){ this.focus(); }
- this._opened = false;
- this.state = "";
- }
- }
-
- }
-);
-
-}
diff --git a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/_KeyNavContainer.js b/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/_KeyNavContainer.js
deleted file mode 100644
index 1df9bd3..0000000
--- a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/_KeyNavContainer.js
+++ /dev/null
@@ -1,240 +0,0 @@
-/*
- Copyright (c) 2004-2009, The Dojo Foundation All Rights Reserved.
- Available via Academic Free License >= 2.1 OR the modified BSD license.
- see: http://dojotoolkit.org/license for details
-*/
-
-
-if(!dojo._hasResource["dijit._KeyNavContainer"]){ //_hasResource checks added by build. Do not use _hasResource directly in your code.
-dojo._hasResource["dijit._KeyNavContainer"] = true;
-dojo.provide("dijit._KeyNavContainer");
-dojo.require("dijit._Container");
-
-dojo.declare("dijit._KeyNavContainer",
- dijit._Container,
- {
-
- // summary:
- // A _Container with keyboard navigation of its children.
- // description:
- // To use this mixin, call connectKeyNavHandlers() in
- // postCreate() and call startupKeyNavChildren() in startup().
- // It provides normalized keyboard and focusing code for Container
- // widgets.
-/*=====
- // focusedChild: [protected] Widget
- // The currently focused child widget, or null if there isn't one
- focusedChild: null,
-=====*/
-
- // tabIndex: Integer
- // Tab index of the container; same as HTML tabIndex attribute.
- // Note then when user tabs into the container, focus is immediately
- // moved to the first item in the container.
- tabIndex: "0",
-
- _keyNavCodes: {},
-
- connectKeyNavHandlers: function(/*dojo.keys[]*/ prevKeyCodes, /*dojo.keys[]*/ nextKeyCodes){
- // summary:
- // Call in postCreate() to attach the keyboard handlers
- // to the container.
- // preKeyCodes: dojo.keys[]
- // Key codes for navigating to the previous child.
- // nextKeyCodes: dojo.keys[]
- // Key codes for navigating to the next child.
- // tags:
- // protected
-
- var keyCodes = (this._keyNavCodes = {});
- var prev = dojo.hitch(this, this.focusPrev);
- var next = dojo.hitch(this, this.focusNext);
- dojo.forEach(prevKeyCodes, function(code){ keyCodes[code] = prev; });
- dojo.forEach(nextKeyCodes, function(code){ keyCodes[code] = next; });
- this.connect(this.domNode, "onkeypress", "_onContainerKeypress");
- this.connect(this.domNode, "onfocus", "_onContainerFocus");
- },
-
- startupKeyNavChildren: function(){
- // summary:
- // Call in startup() to set child tabindexes to -1
- // tags:
- // protected
- dojo.forEach(this.getChildren(), dojo.hitch(this, "_startupChild"));
- },
-
- addChild: function(/*dijit._Widget*/ widget, /*int?*/ insertIndex){
- // summary:
- // Add a child to our _Container
- dijit._KeyNavContainer.superclass.addChild.apply(this, arguments);
- this._startupChild(widget);
- },
-
- focus: function(){
- // summary:
- // Default focus() implementation: focus the first child.
- this.focusFirstChild();
- },
-
- focusFirstChild: function(){
- // summary:
- // Focus the first focusable child in the container.
- // tags:
- // protected
- var child = this._getFirstFocusableChild();
- if(child){ // edge case: Menu could be empty or hidden
- this.focusChild(child);
- }
- },
-
- focusNext: function(){
- // summary:
- // Focus the next widget
- // tags:
- // protected
- var child = this._getNextFocusableChild(this.focusedChild, 1);
- this.focusChild(child);
- },
-
- focusPrev: function(){
- // summary:
- // Focus the last focusable node in the previous widget
- // (ex: go to the ComboButton icon section rather than button section)
- // tags:
- // protected
- var child = this._getNextFocusableChild(this.focusedChild, -1);
- this.focusChild(child, true);
- },
-
- focusChild: function(/*dijit._Widget*/ widget, /*Boolean*/ last){
- // summary:
- // Focus widget.
- // widget:
- // Reference to container's child widget
- // last:
- // If true and if widget has multiple focusable nodes, focus the
- // last one instead of the first one
- // tags:
- // protected
-
- if(this.focusedChild && widget !== this.focusedChild){
- this._onChildBlur(this.focusedChild);
- }
- widget.focus(last ? "end" : "start");
- this.focusedChild = widget;
- },
-
- _startupChild: function(/*dijit._Widget*/ widget){
- // summary:
- // Setup for each child widget
- // description:
- // Sets tabIndex=-1 on each child, so that the tab key will
- // leave the container rather than visiting each child.
- // tags:
- // private
-
- widget.attr("tabIndex", "-1");
-
- this.connect(widget, "_onFocus", function(){
- // Set valid tabIndex so tabbing away from widget goes to right place, see #10272
- widget.attr("tabIndex", this.tabIndex);
- });
- this.connect(widget, "_onBlur", function(){
- widget.attr("tabIndex", "-1");
- });
- },
-
- _onContainerFocus: function(evt){
- // summary:
- // Handler for when the container gets focus
- // description:
- // Initially the container itself has a tabIndex, but when it gets
- // focus, switch focus to first child...
- // tags:
- // private
-
- // Note that we can't use _onFocus() because switching focus from the
- // _onFocus() handler confuses the focus.js code
- // (because it causes _onFocusNode() to be called recursively)
-
- // focus bubbles on Firefox,
- // so just make sure that focus has really gone to the container
- if(evt.target !== this.domNode){ return; }
-
- this.focusFirstChild();
-
- // and then set the container's tabIndex to -1,
- // (don't remove as that breaks Safari 4)
- // so that tab or shift-tab will go to the fields after/before
- // the container, rather than the container itself
- dojo.attr(this.domNode, "tabIndex", "-1");
- },
-
- _onBlur: function(evt){
- // When focus is moved away the container, and it's descendant (popup) widgets,
- // then restore the container's tabIndex so that user can tab to it again.
- // Note that using _onBlur() so that this doesn't happen when focus is shifted
- // to one of my child widgets (typically a popup)
- if(this.tabIndex){
- dojo.attr(this.domNode, "tabIndex", this.tabIndex);
- }
- this.inherited(arguments);
- },
-
- _onContainerKeypress: function(evt){
- // summary:
- // When a key is pressed, if it's an arrow key etc. then
- // it's handled here.
- // tags:
- // private
- if(evt.ctrlKey || evt.altKey){ return; }
- var func = this._keyNavCodes[evt.charOrCode];
- if(func){
- func();
- dojo.stopEvent(evt);
- }
- },
-
- _onChildBlur: function(/*dijit._Widget*/ widget){
- // summary:
- // Called when focus leaves a child widget to go
- // to a sibling widget.
- // tags:
- // protected
- },
-
- _getFirstFocusableChild: function(){
- // summary:
- // Returns first child that can be focused
- return this._getNextFocusableChild(null, 1); // dijit._Widget
- },
-
- _getNextFocusableChild: function(child, dir){
- // summary:
- // Returns the next or previous focusable child, compared
- // to "child"
- // child: Widget
- // The current widget
- // dir: Integer
- // * 1 = after
- // * -1 = before
- if(child){
- child = this._getSiblingOfChild(child, dir);
- }
- var children = this.getChildren();
- for(var i=0; i < children.length; i++){
- if(!child){
- child = children[(dir>0) ? 0 : (children.length-1)];
- }
- if(child.isFocusable()){
- return child; // dijit._Widget
- }
- child = this._getSiblingOfChild(child, dir);
- }
- // no focusable child found
- return null; // dijit._Widget
- }
- }
-);
-
-}
diff --git a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/_Templated.js b/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/_Templated.js
deleted file mode 100644
index 9885e80..0000000
--- a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/_Templated.js
+++ /dev/null
@@ -1,345 +0,0 @@
-/*
- Copyright (c) 2004-2009, The Dojo Foundation All Rights Reserved.
- Available via Academic Free License >= 2.1 OR the modified BSD license.
- see: http://dojotoolkit.org/license for details
-*/
-
-
-if(!dojo._hasResource["dijit._Templated"]){ //_hasResource checks added by build. Do not use _hasResource directly in your code.
-dojo._hasResource["dijit._Templated"] = true;
-dojo.provide("dijit._Templated");
-
-dojo.require("dijit._Widget");
-dojo.require("dojo.string");
-dojo.require("dojo.parser");
-dojo.require("dojo.cache");
-
-dojo.declare("dijit._Templated",
- null,
- {
- // summary:
- // Mixin for widgets that are instantiated from a template
-
- // templateString: [protected] String
- // A string that represents the widget template. Pre-empts the
- // templatePath. In builds that have their strings "interned", the
- // templatePath is converted to an inline templateString, thereby
- // preventing a synchronous network call.
- //
- // Use in conjunction with dojo.cache() to load from a file.
- templateString: null,
-
- // templatePath: [protected deprecated] String
- // Path to template (HTML file) for this widget relative to dojo.baseUrl.
- // Deprecated: use templateString with dojo.cache() instead.
- templatePath: null,
-
- // widgetsInTemplate: [protected] Boolean
- // Should we parse the template to find widgets that might be
- // declared in markup inside it? False by default.
- widgetsInTemplate: false,
-
- // skipNodeCache: [protected] Boolean
- // If using a cached widget template node poses issues for a
- // particular widget class, it can set this property to ensure
- // that its template is always re-built from a string
- _skipNodeCache: false,
-
- // _earlyTemplatedStartup: Boolean
- // A fallback to preserve the 1.0 - 1.3 behavior of children in
- // templates having their startup called before the parent widget
- // fires postCreate. Defaults to 'false', causing child widgets to
- // have their .startup() called immediately before a parent widget
- // .startup(), but always after the parent .postCreate(). Set to
- // 'true' to re-enable to previous, arguably broken, behavior.
- _earlyTemplatedStartup: false,
-
- // _attachPoints: [private] String[]
- // List of widget attribute names associated with dojoAttachPoint=... in the
- // template, ex: ["containerNode", "labelNode"]
-/*=====
- _attachPoints: [],
- =====*/
-
- constructor: function(){
- this._attachPoints = [];
- },
-
- _stringRepl: function(tmpl){
- // summary:
- // Does substitution of ${foo} type properties in template string
- // tags:
- // private
- var className = this.declaredClass, _this = this;
- // Cache contains a string because we need to do property replacement
- // do the property replacement
- return dojo.string.substitute(tmpl, this, function(value, key){
- if(key.charAt(0) == '!'){ value = dojo.getObject(key.substr(1), false, _this); }
- if(typeof value == "undefined"){ throw new Error(className+" template:"+key); } // a debugging aide
- if(value == null){ return ""; }
-
- // Substitution keys beginning with ! will skip the transform step,
- // in case a user wishes to insert unescaped markup, e.g. ${!foo}
- return key.charAt(0) == "!" ? value :
- // Safer substitution, see heading "Attribute values" in
- // http://www.w3.org/TR/REC-html40/appendix/notes.html#h-B.3.2
- value.toString().replace(/"/g,"""); //TODO: add &? use encodeXML method?
- }, this);
- },
-
- // method over-ride
- buildRendering: function(){
- // summary:
- // Construct the UI for this widget from a template, setting this.domNode.
- // tags:
- // protected
-
- // Lookup cached version of template, and download to cache if it
- // isn't there already. Returns either a DomNode or a string, depending on
- // whether or not the template contains ${foo} replacement parameters.
- var cached = dijit._Templated.getCachedTemplate(this.templatePath, this.templateString, this._skipNodeCache);
-
- var node;
- if(dojo.isString(cached)){
- node = dojo._toDom(this._stringRepl(cached));
- if(node.nodeType != 1){
- // Flag common problems such as templates with multiple top level nodes (nodeType == 11)
- throw new Error("Invalid template: " + cached);
- }
- }else{
- // if it's a node, all we have to do is clone it
- node = cached.cloneNode(true);
- }
-
- this.domNode = node;
-
- // recurse through the node, looking for, and attaching to, our
- // attachment points and events, which should be defined on the template node.
- this._attachTemplateNodes(node);
-
- if(this.widgetsInTemplate){
- // Make sure dojoType is used for parsing widgets in template.
- // The dojo.parser.query could be changed from multiversion support.
- var parser = dojo.parser, qry, attr;
- if(parser._query != "[dojoType]"){
- qry = parser._query;
- attr = parser._attrName;
- parser._query = "[dojoType]";
- parser._attrName = "dojoType";
- }
-
- // Store widgets that we need to start at a later point in time
- var cw = (this._startupWidgets = dojo.parser.parse(node, {
- noStart: !this._earlyTemplatedStartup
- }));
-
- // Restore the query.
- if(qry){
- parser._query = qry;
- parser._attrName = attr;
- }
-
- this._supportingWidgets = dijit.findWidgets(node);
-
- this._attachTemplateNodes(cw, function(n,p){
- return n[p];
- });
- }
-
- this._fillContent(this.srcNodeRef);
- },
-
- _fillContent: function(/*DomNode*/ source){
- // summary:
- // Relocate source contents to templated container node.
- // this.containerNode must be able to receive children, or exceptions will be thrown.
- // tags:
- // protected
- var dest = this.containerNode;
- if(source && dest){
- while(source.hasChildNodes()){
- dest.appendChild(source.firstChild);
- }
- }
- },
-
- _attachTemplateNodes: function(rootNode, getAttrFunc){
- // summary:
- // Iterate through the template and attach functions and nodes accordingly.
- // description:
- // Map widget properties and functions to the handlers specified in
- // the dom node and it's descendants. This function iterates over all
- // nodes and looks for these properties:
- // * dojoAttachPoint
- // * dojoAttachEvent
- // * waiRole
- // * waiState
- // rootNode: DomNode|Array[Widgets]
- // the node to search for properties. All children will be searched.
- // getAttrFunc: Function?
- // a function which will be used to obtain property for a given
- // DomNode/Widget
- // tags:
- // private
-
- getAttrFunc = getAttrFunc || function(n,p){ return n.getAttribute(p); };
-
- var nodes = dojo.isArray(rootNode) ? rootNode : (rootNode.all || rootNode.getElementsByTagName("*"));
- var x = dojo.isArray(rootNode) ? 0 : -1;
- for(; x<nodes.length; x++){
- var baseNode = (x == -1) ? rootNode : nodes[x];
- if(this.widgetsInTemplate && getAttrFunc(baseNode, "dojoType")){
- continue;
- }
- // Process dojoAttachPoint
- var attachPoint = getAttrFunc(baseNode, "dojoAttachPoint");
- if(attachPoint){
- var point, points = attachPoint.split(/\s*,\s*/);
- while((point = points.shift())){
- if(dojo.isArray(this[point])){
- this[point].push(baseNode);
- }else{
- this[point]=baseNode;
- }
- this._attachPoints.push(point);
- }
- }
-
- // Process dojoAttachEvent
- var attachEvent = getAttrFunc(baseNode, "dojoAttachEvent");
- if(attachEvent){
- // NOTE: we want to support attributes that have the form
- // "domEvent: nativeEvent; ..."
- var event, events = attachEvent.split(/\s*,\s*/);
- var trim = dojo.trim;
- while((event = events.shift())){
- if(event){
- var thisFunc = null;
- if(event.indexOf(":") != -1){
- // oh, if only JS had tuple assignment
- var funcNameArr = event.split(":");
- event = trim(funcNameArr[0]);
- thisFunc = trim(funcNameArr[1]);
- }else{
- event = trim(event);
- }
- if(!thisFunc){
- thisFunc = event;
- }
- this.connect(baseNode, event, thisFunc);
- }
- }
- }
-
- // waiRole, waiState
- var role = getAttrFunc(baseNode, "waiRole");
- if(role){
- dijit.setWaiRole(baseNode, role);
- }
- var values = getAttrFunc(baseNode, "waiState");
- if(values){
- dojo.forEach(values.split(/\s*,\s*/), function(stateValue){
- if(stateValue.indexOf('-') != -1){
- var pair = stateValue.split('-');
- dijit.setWaiState(baseNode, pair[0], pair[1]);
- }
- });
- }
- }
- },
-
- startup: function(){
- dojo.forEach(this._startupWidgets, function(w){
- if(w && !w._started && w.startup){
- w.startup();
- }
- });
- this.inherited(arguments);
- },
-
- destroyRendering: function(){
- // Delete all attach points to prevent IE6 memory leaks.
- dojo.forEach(this._attachPoints, function(point){
- delete this[point];
- }, this);
- this._attachPoints = [];
-
- this.inherited(arguments);
- }
- }
-);
-
-// key is either templatePath or templateString; object is either string or DOM tree
-dijit._Templated._templateCache = {};
-
-dijit._Templated.getCachedTemplate = function(templatePath, templateString, alwaysUseString){
- // summary:
- // Static method to get a template based on the templatePath or
- // templateString key
- // templatePath: String||dojo.uri.Uri
- // The URL to get the template from.
- // templateString: String?
- // a string to use in lieu of fetching the template from a URL. Takes precedence
- // over templatePath
- // returns: Mixed
- // Either string (if there are ${} variables that need to be replaced) or just
- // a DOM tree (if the node can be cloned directly)
-
- // is it already cached?
- var tmplts = dijit._Templated._templateCache;
- var key = templateString || templatePath;
- var cached = tmplts[key];
- if(cached){
- try{
- // if the cached value is an innerHTML string (no ownerDocument) or a DOM tree created within the current document, then use the current cached value
- if(!cached.ownerDocument || cached.ownerDocument == dojo.doc){
- // string or node of the same document
- return cached;
- }
- }catch(e){ /* squelch */ } // IE can throw an exception if cached.ownerDocument was reloaded
- dojo.destroy(cached);
- }
-
- // If necessary, load template string from template path
- if(!templateString){
- templateString = dojo.cache(templatePath, {sanitize: true});
- }
- templateString = dojo.string.trim(templateString);
-
- if(alwaysUseString || templateString.match(/\$\{([^\}]+)\}/g)){
- // there are variables in the template so all we can do is cache the string
- return (tmplts[key] = templateString); //String
- }else{
- // there are no variables in the template so we can cache the DOM tree
- var node = dojo._toDom(templateString);
- if(node.nodeType != 1){
- throw new Error("Invalid template: " + templateString);
- }
- return (tmplts[key] = node); //Node
- }
-};
-
-if(dojo.isIE){
- dojo.addOnWindowUnload(function(){
- var cache = dijit._Templated._templateCache;
- for(var key in cache){
- var value = cache[key];
- if(typeof value == "object"){ // value is either a string or a DOM node template
- dojo.destroy(value);
- }
- delete cache[key];
- }
- });
-}
-
-// These arguments can be specified for widgets which are used in templates.
-// Since any widget can be specified as sub widgets in template, mix it
-// into the base widget class. (This is a hack, but it's effective.)
-dojo.extend(dijit._Widget,{
- dojoAttachEvent: "",
- dojoAttachPoint: "",
- waiRole: "",
- waiState:""
-});
-
-}
diff --git a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/_TimePicker.js b/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/_TimePicker.js
deleted file mode 100644
index cdaf5ad..0000000
--- a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/_TimePicker.js
+++ /dev/null
@@ -1,499 +0,0 @@
-/*
- Copyright (c) 2004-2009, The Dojo Foundation All Rights Reserved.
- Available via Academic Free License >= 2.1 OR the modified BSD license.
- see: http://dojotoolkit.org/license for details
-*/
-
-
-if(!dojo._hasResource["dijit._TimePicker"]){ //_hasResource checks added by build. Do not use _hasResource directly in your code.
-dojo._hasResource["dijit._TimePicker"] = true;
-dojo.provide("dijit._TimePicker");
-
-dojo.require("dijit.form._FormWidget");
-dojo.require("dojo.date.locale");
-
-/*=====
-dojo.declare(
- "dijit._TimePicker.__Constraints",
- dojo.date.locale.__FormatOptions,
- {
- // clickableIncrement: String
- // See `dijit._TimePicker.clickableIncrement`
- clickableIncrement: "T00:15:00",
-
- // visibleIncrement: String
- // See `dijit._TimePicker.visibleIncrement`
- visibleIncrement: "T01:00:00",
-
- // visibleRange: String
- // See `dijit._TimePicker.visibleRange`
- visibleRange: "T05:00:00"
- }
-);
-=====*/
-
-dojo.declare("dijit._TimePicker",
- [dijit._Widget, dijit._Templated],
- {
- // summary:
- // A graphical time picker.
- // This widget is used internally by other widgets and is not available
- // as a standalone widget due to lack of accessibility support.
-
- templateString: dojo.cache("dijit", "templates/TimePicker.html", "<div id=\"widget_${id}\" class=\"dijitMenu ${baseClass}\"\n ><div dojoAttachPoint=\"upArrow\" class=\"dijitButtonNode dijitUpArrowButton\" dojoAttachEvent=\"onmouseenter:_buttonMouse,onmouseleave:_buttonMouse\"\n\t\t><div class=\"dijitReset dijitInline dijitArrowButtonInner\" wairole=\"presentation\" role=\"presentation\"> </div\n\t\t><div class=\"dijitArrowButtonChar\">▲</div></div\n ><div dojoAttachPoint=\"timeMenu,focusNode\" dojoAttachEvent=\"onclick:_onOptionSelected,onmouseover,onmouseout\"></div\n ><div dojoAttachPoint=\"downArrow\" class=\"dijitButtonNode dijitDownArrowButton\" dojoAttachEvent=\"onmouseenter:_buttonMouse,onmouseleave:_buttonMouse\"\n\t\t><div class=\"dijitReset dijitInline dijitArrowButtonInner\" wairole=\"presentation\" role=\"presentation\"> </div\n\t\t><div class=\"dijitArrowButtonChar\">▼</div></div\n></div>\n"),
-
- // baseClass: [protected] String
- // The root className to use for the various states of this widget
- baseClass: "dijitTimePicker",
-
- // clickableIncrement: String
- // ISO-8601 string representing the amount by which
- // every clickable element in the time picker increases.
- // Set in local time, without a time zone.
- // Example: `T00:15:00` creates 15 minute increments
- // Must divide dijit._TimePicker.visibleIncrement evenly
- clickableIncrement: "T00:15:00",
-
- // visibleIncrement: String
- // ISO-8601 string representing the amount by which
- // every element with a visible time in the time picker increases.
- // Set in local time, without a time zone.
- // Example: `T01:00:00` creates text in every 1 hour increment
- visibleIncrement: "T01:00:00",
-
- // visibleRange: String
- // ISO-8601 string representing the range of this TimePicker.
- // The TimePicker will only display times in this range.
- // Example: `T05:00:00` displays 5 hours of options
- visibleRange: "T05:00:00",
-
- // value: String
- // Date to display.
- // Defaults to current time and date.
- // Can be a Date object or an ISO-8601 string.
- // If you specify the GMT time zone (`-01:00`),
- // the time will be converted to the local time in the local time zone.
- // Otherwise, the time is considered to be in the local time zone.
- // If you specify the date and isDate is true, the date is used.
- // Example: if your local time zone is `GMT -05:00`,
- // `T10:00:00` becomes `T10:00:00-05:00` (considered to be local time),
- // `T10:00:00-01:00` becomes `T06:00:00-05:00` (4 hour difference),
- // `T10:00:00Z` becomes `T05:00:00-05:00` (5 hour difference between Zulu and local time)
- // `yyyy-mm-ddThh:mm:ss` is the format to set the date and time
- // Example: `2007-06-01T09:00:00`
- value: new Date(),
-
- _visibleIncrement:2,
- _clickableIncrement:1,
- _totalIncrements:10,
-
- // constraints: dijit._TimePicker.__Constraints
- // Specifies valid range of times (start time, end time)
- constraints:{},
-
-/*=====
- serialize: function(val, options){
- // summary:
- // User overridable function used to convert the attr('value') result to a String
- // val: Date
- // The current value
- // options: Object?
- // tags:
- // protected
- },
-=====*/
- serialize: dojo.date.stamp.toISOString,
-
- // _filterString: string
- // The string to filter by
- _filterString: "",
-
- setValue: function(/*Date*/ value){
- // summary:
- // Deprecated. Used attr('value') instead.
- // tags:
- // deprecated
- dojo.deprecated("dijit._TimePicker:setValue() is deprecated. Use attr('value') instead.", "", "2.0");
- this.attr('value', value);
- },
- _setValueAttr: function(/*Date*/ date){
- // summary:
- // Hook so attr('value', ...) works.
- // description:
- // Set the value of the TimePicker.
- // Redraws the TimePicker around the new date.
- // tags:
- // protected
- this.value = date;
- this._showText();
- },
-
- onOpen: function(best){
- // summary:
- // This is called by the popup manager when a TimeTextBox is displayed on the screen
- // best:
- // Whether it is being displayed above or below the `dijit.form.TimeTextBox`
- // tags:
- // protected
- if(this._beenOpened && this.domNode.parentNode){
- // We've been opened before - so set our filter to to the
- // currently-displayed value (or empty string if it's already
- // valid)
- var p = dijit.byId(this.domNode.parentNode.dijitPopupParent);
- if(p){
- var val = p.attr('displayedValue');
- if(val && !p.parse(val, p.constraints)){
- this._filterString = val;
- }else{
- this._filterString = "";
- }
- this._showText();
- }
- }
- this._beenOpened = true;
- },
-
- isDisabledDate: function(/*Date*/ dateObject, /*String?*/ locale){
- // summary:
- // May be overridden to disable certain dates in the TimePicker e.g. `isDisabledDate=dojo.date.locale.isWeekend`
- // type:
- // extension
- return false; // Boolean
- },
-
- _getFilteredNodes: function(/*number*/ start, /*number*/ maxNum, /*Boolean*/ before){
- // summary:
- // Returns an array of nodes with the filter applied. At most maxNum nodes
- // will be returned - but fewer may be returned as well. If the
- // before parameter is set to true, then it will return the elements
- // before the given index
- // tags:
- // private
- var nodes = [], n, i = start, max = this._maxIncrement + Math.abs(i),
- chk = before?-1:1, dec = before?1:0, inc = before?0:1;
- do{
- i = i - dec;
- n = this._createOption(i);
- if(n){nodes.push(n);}
- i = i + inc;
- }while(nodes.length < maxNum && (i*chk) < max);
- if(before){ nodes.reverse(); }
- return nodes;
- },
-
- _showText: function(){
- // summary:
- // Displays the relevant choices in the drop down list
- // tags:
- // private
- this.timeMenu.innerHTML = "";
- var fromIso = dojo.date.stamp.fromISOString;
- this._clickableIncrementDate=fromIso(this.clickableIncrement);
- this._visibleIncrementDate=fromIso(this.visibleIncrement);
- this._visibleRangeDate=fromIso(this.visibleRange);
- // get the value of the increments and the range in seconds (since 00:00:00) to find out how many divs to create
- var sinceMidnight = function(/*Date*/ date){
- return date.getHours() * 60 * 60 + date.getMinutes() * 60 + date.getSeconds();
- };
-
- var clickableIncrementSeconds = sinceMidnight(this._clickableIncrementDate);
- var visibleIncrementSeconds = sinceMidnight(this._visibleIncrementDate);
- var visibleRangeSeconds = sinceMidnight(this._visibleRangeDate);
-
- // round reference date to previous visible increment
- var time = this.value.getTime();
- this._refDate = new Date(time - time % (visibleIncrementSeconds*1000));
- this._refDate.setFullYear(1970,0,1); // match parse defaults
-
- // assume clickable increment is the smallest unit
- this._clickableIncrement = 1;
- // divide the visible range by the clickable increment to get the number of divs to create
- // example: 10:00:00/00:15:00 -> display 40 divs
- this._totalIncrements = visibleRangeSeconds / clickableIncrementSeconds;
- // divide the visible increments by the clickable increments to get how often to display the time inline
- // example: 01:00:00/00:15:00 -> display the time every 4 divs
- this._visibleIncrement = visibleIncrementSeconds / clickableIncrementSeconds;
- // divide the number of seconds in a day by the clickable increment in seconds to get the
- // absolute max number of increments.
- this._maxIncrement = (60 * 60 * 24) / clickableIncrementSeconds;
-
- // find the nodes we should display based on our filter
- var before = this._getFilteredNodes(0, this._totalIncrements >> 1, true);
- var after = this._getFilteredNodes(0, this._totalIncrements >> 1, false);
- if(before.length < this._totalIncrements >> 1){
- before = before.slice(before.length / 2);
- after = after.slice(0, after.length / 2);
- }
- dojo.forEach(before.concat(after), function(n){this.timeMenu.appendChild(n);}, this);
-
- // TODO:
- // I commented this out because it
- // causes problems for a TimeTextBox in a Dialog, or as the editor of an InlineEditBox,
- // because the timeMenu node isn't visible yet. -- Bill (Bug #????)
- // dijit.focus(this.timeMenu);
- },
-
- postCreate: function(){
- // instantiate constraints
- if(this.constraints === dijit._TimePicker.prototype.constraints){
- this.constraints={};
- }
-
- // brings in visibleRange, increments, etc.
- dojo.mixin(this, this.constraints);
-
- // dojo.date.locale needs the lang in the constraints as locale
- if(!this.constraints.locale){
- this.constraints.locale=this.lang;
- }
-
- // assign typematic mouse listeners to the arrow buttons
- this.connect(this.timeMenu, dojo.isIE ? "onmousewheel" : 'DOMMouseScroll', "_mouseWheeled");
- var _this = this;
- var typematic = function(){
- _this._connects.push(
- dijit.typematic.addMouseListener.apply(null, arguments)
- );
- };
- typematic(this.upArrow,this,this._onArrowUp, 1.0, 50);
- typematic(this.downArrow,this,this._onArrowDown, 1.0, 50);
-
- // Connect some callback functions to the hover event of the arrows
- var triggerFx = function(cb){
- return function(cnt){
- // don't run on the first firing
- if(cnt > 0){cb.call(this, arguments);}
- };
- };
- var hoverFx = function(node, cb){
- return function(e){
- dojo.stopEvent(e);
- dijit.typematic.trigger(e, this, node, triggerFx(cb), node, 1.0, 50);
- };
- };
- this.connect(this.upArrow, "onmouseover", hoverFx(this.upArrow, this._onArrowUp));
- this.connect(this.downArrow, "onmouseover", hoverFx(this.downArrow, this._onArrowDown));
-
- this.inherited(arguments);
- },
-
- _buttonMouse: function(/*Event*/ e){
- // summary:
- // Handler for mouse button presses
- // tags:
- // private
- dojo.toggleClass(e.currentTarget, "dijitButtonNodeHover", e.type == "mouseover");
- },
-
- _createOption: function(/*Number*/ index){
- // summary:
- // Creates a clickable time option
- // tags:
- // private
- var date = new Date(this._refDate);
- var incrementDate = this._clickableIncrementDate;
- date.setHours(date.getHours() + incrementDate.getHours() * index,
- date.getMinutes() + incrementDate.getMinutes() * index,
- date.getSeconds() + incrementDate.getSeconds() * index);
- if(this.constraints.selector == "time"){
- date.setFullYear(1970,0,1); // make sure each time is for the same date
- }
- var dateString = dojo.date.locale.format(date, this.constraints);
- if(this._filterString && dateString.toLowerCase().indexOf(this._filterString) !== 0){
- // Doesn't match the filter - return null
- return null;
- }
-
- var div = dojo.create("div", {"class": this.baseClass+"Item"});
- div.date = date;
- div.index = index;
- dojo.create('div',{
- "class": this.baseClass + "ItemInner",
- innerHTML: dateString
- }, div);
-
- if(index%this._visibleIncrement<1 && index%this._visibleIncrement>-1){
- dojo.addClass(div, this.baseClass+"Marker");
- }else if(!(index%this._clickableIncrement)){
- dojo.addClass(div, this.baseClass+"Tick");
- }
-
- if(this.isDisabledDate(date)){
- // set disabled
- dojo.addClass(div, this.baseClass+"ItemDisabled");
- }
- if(!dojo.date.compare(this.value, date, this.constraints.selector)){
- div.selected = true;
- dojo.addClass(div, this.baseClass+"ItemSelected");
- if(dojo.hasClass(div, this.baseClass+"Marker")){
- dojo.addClass(div, this.baseClass+"MarkerSelected");
- }else{
- dojo.addClass(div, this.baseClass+"TickSelected");
- }
- }
- return div;
- },
-
- _onOptionSelected: function(/*Object*/ tgt){
- // summary:
- // Called when user clicks an option in the drop down list
- // tags:
- // private
- var tdate = tgt.target.date || tgt.target.parentNode.date;
- if(!tdate || this.isDisabledDate(tdate)){ return; }
- this._highlighted_option = null;
- this.attr('value', tdate);
- this.onValueSelected(tdate);
- },
-
- onValueSelected: function(/*Date*/ time){
- // summary:
- // Notification that a time was selected. It may be the same as the previous value.
- // description:
- // Used by `dijit.form._DateTimeTextBox` (and thus `dijit.form.TimeTextBox`)
- // to get notification when the user has clicked a time.
- // tags:
- // protected
- },
-
-
- _highlightOption: function(/*node*/ node, /*Boolean*/ highlight){
- // summary:
- // Turns on/off hover effect on a node based on mouse out/over event
- // tags:
- // private
- if(!node){return;}
- if(highlight){
- if(this._highlighted_option){
- this._highlightOption(this._highlighted_option, false);
- }
- this._highlighted_option = node;
- }else if(this._highlighted_option !== node){
- return;
- }else{
- this._highlighted_option = null;
- }
- dojo.toggleClass(node, this.baseClass+"ItemHover", highlight);
- if(dojo.hasClass(node, this.baseClass+"Marker")){
- dojo.toggleClass(node, this.baseClass+"MarkerHover", highlight);
- }else{
- dojo.toggleClass(node, this.baseClass+"TickHover", highlight);
- }
- },
-
- onmouseover: function(/*Event*/ e){
- // summary:
- // Handler for onmouseover event
- // tags:
- // private
- this._keyboardSelected = null;
- var tgr = (e.target.parentNode === this.timeMenu) ? e.target : e.target.parentNode;
- // if we aren't targeting an item, then we return
- if(!dojo.hasClass(tgr, this.baseClass+"Item")){return;}
- this._highlightOption(tgr, true);
- },
-
- onmouseout: function(/*Event*/ e){
- // summary:
- // Handler for onmouseout event
- // tags:
- // private
- this._keyboardSelected = null;
- var tgr = (e.target.parentNode === this.timeMenu) ? e.target : e.target.parentNode;
- this._highlightOption(tgr, false);
- },
-
- _mouseWheeled: function(/*Event*/ e){
- // summary:
- // Handle the mouse wheel events
- // tags:
- // private
- this._keyboardSelected = null;
- dojo.stopEvent(e);
- // we're not _measuring_ the scroll amount, just direction
- var scrollAmount = (dojo.isIE ? e.wheelDelta : -e.detail);
- this[(scrollAmount>0 ? "_onArrowUp" : "_onArrowDown")](); // yes, we're making a new dom node every time you mousewheel, or click
- },
-
- _onArrowUp: function(count){
- // summary:
- // Handler for up arrow key.
- // description:
- // Removes the bottom time and add one to the top
- // tags:
- // private
- if(typeof count == "number" && count == -1){ return; } // typematic end
- if(!this.timeMenu.childNodes.length){ return; }
- var index = this.timeMenu.childNodes[0].index;
- var divs = this._getFilteredNodes(index, 1, true);
- if(divs.length){
- this.timeMenu.removeChild(this.timeMenu.childNodes[this.timeMenu.childNodes.length - 1]);
- this.timeMenu.insertBefore(divs[0], this.timeMenu.childNodes[0]);
- }
- },
-
- _onArrowDown: function(count){
- // summary:
- // Handler for up arrow key.
- // description:
- // Remove the top time and add one to the bottom
- // tags:
- // private
- if(typeof count == "number" && count == -1){ return; } // typematic end
- if(!this.timeMenu.childNodes.length){ return; }
- var index = this.timeMenu.childNodes[this.timeMenu.childNodes.length - 1].index + 1;
- var divs = this._getFilteredNodes(index, 1, false);
- if(divs.length){
- this.timeMenu.removeChild(this.timeMenu.childNodes[0]);
- this.timeMenu.appendChild(divs[0]);
- }
- },
-
- handleKey: function(/*Event*/ e){
- // summary:
- // Called from `dijit.form._DateTimeTextBox` to pass a keypress event
- // from the `dijit.form.TimeTextBox` to be handled in this widget
- // tags:
- // protected
- var dk = dojo.keys;
- if(e.keyChar || e.charOrCode === dk.BACKSPACE || e.charOrCode == dk.DELETE){
- // Set a timeout to kick off our filter
- setTimeout(dojo.hitch(this, function(){
- this._filterString = e.target.value.toLowerCase();
- this._showText();
- }),1);
- }else if(e.charOrCode == dk.DOWN_ARROW || e.charOrCode == dk.UP_ARROW){
- dojo.stopEvent(e);
- // Figure out which option to highlight now and then highlight it
- if(this._highlighted_option && !this._highlighted_option.parentNode){
- this._highlighted_option = null;
- }
- var timeMenu = this.timeMenu,
- tgt = this._highlighted_option || dojo.query("." + this.baseClass + "ItemSelected", timeMenu)[0];
- if(!tgt){
- tgt = timeMenu.childNodes[0];
- }else if(timeMenu.childNodes.length){
- if(e.charOrCode == dk.DOWN_ARROW && !tgt.nextSibling){
- this._onArrowDown();
- }else if(e.charOrCode == dk.UP_ARROW && !tgt.previousSibling){
- this._onArrowUp();
- }
- if(e.charOrCode == dk.DOWN_ARROW){
- tgt = tgt.nextSibling;
- }else{
- tgt = tgt.previousSibling;
- }
- }
- this._highlightOption(tgt, true);
- this._keyboardSelected = tgt;
- }else if(this._highlighted_option && (e.charOrCode == dk.ENTER || e.charOrCode === dk.TAB)){
- // Accept the currently-highlighted option as the value
- if(!this._keyboardSelected && e.charOrCode === dk.TAB){ return; } // mouse hover followed by TAB is NO selection
- if(e.charOrCode == dk.ENTER){dojo.stopEvent(e);}
- this._onOptionSelected({target: this._highlighted_option});
- }
- }
- }
-);
-
-}
diff --git a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/_Widget.js b/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/_Widget.js
deleted file mode 100644
index 65248bf..0000000
--- a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/_Widget.js
+++ /dev/null
@@ -1,1142 +0,0 @@
-/*
- Copyright (c) 2004-2009, The Dojo Foundation All Rights Reserved.
- Available via Academic Free License >= 2.1 OR the modified BSD license.
- see: http://dojotoolkit.org/license for details
-*/
-
-
-if(!dojo._hasResource["dijit._Widget"]){ //_hasResource checks added by build. Do not use _hasResource directly in your code.
-dojo._hasResource["dijit._Widget"] = true;
-dojo.provide("dijit._Widget");
-
-dojo.require( "dijit._base" );
-
-
-// This code is to assist deferring dojo.connect() calls in widgets (connecting to events on the widgets'
-// DOM nodes) until someone actually needs to monitor that event.
-dojo.connect(dojo, "_connect",
- function(/*dijit._Widget*/ widget, /*String*/ event){
- if(widget && dojo.isFunction(widget._onConnect)){
- widget._onConnect(event);
- }
- });
-
-dijit._connectOnUseEventHandler = function(/*Event*/ event){};
-
-// Keep track of where the last keydown event was, to help avoid generating
-// spurious ondijitclick events when:
-// 1. focus is on a <button> or <a>
-// 2. user presses then releases the ENTER key
-// 3. onclick handler fires and shifts focus to another node, with an ondijitclick handler
-// 4. onkeyup event fires, causing the ondijitclick handler to fire
-dijit._lastKeyDownNode = null;
-if(dojo.isIE){
- (function(){
- var keydownCallback = function(evt){
- dijit._lastKeyDownNode = evt.srcElement;
- };
- dojo.doc.attachEvent('onkeydown', keydownCallback);
- dojo.addOnWindowUnload(function(){
- dojo.doc.detachEvent('onkeydown', keydownCallback);
- });
- })();
-}else{
- dojo.doc.addEventListener('keydown', function(evt){
- dijit._lastKeyDownNode = evt.target;
- }, true);
-}
-
-(function(){
-
-var _attrReg = {}, // cached results from getSetterAttributes
- getSetterAttributes = function(widget){
- // summary:
- // Returns list of attributes with custom setters for specified widget
- var dc = widget.declaredClass;
- if(!_attrReg[dc]){
- var r = [],
- attrs,
- proto = widget.constructor.prototype;
- for(var fxName in proto){
- if(dojo.isFunction(proto[fxName]) && (attrs = fxName.match(/^_set([a-zA-Z]*)Attr$/)) && attrs[1]){
- r.push(attrs[1].charAt(0).toLowerCase() + attrs[1].substr(1));
- }
- }
- _attrReg[dc] = r;
- }
- return _attrReg[dc] || []; // String[]
- };
-
-dojo.declare("dijit._Widget", null, {
- // summary:
- // Base class for all Dijit widgets.
-
- // id: [const] String
- // A unique, opaque ID string that can be assigned by users or by the
- // system. If the developer passes an ID which is known not to be
- // unique, the specified ID is ignored and the system-generated ID is
- // used instead.
- id: "",
-
- // lang: [const] String
- // Rarely used. Overrides the default Dojo locale used to render this widget,
- // as defined by the [HTML LANG](http://www.w3.org/TR/html401/struct/dirlang.html#adef-lang) attribute.
- // Value must be among the list of locales specified during by the Dojo bootstrap,
- // formatted according to [RFC 3066](http://www.ietf.org/rfc/rfc3066.txt) (like en-us).
- lang: "",
-
- // dir: [const] String
- // Unsupported by Dijit, but here for completeness. Dijit only supports setting text direction on the
- // entire document.
- // Bi-directional support, as defined by the [HTML DIR](http://www.w3.org/TR/html401/struct/dirlang.html#adef-dir)
- // attribute. Either left-to-right "ltr" or right-to-left "rtl".
- dir: "",
-
- // class: String
- // HTML class attribute
- "class": "",
-
- // style: String||Object
- // HTML style attributes as cssText string or name/value hash
- style: "",
-
- // title: String
- // HTML title attribute.
- //
- // For form widgets this specifies a tooltip to display when hovering over
- // the widget (just like the native HTML title attribute).
- //
- // For TitlePane or for when this widget is a child of a TabContainer, AccordionContainer,
- // etc., it's used to specify the tab label, accordion pane title, etc.
- title: "",
-
- // tooltip: String
- // When this widget's title attribute is used to for a tab label, accordion pane title, etc.,
- // this specifies the tooltip to appear when the mouse is hovered over that text.
- tooltip: "",
-
- // srcNodeRef: [readonly] DomNode
- // pointer to original DOM node
- srcNodeRef: null,
-
- // domNode: [readonly] DomNode
- // This is our visible representation of the widget! Other DOM
- // Nodes may by assigned to other properties, usually through the
- // template system's dojoAttachPoint syntax, but the domNode
- // property is the canonical "top level" node in widget UI.
- domNode: null,
-
- // containerNode: [readonly] DomNode
- // Designates where children of the source DOM node will be placed.
- // "Children" in this case refers to both DOM nodes and widgets.
- // For example, for myWidget:
- //
- // | <div dojoType=myWidget>
- // | <b> here's a plain DOM node
- // | <span dojoType=subWidget>and a widget</span>
- // | <i> and another plain DOM node </i>
- // | </div>
- //
- // containerNode would point to:
- //
- // | <b> here's a plain DOM node
- // | <span dojoType=subWidget>and a widget</span>
- // | <i> and another plain DOM node </i>
- //
- // In templated widgets, "containerNode" is set via a
- // dojoAttachPoint assignment.
- //
- // containerNode must be defined for any widget that accepts innerHTML
- // (like ContentPane or BorderContainer or even Button), and conversely
- // is null for widgets that don't, like TextBox.
- containerNode: null,
-
-/*=====
- // _started: Boolean
- // startup() has completed.
- _started: false,
-=====*/
-
- // attributeMap: [protected] Object
- // attributeMap sets up a "binding" between attributes (aka properties)
- // of the widget and the widget's DOM.
- // Changes to widget attributes listed in attributeMap will be
- // reflected into the DOM.
- //
- // For example, calling attr('title', 'hello')
- // on a TitlePane will automatically cause the TitlePane's DOM to update
- // with the new title.
- //
- // attributeMap is a hash where the key is an attribute of the widget,
- // and the value reflects a binding to a:
- //
- // - DOM node attribute
- // | focus: {node: "focusNode", type: "attribute"}
- // Maps this.focus to this.focusNode.focus
- //
- // - DOM node innerHTML
- // | title: { node: "titleNode", type: "innerHTML" }
- // Maps this.title to this.titleNode.innerHTML
- //
- // - DOM node innerText
- // | title: { node: "titleNode", type: "innerText" }
- // Maps this.title to this.titleNode.innerText
- //
- // - DOM node CSS class
- // | myClass: { node: "domNode", type: "class" }
- // Maps this.myClass to this.domNode.className
- //
- // If the value is an array, then each element in the array matches one of the
- // formats of the above list.
- //
- // There are also some shorthands for backwards compatibility:
- // - string --> { node: string, type: "attribute" }, for example:
- // | "focusNode" ---> { node: "focusNode", type: "attribute" }
- // - "" --> { node: "domNode", type: "attribute" }
- attributeMap: {id:"", dir:"", lang:"", "class":"", style:"", title:""},
-
- // _deferredConnects: [protected] Object
- // attributeMap addendum for event handlers that should be connected only on first use
- _deferredConnects: {
- onClick: "",
- onDblClick: "",
- onKeyDown: "",
- onKeyPress: "",
- onKeyUp: "",
- onMouseMove: "",
- onMouseDown: "",
- onMouseOut: "",
- onMouseOver: "",
- onMouseLeave: "",
- onMouseEnter: "",
- onMouseUp: ""
- },
-
- onClick: dijit._connectOnUseEventHandler,
- /*=====
- onClick: function(event){
- // summary:
- // Connect to this function to receive notifications of mouse click events.
- // event:
- // mouse Event
- // tags:
- // callback
- },
- =====*/
- onDblClick: dijit._connectOnUseEventHandler,
- /*=====
- onDblClick: function(event){
- // summary:
- // Connect to this function to receive notifications of mouse double click events.
- // event:
- // mouse Event
- // tags:
- // callback
- },
- =====*/
- onKeyDown: dijit._connectOnUseEventHandler,
- /*=====
- onKeyDown: function(event){
- // summary:
- // Connect to this function to receive notifications of keys being pressed down.
- // event:
- // key Event
- // tags:
- // callback
- },
- =====*/
- onKeyPress: dijit._connectOnUseEventHandler,
- /*=====
- onKeyPress: function(event){
- // summary:
- // Connect to this function to receive notifications of printable keys being typed.
- // event:
- // key Event
- // tags:
- // callback
- },
- =====*/
- onKeyUp: dijit._connectOnUseEventHandler,
- /*=====
- onKeyUp: function(event){
- // summary:
- // Connect to this function to receive notifications of keys being released.
- // event:
- // key Event
- // tags:
- // callback
- },
- =====*/
- onMouseDown: dijit._connectOnUseEventHandler,
- /*=====
- onMouseDown: function(event){
- // summary:
- // Connect to this function to receive notifications of when the mouse button is pressed down.
- // event:
- // mouse Event
- // tags:
- // callback
- },
- =====*/
- onMouseMove: dijit._connectOnUseEventHandler,
- /*=====
- onMouseMove: function(event){
- // summary:
- // Connect to this function to receive notifications of when the mouse moves over nodes contained within this widget.
- // event:
- // mouse Event
- // tags:
- // callback
- },
- =====*/
- onMouseOut: dijit._connectOnUseEventHandler,
- /*=====
- onMouseOut: function(event){
- // summary:
- // Connect to this function to receive notifications of when the mouse moves off of nodes contained within this widget.
- // event:
- // mouse Event
- // tags:
- // callback
- },
- =====*/
- onMouseOver: dijit._connectOnUseEventHandler,
- /*=====
- onMouseOver: function(event){
- // summary:
- // Connect to this function to receive notifications of when the mouse moves onto nodes contained within this widget.
- // event:
- // mouse Event
- // tags:
- // callback
- },
- =====*/
- onMouseLeave: dijit._connectOnUseEventHandler,
- /*=====
- onMouseLeave: function(event){
- // summary:
- // Connect to this function to receive notifications of when the mouse moves off of this widget.
- // event:
- // mouse Event
- // tags:
- // callback
- },
- =====*/
- onMouseEnter: dijit._connectOnUseEventHandler,
- /*=====
- onMouseEnter: function(event){
- // summary:
- // Connect to this function to receive notifications of when the mouse moves onto this widget.
- // event:
- // mouse Event
- // tags:
- // callback
- },
- =====*/
- onMouseUp: dijit._connectOnUseEventHandler,
- /*=====
- onMouseUp: function(event){
- // summary:
- // Connect to this function to receive notifications of when the mouse button is released.
- // event:
- // mouse Event
- // tags:
- // callback
- },
- =====*/
-
- // Constants used in templates
-
- // _blankGif: [protected] String
- // Path to a blank 1x1 image.
- // Used by <img> nodes in templates that really get their image via CSS background-image.
- _blankGif: (dojo.config.blankGif || dojo.moduleUrl("dojo", "resources/blank.gif")).toString(),
-
- //////////// INITIALIZATION METHODS ///////////////////////////////////////
-
- postscript: function(/*Object?*/params, /*DomNode|String*/srcNodeRef){
- // summary:
- // Kicks off widget instantiation. See create() for details.
- // tags:
- // private
- this.create(params, srcNodeRef);
- },
-
- create: function(/*Object?*/params, /*DomNode|String?*/srcNodeRef){
- // summary:
- // Kick off the life-cycle of a widget
- // params:
- // Hash of initialization parameters for widget, including
- // scalar values (like title, duration etc.) and functions,
- // typically callbacks like onClick.
- // srcNodeRef:
- // If a srcNodeRef (DOM node) is specified:
- // - use srcNodeRef.innerHTML as my contents
- // - if this is a behavioral widget then apply behavior
- // to that srcNodeRef
- // - otherwise, replace srcNodeRef with my generated DOM
- // tree
- // description:
- // Create calls a number of widget methods (postMixInProperties, buildRendering, postCreate,
- // etc.), some of which of you'll want to override. See http://docs.dojocampus.org/dijit/_Widget
- // for a discussion of the widget creation lifecycle.
- //
- // Of course, adventurous developers could override create entirely, but this should
- // only be done as a last resort.
- // tags:
- // private
-
- // store pointer to original DOM tree
- this.srcNodeRef = dojo.byId(srcNodeRef);
-
- // For garbage collection. An array of handles returned by Widget.connect()
- // Each handle returned from Widget.connect() is an array of handles from dojo.connect()
- this._connects = [];
-
- // For garbage collection. An array of handles returned by Widget.subscribe()
- // The handle returned from Widget.subscribe() is the handle returned from dojo.subscribe()
- this._subscribes = [];
-
- // To avoid double-connects, remove entries from _deferredConnects
- // that have been setup manually by a subclass (ex, by dojoAttachEvent).
- // If a subclass has redefined a callback (ex: onClick) then assume it's being
- // connected to manually.
- this._deferredConnects = dojo.clone(this._deferredConnects);
- for(var attr in this.attributeMap){
- delete this._deferredConnects[attr]; // can't be in both attributeMap and _deferredConnects
- }
- for(attr in this._deferredConnects){
- if(this[attr] !== dijit._connectOnUseEventHandler){
- delete this._deferredConnects[attr]; // redefined, probably dojoAttachEvent exists
- }
- }
-
- //mixin our passed parameters
- if(this.srcNodeRef && (typeof this.srcNodeRef.id == "string")){ this.id = this.srcNodeRef.id; }
- if(params){
- this.params = params;
- dojo.mixin(this,params);
- }
- this.postMixInProperties();
-
- // generate an id for the widget if one wasn't specified
- // (be sure to do this before buildRendering() because that function might
- // expect the id to be there.)
- if(!this.id){
- this.id = dijit.getUniqueId(this.declaredClass.replace(/\./g,"_"));
- }
- dijit.registry.add(this);
-
- this.buildRendering();
-
- if(this.domNode){
- // Copy attributes listed in attributeMap into the [newly created] DOM for the widget.
- this._applyAttributes();
-
- var source = this.srcNodeRef;
- if(source && source.parentNode){
- source.parentNode.replaceChild(this.domNode, source);
- }
-
- // If the developer has specified a handler as a widget parameter
- // (ex: new Button({onClick: ...})
- // then naturally need to connect from DOM node to that handler immediately,
- for(attr in this.params){
- this._onConnect(attr);
- }
- }
-
- if(this.domNode){
- this.domNode.setAttribute("widgetId", this.id);
- }
- this.postCreate();
-
- // If srcNodeRef has been processed and removed from the DOM (e.g. TemplatedWidget) then delete it to allow GC.
- if(this.srcNodeRef && !this.srcNodeRef.parentNode){
- delete this.srcNodeRef;
- }
-
- this._created = true;
- },
-
- _applyAttributes: function(){
- // summary:
- // Step during widget creation to copy all widget attributes to the
- // DOM as per attributeMap and _setXXXAttr functions.
- // description:
- // Skips over blank/false attribute values, unless they were explicitly specified
- // as parameters to the widget, since those are the default anyway,
- // and setting tabIndex="" is different than not setting tabIndex at all.
- //
- // It processes the attributes in the attribute map first, and then
- // it goes through and processes the attributes for the _setXXXAttr
- // functions that have been specified
- // tags:
- // private
- var condAttrApply = function(attr, scope){
- if((scope.params && attr in scope.params) || scope[attr]){
- scope.attr(attr, scope[attr]);
- }
- };
-
- // Do the attributes in attributeMap
- for(var attr in this.attributeMap){
- condAttrApply(attr, this);
- }
-
- // And also any attributes with custom setters
- dojo.forEach(getSetterAttributes(this), function(a){
- if(!(a in this.attributeMap)){
- condAttrApply(a, this);
- }
- }, this);
- },
-
- postMixInProperties: function(){
- // summary:
- // Called after the parameters to the widget have been read-in,
- // but before the widget template is instantiated. Especially
- // useful to set properties that are referenced in the widget
- // template.
- // tags:
- // protected
- },
-
- buildRendering: function(){
- // summary:
- // Construct the UI for this widget, setting this.domNode
- // description:
- // Most widgets will mixin `dijit._Templated`, which implements this
- // method.
- // tags:
- // protected
- this.domNode = this.srcNodeRef || dojo.create('div');
- },
-
- postCreate: function(){
- // summary:
- // Processing after the DOM fragment is created
- // description:
- // Called after the DOM fragment has been created, but not necessarily
- // added to the document. Do not include any operations which rely on
- // node dimensions or placement.
- // tags:
- // protected
- },
-
- startup: function(){
- // summary:
- // Processing after the DOM fragment is added to the document
- // description:
- // Called after a widget and its children have been created and added to the page,
- // and all related widgets have finished their create() cycle, up through postCreate().
- // This is useful for composite widgets that need to control or layout sub-widgets.
- // Many layout widgets can use this as a wiring phase.
- this._started = true;
- },
-
- //////////// DESTROY FUNCTIONS ////////////////////////////////
-
- destroyRecursive: function(/*Boolean?*/ preserveDom){
- // summary:
- // Destroy this widget and its descendants
- // description:
- // This is the generic "destructor" function that all widget users
- // should call to cleanly discard with a widget. Once a widget is
- // destroyed, it is removed from the manager object.
- // preserveDom:
- // If true, this method will leave the original DOM structure
- // alone of descendant Widgets. Note: This will NOT work with
- // dijit._Templated widgets.
-
- this._beingDestroyed = true;
- this.destroyDescendants(preserveDom);
- this.destroy(preserveDom);
- },
-
- destroy: function(/*Boolean*/ preserveDom){
- // summary:
- // Destroy this widget, but not its descendants.
- // This method will, however, destroy internal widgets such as those used within a template.
- // preserveDom: Boolean
- // If true, this method will leave the original DOM structure alone.
- // Note: This will not yet work with _Templated widgets
-
- this._beingDestroyed = true;
- this.uninitialize();
- var d = dojo,
- dfe = d.forEach,
- dun = d.unsubscribe;
- dfe(this._connects, function(array){
- dfe(array, d.disconnect);
- });
- dfe(this._subscribes, function(handle){
- dun(handle);
- });
-
- // destroy widgets created as part of template, etc.
- dfe(this._supportingWidgets || [], function(w){
- if(w.destroyRecursive){
- w.destroyRecursive();
- }else if(w.destroy){
- w.destroy();
- }
- });
-
- this.destroyRendering(preserveDom);
- dijit.registry.remove(this.id);
- this._destroyed = true;
- },
-
- destroyRendering: function(/*Boolean?*/ preserveDom){
- // summary:
- // Destroys the DOM nodes associated with this widget
- // preserveDom:
- // If true, this method will leave the original DOM structure alone
- // during tear-down. Note: this will not work with _Templated
- // widgets yet.
- // tags:
- // protected
-
- if(this.bgIframe){
- this.bgIframe.destroy(preserveDom);
- delete this.bgIframe;
- }
-
- if(this.domNode){
- if(preserveDom){
- dojo.removeAttr(this.domNode, "widgetId");
- }else{
- dojo.destroy(this.domNode);
- }
- delete this.domNode;
- }
-
- if(this.srcNodeRef){
- if(!preserveDom){
- dojo.destroy(this.srcNodeRef);
- }
- delete this.srcNodeRef;
- }
- },
-
- destroyDescendants: function(/*Boolean?*/ preserveDom){
- // summary:
- // Recursively destroy the children of this widget and their
- // descendants.
- // preserveDom:
- // If true, the preserveDom attribute is passed to all descendant
- // widget's .destroy() method. Not for use with _Templated
- // widgets.
-
- // get all direct descendants and destroy them recursively
- dojo.forEach(this.getChildren(), function(widget){
- if(widget.destroyRecursive){
- widget.destroyRecursive(preserveDom);
- }
- });
- },
-
-
- uninitialize: function(){
- // summary:
- // Stub function. Override to implement custom widget tear-down
- // behavior.
- // tags:
- // protected
- return false;
- },
-
- ////////////////// MISCELLANEOUS METHODS ///////////////////
-
- onFocus: function(){
- // summary:
- // Called when the widget becomes "active" because
- // it or a widget inside of it either has focus, or has recently
- // been clicked.
- // tags:
- // callback
- },
-
- onBlur: function(){
- // summary:
- // Called when the widget stops being "active" because
- // focus moved to something outside of it, or the user
- // clicked somewhere outside of it, or the widget was
- // hidden.
- // tags:
- // callback
- },
-
- _onFocus: function(e){
- // summary:
- // This is where widgets do processing for when they are active,
- // such as changing CSS classes. See onFocus() for more details.
- // tags:
- // protected
- this.onFocus();
- },
-
- _onBlur: function(){
- // summary:
- // This is where widgets do processing for when they stop being active,
- // such as changing CSS classes. See onBlur() for more details.
- // tags:
- // protected
- this.onBlur();
- },
-
- _onConnect: function(/*String*/ event){
- // summary:
- // Called when someone connects to one of my handlers.
- // "Turn on" that handler if it isn't active yet.
- //
- // This is also called for every single initialization parameter
- // so need to do nothing for parameters like "id".
- // tags:
- // private
- if(event in this._deferredConnects){
- var mapNode = this[this._deferredConnects[event] || 'domNode'];
- this.connect(mapNode, event.toLowerCase(), event);
- delete this._deferredConnects[event];
- }
- },
-
- _setClassAttr: function(/*String*/ value){
- // summary:
- // Custom setter for the CSS "class" attribute
- // tags:
- // protected
- var mapNode = this[this.attributeMap["class"] || 'domNode'];
- dojo.removeClass(mapNode, this["class"])
- this["class"] = value;
- dojo.addClass(mapNode, value);
- },
-
- _setStyleAttr: function(/*String||Object*/ value){
- // summary:
- // Sets the style attribut of the widget according to value,
- // which is either a hash like {height: "5px", width: "3px"}
- // or a plain string
- // description:
- // Determines which node to set the style on based on style setting
- // in attributeMap.
- // tags:
- // protected
-
- var mapNode = this[this.attributeMap.style || 'domNode'];
-
- // Note: technically we should revert any style setting made in a previous call
- // to his method, but that's difficult to keep track of.
-
- if(dojo.isObject(value)){
- dojo.style(mapNode, value);
- }else{
- if(mapNode.style.cssText){
- mapNode.style.cssText += "; " + value;
- }else{
- mapNode.style.cssText = value;
- }
- }
-
- this.style = value;
- },
-
- setAttribute: function(/*String*/ attr, /*anything*/ value){
- // summary:
- // Deprecated. Use attr() instead.
- // tags:
- // deprecated
- dojo.deprecated(this.declaredClass+"::setAttribute() is deprecated. Use attr() instead.", "", "2.0");
- this.attr(attr, value);
- },
-
- _attrToDom: function(/*String*/ attr, /*String*/ value){
- // summary:
- // Reflect a widget attribute (title, tabIndex, duration etc.) to
- // the widget DOM, as specified in attributeMap.
- //
- // description:
- // Also sets this["attr"] to the new value.
- // Note some attributes like "type"
- // cannot be processed this way as they are not mutable.
- //
- // tags:
- // private
-
- var commands = this.attributeMap[attr];
- dojo.forEach(dojo.isArray(commands) ? commands : [commands], function(command){
-
- // Get target node and what we are doing to that node
- var mapNode = this[command.node || command || "domNode"]; // DOM node
- var type = command.type || "attribute"; // class, innerHTML, innerText, or attribute
-
- switch(type){
- case "attribute":
- if(dojo.isFunction(value)){ // functions execute in the context of the widget
- value = dojo.hitch(this, value);
- }
-
- // Get the name of the DOM node attribute; usually it's the same
- // as the name of the attribute in the widget (attr), but can be overridden.
- // Also maps handler names to lowercase, like onSubmit --> onsubmit
- var attrName = command.attribute ? command.attribute :
- (/^on[A-Z][a-zA-Z]*$/.test(attr) ? attr.toLowerCase() : attr);
-
- dojo.attr(mapNode, attrName, value);
- break;
- case "innerText":
- mapNode.innerHTML = "";
- mapNode.appendChild(dojo.doc.createTextNode(value));
- break;
- case "innerHTML":
- mapNode.innerHTML = value;
- break;
- case "class":
- dojo.removeClass(mapNode, this[attr]);
- dojo.addClass(mapNode, value);
- break;
- }
- }, this);
- this[attr] = value;
- },
-
- attr: function(/*String|Object*/name, /*Object?*/value){
- // summary:
- // Set or get properties on a widget instance.
- // name:
- // The property to get or set. If an object is passed here and not
- // a string, its keys are used as names of attributes to be set
- // and the value of the object as values to set in the widget.
- // value:
- // Optional. If provided, attr() operates as a setter. If omitted,
- // the current value of the named property is returned.
- // description:
- // Get or set named properties on a widget. If no value is
- // provided, the current value of the attribute is returned,
- // potentially via a getter method. If a value is provided, then
- // the method acts as a setter, assigning the value to the name,
- // potentially calling any explicitly provided setters to handle
- // the operation. For instance, if the widget has properties "foo"
- // and "bar" and a method named "_setFooAttr", calling:
- // | myWidget.attr("foo", "Howdy!");
- // would be equivalent to calling:
- // | widget._setFooAttr("Howdy!");
- // while calling:
- // | myWidget.attr("bar", "Howdy!");
- // would be the same as writing:
- // | widget.bar = "Howdy!";
- // It also tries to copy the changes to the widget's DOM according
- // to settings in attributeMap (see description of `dijit._Widget.attributeMap`
- // for details)
- // For example, calling:
- // | myTitlePane.attr("title", "Howdy!");
- // will do
- // | myTitlePane.title = "Howdy!";
- // | myTitlePane.title.innerHTML = "Howdy!";
- // It works for DOM node attributes too. Calling
- // | widget.attr("disabled", true)
- // will set the disabled attribute on the widget's focusNode,
- // among other housekeeping for a change in disabled state.
-
- // open questions:
- // - how to handle build shortcut for attributes which want to map
- // into DOM attributes?
- // - what relationship should setAttribute()/attr() have to
- // layout() calls?
- var args = arguments.length;
- if(args == 1 && !dojo.isString(name)){
- for(var x in name){ this.attr(x, name[x]); }
- return this;
- }
- var names = this._getAttrNames(name);
- if(args >= 2){ // setter
- if(this[names.s]){
- // use the explicit setter
- args = dojo._toArray(arguments, 1);
- return this[names.s].apply(this, args) || this;
- }else{
- // if param is specified as DOM node attribute, copy it
- if(name in this.attributeMap){
- this._attrToDom(name, value);
- }
-
- // FIXME: what about function assignments? Any way to connect() here?
- this[name] = value;
- }
- return this;
- }else{ // getter
- return this[names.g] ? this[names.g]() : this[name];
- }
- },
-
- _attrPairNames: {}, // shared between all widgets
- _getAttrNames: function(name){
- // summary:
- // Helper function for Widget.attr().
- // Caches attribute name values so we don't do the string ops every time.
- // tags:
- // private
-
- var apn = this._attrPairNames;
- if(apn[name]){ return apn[name]; }
- var uc = name.charAt(0).toUpperCase() + name.substr(1);
- return (apn[name] = {
- n: name+"Node",
- s: "_set"+uc+"Attr",
- g: "_get"+uc+"Attr"
- });
- },
-
- toString: function(){
- // summary:
- // Returns a string that represents the widget
- // description:
- // When a widget is cast to a string, this method will be used to generate the
- // output. Currently, it does not implement any sort of reversible
- // serialization.
- return '[Widget ' + this.declaredClass + ', ' + (this.id || 'NO ID') + ']'; // String
- },
-
- getDescendants: function(){
- // summary:
- // Returns all the widgets contained by this, i.e., all widgets underneath this.containerNode.
- // This method should generally be avoided as it returns widgets declared in templates, which are
- // supposed to be internal/hidden, but it's left here for back-compat reasons.
-
- return this.containerNode ? dojo.query('[widgetId]', this.containerNode).map(dijit.byNode) : []; // dijit._Widget[]
- },
-
- getChildren: function(){
- // summary:
- // Returns all the widgets contained by this, i.e., all widgets underneath this.containerNode.
- // Does not return nested widgets, nor widgets that are part of this widget's template.
- return this.containerNode ? dijit.findWidgets(this.containerNode) : []; // dijit._Widget[]
- },
-
- // nodesWithKeyClick: [private] String[]
- // List of nodes that correctly handle click events via native browser support,
- // and don't need dijit's help
- nodesWithKeyClick: ["input", "button"],
-
- connect: function(
- /*Object|null*/ obj,
- /*String|Function*/ event,
- /*String|Function*/ method){
- // summary:
- // Connects specified obj/event to specified method of this object
- // and registers for disconnect() on widget destroy.
- // description:
- // Provide widget-specific analog to dojo.connect, except with the
- // implicit use of this widget as the target object.
- // This version of connect also provides a special "ondijitclick"
- // event which triggers on a click or space or enter keyup
- // returns:
- // A handle that can be passed to `disconnect` in order to disconnect before
- // the widget is destroyed.
- // example:
- // | var btn = new dijit.form.Button();
- // | // when foo.bar() is called, call the listener we're going to
- // | // provide in the scope of btn
- // | btn.connect(foo, "bar", function(){
- // | console.debug(this.toString());
- // | });
- // tags:
- // protected
-
- var d = dojo,
- dc = d._connect,
- handles = [];
- if(event == "ondijitclick"){
- // add key based click activation for unsupported nodes.
- // do all processing onkey up to prevent spurious clicks
- // for details see comments at top of this file where _lastKeyDownNode is defined
- if(!this.nodesWithKeyClick[obj.tagName.toLowerCase()]){
- var m = d.hitch(this, method);
- handles.push(
- dc(obj, "onkeydown", this, function(e){
- //console.log(this.id + ": onkeydown, e.target = ", e.target, ", lastKeyDownNode was ", dijit._lastKeyDownNode, ", equality is ", (e.target === dijit._lastKeyDownNode));
- if((e.keyCode == d.keys.ENTER || e.keyCode == d.keys.SPACE) &&
- !e.ctrlKey && !e.shiftKey && !e.altKey && !e.metaKey){
- // needed on IE for when focus changes between keydown and keyup - otherwise dropdown menus do not work
- dijit._lastKeyDownNode = e.target;
- d.stopEvent(e); // stop event to prevent scrolling on space key in IE
- }
- }),
- dc(obj, "onkeyup", this, function(e){
- //console.log(this.id + ": onkeyup, e.target = ", e.target, ", lastKeyDownNode was ", dijit._lastKeyDownNode, ", equality is ", (e.target === dijit._lastKeyDownNode));
- if( (e.keyCode == d.keys.ENTER || e.keyCode == d.keys.SPACE) &&
- e.target === dijit._lastKeyDownNode &&
- !e.ctrlKey && !e.shiftKey && !e.altKey && !e.metaKey){
- //need reset here or have problems in FF when focus returns to trigger element after closing popup/alert
- dijit._lastKeyDownNode = null;
- return m(e);
- }
- })
- );
- }
- event = "onclick";
- }
- handles.push(dc(obj, event, this, method));
-
- this._connects.push(handles);
- return handles; // _Widget.Handle
- },
-
- disconnect: function(/* _Widget.Handle */ handles){
- // summary:
- // Disconnects handle created by `connect`.
- // Also removes handle from this widget's list of connects.
- // tags:
- // protected
- for(var i=0; i<this._connects.length; i++){
- if(this._connects[i] == handles){
- dojo.forEach(handles, dojo.disconnect);
- this._connects.splice(i, 1);
- return;
- }
- }
- },
-
- subscribe: function(
- /*String*/ topic,
- /*String|Function*/ method){
- // summary:
- // Subscribes to the specified topic and calls the specified method
- // of this object and registers for unsubscribe() on widget destroy.
- // description:
- // Provide widget-specific analog to dojo.subscribe, except with the
- // implicit use of this widget as the target object.
- // example:
- // | var btn = new dijit.form.Button();
- // | // when /my/topic is published, this button changes its label to
- // | // be the parameter of the topic.
- // | btn.subscribe("/my/topic", function(v){
- // | this.attr("label", v);
- // | });
- var d = dojo,
- handle = d.subscribe(topic, this, method);
-
- // return handles for Any widget that may need them
- this._subscribes.push(handle);
- return handle;
- },
-
- unsubscribe: function(/*Object*/ handle){
- // summary:
- // Unsubscribes handle created by this.subscribe.
- // Also removes handle from this widget's list of subscriptions
- for(var i=0; i<this._subscribes.length; i++){
- if(this._subscribes[i] == handle){
- dojo.unsubscribe(handle);
- this._subscribes.splice(i, 1);
- return;
- }
- }
- },
-
- isLeftToRight: function(){
- // summary:
- // Checks the page for text direction
- // tags:
- // protected
- return dojo._isBodyLtr(); //Boolean
- },
-
- isFocusable: function(){
- // summary:
- // Return true if this widget can currently be focused
- // and false if not
- return this.focus && (dojo.style(this.domNode, "display") != "none");
- },
-
- placeAt: function(/* String|DomNode|_Widget */reference, /* String?|Int? */position){
- // summary:
- // Place this widget's domNode reference somewhere in the DOM based
- // on standard dojo.place conventions, or passing a Widget reference that
- // contains and addChild member.
- //
- // description:
- // A convenience function provided in all _Widgets, providing a simple
- // shorthand mechanism to put an existing (or newly created) Widget
- // somewhere in the dom, and allow chaining.
- //
- // reference:
- // The String id of a domNode, a domNode reference, or a reference to a Widget posessing
- // an addChild method.
- //
- // position:
- // If passed a string or domNode reference, the position argument
- // accepts a string just as dojo.place does, one of: "first", "last",
- // "before", or "after".
- //
- // If passed a _Widget reference, and that widget reference has an ".addChild" method,
- // it will be called passing this widget instance into that method, supplying the optional
- // position index passed.
- //
- // returns:
- // dijit._Widget
- // Provides a useful return of the newly created dijit._Widget instance so you
- // can "chain" this function by instantiating, placing, then saving the return value
- // to a variable.
- //
- // example:
- // | // create a Button with no srcNodeRef, and place it in the body:
- // | var button = new dijit.form.Button({ label:"click" }).placeAt(dojo.body());
- // | // now, 'button' is still the widget reference to the newly created button
- // | dojo.connect(button, "onClick", function(e){ console.log('click'); });
- //
- // example:
- // | // create a button out of a node with id="src" and append it to id="wrapper":
- // | var button = new dijit.form.Button({},"src").placeAt("wrapper");
- //
- // example:
- // | // place a new button as the first element of some div
- // | var button = new dijit.form.Button({ label:"click" }).placeAt("wrapper","first");
- //
- // example:
- // | // create a contentpane and add it to a TabContainer
- // | var tc = dijit.byId("myTabs");
- // | new dijit.layout.ContentPane({ href:"foo.html", title:"Wow!" }).placeAt(tc)
-
- if(reference.declaredClass && reference.addChild){
- reference.addChild(this, position);
- }else{
- dojo.place(this.domNode, reference, position);
- }
- return this;
- },
-
- _onShow: function(){
- // summary:
- // Internal method called when this widget is made visible.
- // See `onShow` for details.
- this.onShow();
- },
-
- onShow: function(){
- // summary:
- // Called when this widget becomes the selected pane in a
- // `dijit.layout.TabContainer`, `dijit.layout.StackContainer`,
- // `dijit.layout.AccordionContainer`, etc.
- //
- // Also called to indicate display of a `dijit.Dialog`, `dijit.TooltipDialog`, or `dijit.TitlePane`.
- // tags:
- // callback
- },
-
- onHide: function(){
- // summary:
- // Called when another widget becomes the selected pane in a
- // `dijit.layout.TabContainer`, `dijit.layout.StackContainer`,
- // `dijit.layout.AccordionContainer`, etc.
- //
- // Also called to indicate hide of a `dijit.Dialog`, `dijit.TooltipDialog`, or `dijit.TitlePane`.
- // tags:
- // callback
- }
-});
-
-})();
-
-}
diff --git a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/_base.js b/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/_base.js
deleted file mode 100644
index bb505eb..0000000
--- a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/_base.js
+++ /dev/null
@@ -1,22 +0,0 @@
-/*
- Copyright (c) 2004-2009, The Dojo Foundation All Rights Reserved.
- Available via Academic Free License >= 2.1 OR the modified BSD license.
- see: http://dojotoolkit.org/license for details
-*/
-
-
-if(!dojo._hasResource["dijit._base"]){ //_hasResource checks added by build. Do not use _hasResource directly in your code.
-dojo._hasResource["dijit._base"] = true;
-dojo.provide("dijit._base");
-
-dojo.require("dijit._base.focus");
-dojo.require("dijit._base.manager");
-dojo.require("dijit._base.place");
-dojo.require("dijit._base.popup");
-dojo.require("dijit._base.scroll");
-dojo.require("dijit._base.sniff");
-dojo.require("dijit._base.typematic");
-dojo.require("dijit._base.wai");
-dojo.require("dijit._base.window");
-
-}
diff --git a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/_base/focus.js b/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/_base/focus.js
deleted file mode 100644
index 6e327ea..0000000
--- a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/_base/focus.js
+++ /dev/null
@@ -1,519 +0,0 @@
-/*
- Copyright (c) 2004-2009, The Dojo Foundation All Rights Reserved.
- Available via Academic Free License >= 2.1 OR the modified BSD license.
- see: http://dojotoolkit.org/license for details
-*/
-
-
-if(!dojo._hasResource["dijit._base.focus"]){ //_hasResource checks added by build. Do not use _hasResource directly in your code.
-dojo._hasResource["dijit._base.focus"] = true;
-dojo.provide("dijit._base.focus");
-
-dojo.require("dijit._base.manager"); // for dijit.isTabNavigable()
-
-// summary:
-// These functions are used to query or set the focus and selection.
-//
-// Also, they trace when widgets become activated/deactivated,
-// so that the widget can fire _onFocus/_onBlur events.
-// "Active" here means something similar to "focused", but
-// "focus" isn't quite the right word because we keep track of
-// a whole stack of "active" widgets. Example: ComboButton --> Menu -->
-// MenuItem. The onBlur event for ComboButton doesn't fire due to focusing
-// on the Menu or a MenuItem, since they are considered part of the
-// ComboButton widget. It only happens when focus is shifted
-// somewhere completely different.
-
-dojo.mixin(dijit, {
- // _curFocus: DomNode
- // Currently focused item on screen
- _curFocus: null,
-
- // _prevFocus: DomNode
- // Previously focused item on screen
- _prevFocus: null,
-
- isCollapsed: function(){
- // summary:
- // Returns true if there is no text selected
- return dijit.getBookmark().isCollapsed;
- },
-
- getBookmark: function(){
- // summary:
- // Retrieves a bookmark that can be used with moveToBookmark to return to the same range
- var bm, rg, tg, sel = dojo.doc.selection, cf = dijit._curFocus;
-
- if(dojo.global.getSelection){
- //W3C Range API for selections.
- sel = dojo.global.getSelection();
- if(sel){
- if(sel.isCollapsed){
- tg = cf? cf.tagName : "";
- if(tg){
- //Create a fake rangelike item to restore selections.
- tg = tg.toLowerCase();
- if(tg == "textarea" ||
- (tg == "input" && (!cf.type || cf.type.toLowerCase() == "text"))){
- sel = {
- start: cf.selectionStart,
- end: cf.selectionEnd,
- node: cf,
- pRange: true
- };
- return {isCollapsed: (sel.end <= sel.start), mark: sel}; //Object.
- }
- }
- bm = {isCollapsed:true};
- }else{
- rg = sel.getRangeAt(0);
- bm = {isCollapsed: false, mark: rg.cloneRange()};
- }
- }
- }else if(sel){
- // If the current focus was a input of some sort and no selection, don't bother saving
- // a native bookmark. This is because it causes issues with dialog/page selection restore.
- // So, we need to create psuedo bookmarks to work with.
- tg = cf ? cf.tagName : "";
- tg = tg.toLowerCase();
- if(cf && tg && (tg == "button" || tg == "textarea" || tg == "input")){
- if(sel.type && sel.type.toLowerCase() == "none"){
- return {
- isCollapsed: true,
- mark: null
- }
- }else{
- rg = sel.createRange();
- return {
- isCollapsed: rg.text && rg.text.length?false:true,
- mark: {
- range: rg,
- pRange: true
- }
- };
- }
- }
- bm = {};
-
- //'IE' way for selections.
- try{
- // createRange() throws exception when dojo in iframe
- //and nothing selected, see #9632
- rg = sel.createRange();
- bm.isCollapsed = !(sel.type == 'Text' ? rg.htmlText.length : rg.length);
- }catch(e){
- bm.isCollapsed = true;
- return bm;
- }
- if(sel.type.toUpperCase() == 'CONTROL'){
- if(rg.length){
- bm.mark=[];
- var i=0,len=rg.length;
- while(i<len){
- bm.mark.push(rg.item(i++));
- }
- }else{
- bm.isCollapsed = true;
- bm.mark = null;
- }
- }else{
- bm.mark = rg.getBookmark();
- }
- }else{
- console.warn("No idea how to store the current selection for this browser!");
- }
- return bm; // Object
- },
-
- moveToBookmark: function(/*Object*/bookmark){
- // summary:
- // Moves current selection to a bookmark
- // bookmark:
- // This should be a returned object from dijit.getBookmark()
-
- var _doc = dojo.doc,
- mark = bookmark.mark;
- if(mark){
- if(dojo.global.getSelection){
- //W3C Rangi API (FF, WebKit, Opera, etc)
- var sel = dojo.global.getSelection();
- if(sel && sel.removeAllRanges){
- if(mark.pRange){
- var r = mark;
- var n = r.node;
- n.selectionStart = r.start;
- n.selectionEnd = r.end;
- }else{
- sel.removeAllRanges();
- sel.addRange(mark);
- }
- }else{
- console.warn("No idea how to restore selection for this browser!");
- }
- }else if(_doc.selection && mark){
- //'IE' way.
- var rg;
- if(mark.pRange){
- rg = mark.range;
- }else if(dojo.isArray(mark)){
- rg = _doc.body.createControlRange();
- //rg.addElement does not have call/apply method, so can not call it directly
- //rg is not available in "range.addElement(item)", so can't use that either
- dojo.forEach(mark, function(n){
- rg.addElement(n);
- });
- }else{
- rg = _doc.body.createTextRange();
- rg.moveToBookmark(mark);
- }
- rg.select();
- }
- }
- },
-
- getFocus: function(/*Widget?*/ menu, /*Window?*/ openedForWindow){
- // summary:
- // Called as getFocus(), this returns an Object showing the current focus
- // and selected text.
- //
- // Called as getFocus(widget), where widget is a (widget representing) a button
- // that was just pressed, it returns where focus was before that button
- // was pressed. (Pressing the button may have either shifted focus to the button,
- // or removed focus altogether.) In this case the selected text is not returned,
- // since it can't be accurately determined.
- //
- // menu: dijit._Widget or {domNode: DomNode} structure
- // The button that was just pressed. If focus has disappeared or moved
- // to this button, returns the previous focus. In this case the bookmark
- // information is already lost, and null is returned.
- //
- // openedForWindow:
- // iframe in which menu was opened
- //
- // returns:
- // A handle to restore focus/selection, to be passed to `dijit.focus`
- var node = !dijit._curFocus || (menu && dojo.isDescendant(dijit._curFocus, menu.domNode)) ? dijit._prevFocus : dijit._curFocus;
- return {
- node: node,
- bookmark: (node == dijit._curFocus) && dojo.withGlobal(openedForWindow || dojo.global, dijit.getBookmark),
- openedForWindow: openedForWindow
- }; // Object
- },
-
- focus: function(/*Object || DomNode */ handle){
- // summary:
- // Sets the focused node and the selection according to argument.
- // To set focus to an iframe's content, pass in the iframe itself.
- // handle:
- // object returned by get(), or a DomNode
-
- if(!handle){ return; }
-
- var node = "node" in handle ? handle.node : handle, // because handle is either DomNode or a composite object
- bookmark = handle.bookmark,
- openedForWindow = handle.openedForWindow,
- collapsed = bookmark ? bookmark.isCollapsed : false;
-
- // Set the focus
- // Note that for iframe's we need to use the <iframe> to follow the parentNode chain,
- // but we need to set focus to iframe.contentWindow
- if(node){
- var focusNode = (node.tagName.toLowerCase() == "iframe") ? node.contentWindow : node;
- if(focusNode && focusNode.focus){
- try{
- // Gecko throws sometimes if setting focus is impossible,
- // node not displayed or something like that
- focusNode.focus();
- }catch(e){/*quiet*/}
- }
- dijit._onFocusNode(node);
- }
-
- // set the selection
- // do not need to restore if current selection is not empty
- // (use keyboard to select a menu item) or if previous selection was collapsed
- // as it may cause focus shift (Esp in IE).
- if(bookmark && dojo.withGlobal(openedForWindow || dojo.global, dijit.isCollapsed) && !collapsed){
- if(openedForWindow){
- openedForWindow.focus();
- }
- try{
- dojo.withGlobal(openedForWindow || dojo.global, dijit.moveToBookmark, null, [bookmark]);
- }catch(e2){
- /*squelch IE internal error, see http://trac.dojotoolkit.org/ticket/1984 */
- }
- }
- },
-
- // _activeStack: dijit._Widget[]
- // List of currently active widgets (focused widget and it's ancestors)
- _activeStack: [],
-
- registerIframe: function(/*DomNode*/ iframe){
- // summary:
- // Registers listeners on the specified iframe so that any click
- // or focus event on that iframe (or anything in it) is reported
- // as a focus/click event on the <iframe> itself.
- // description:
- // Currently only used by editor.
- // returns:
- // Handle to pass to unregisterIframe()
- return dijit.registerWin(iframe.contentWindow, iframe);
- },
-
- unregisterIframe: function(/*Object*/ handle){
- // summary:
- // Unregisters listeners on the specified iframe created by registerIframe.
- // After calling be sure to delete or null out the handle itself.
- // handle:
- // Handle returned by registerIframe()
-
- dijit.unregisterWin(handle);
- },
-
- registerWin: function(/*Window?*/targetWindow, /*DomNode?*/ effectiveNode){
- // summary:
- // Registers listeners on the specified window (either the main
- // window or an iframe's window) to detect when the user has clicked somewhere
- // or focused somewhere.
- // description:
- // Users should call registerIframe() instead of this method.
- // targetWindow:
- // If specified this is the window associated with the iframe,
- // i.e. iframe.contentWindow.
- // effectiveNode:
- // If specified, report any focus events inside targetWindow as
- // an event on effectiveNode, rather than on evt.target.
- // returns:
- // Handle to pass to unregisterWin()
-
- // TODO: make this function private in 2.0; Editor/users should call registerIframe(),
-
- var mousedownListener = function(evt){
- dijit._justMouseDowned = true;
- setTimeout(function(){ dijit._justMouseDowned = false; }, 0);
- dijit._onTouchNode(effectiveNode || evt.target || evt.srcElement, "mouse");
- };
- //dojo.connect(targetWindow, "onscroll", ???);
-
- // Listen for blur and focus events on targetWindow's document.
- // IIRC, I'm using attachEvent() rather than dojo.connect() because focus/blur events don't bubble
- // through dojo.connect(), and also maybe to catch the focus events early, before onfocus handlers
- // fire.
- // Connect to <html> (rather than document) on IE to avoid memory leaks, but document on other browsers because
- // (at least for FF) the focus event doesn't fire on <html> or <body>.
- var doc = dojo.isIE ? targetWindow.document.documentElement : targetWindow.document;
- if(doc){
- if(dojo.isIE){
- doc.attachEvent('onmousedown', mousedownListener);
- var activateListener = function(evt){
- // IE reports that nodes like <body> have gotten focus, even though they have tabIndex=-1,
- // Should consider those more like a mouse-click than a focus....
- if(evt.srcElement.tagName.toLowerCase() != "#document" &&
- dijit.isTabNavigable(evt.srcElement)){
- dijit._onFocusNode(effectiveNode || evt.srcElement);
- }else{
- dijit._onTouchNode(effectiveNode || evt.srcElement);
- }
- };
- doc.attachEvent('onactivate', activateListener);
- var deactivateListener = function(evt){
- dijit._onBlurNode(effectiveNode || evt.srcElement);
- };
- doc.attachEvent('ondeactivate', deactivateListener);
-
- return function(){
- doc.detachEvent('onmousedown', mousedownListener);
- doc.detachEvent('onactivate', activateListener);
- doc.detachEvent('ondeactivate', deactivateListener);
- doc = null; // prevent memory leak (apparent circular reference via closure)
- };
- }else{
- doc.addEventListener('mousedown', mousedownListener, true);
- var focusListener = function(evt){
- dijit._onFocusNode(effectiveNode || evt.target);
- };
- doc.addEventListener('focus', focusListener, true);
- var blurListener = function(evt){
- dijit._onBlurNode(effectiveNode || evt.target);
- };
- doc.addEventListener('blur', blurListener, true);
-
- return function(){
- doc.removeEventListener('mousedown', mousedownListener, true);
- doc.removeEventListener('focus', focusListener, true);
- doc.removeEventListener('blur', blurListener, true);
- doc = null; // prevent memory leak (apparent circular reference via closure)
- };
- }
- }
- },
-
- unregisterWin: function(/*Handle*/ handle){
- // summary:
- // Unregisters listeners on the specified window (either the main
- // window or an iframe's window) according to handle returned from registerWin().
- // After calling be sure to delete or null out the handle itself.
-
- // Currently our handle is actually a function
- handle && handle();
- },
-
- _onBlurNode: function(/*DomNode*/ node){
- // summary:
- // Called when focus leaves a node.
- // Usually ignored, _unless_ it *isn't* follwed by touching another node,
- // which indicates that we tabbed off the last field on the page,
- // in which case every widget is marked inactive
- dijit._prevFocus = dijit._curFocus;
- dijit._curFocus = null;
-
- if(dijit._justMouseDowned){
- // the mouse down caused a new widget to be marked as active; this blur event
- // is coming late, so ignore it.
- return;
- }
-
- // if the blur event isn't followed by a focus event then mark all widgets as inactive.
- if(dijit._clearActiveWidgetsTimer){
- clearTimeout(dijit._clearActiveWidgetsTimer);
- }
- dijit._clearActiveWidgetsTimer = setTimeout(function(){
- delete dijit._clearActiveWidgetsTimer;
- dijit._setStack([]);
- dijit._prevFocus = null;
- }, 100);
- },
-
- _onTouchNode: function(/*DomNode*/ node, /*String*/ by){
- // summary:
- // Callback when node is focused or mouse-downed
- // node:
- // The node that was touched.
- // by:
- // "mouse" if the focus/touch was caused by a mouse down event
-
- // ignore the recent blurNode event
- if(dijit._clearActiveWidgetsTimer){
- clearTimeout(dijit._clearActiveWidgetsTimer);
- delete dijit._clearActiveWidgetsTimer;
- }
-
- // compute stack of active widgets (ex: ComboButton --> Menu --> MenuItem)
- var newStack=[];
- try{
- while(node){
- var popupParent = dojo.attr(node, "dijitPopupParent");
- if(popupParent){
- node=dijit.byId(popupParent).domNode;
- }else if(node.tagName && node.tagName.toLowerCase() == "body"){
- // is this the root of the document or just the root of an iframe?
- if(node === dojo.body()){
- // node is the root of the main document
- break;
- }
- // otherwise, find the iframe this node refers to (can't access it via parentNode,
- // need to do this trick instead). window.frameElement is supported in IE/FF/Webkit
- node=dijit.getDocumentWindow(node.ownerDocument).frameElement;
- }else{
- var id = node.getAttribute && node.getAttribute("widgetId");
- if(id){
- newStack.unshift(id);
- }
- node=node.parentNode;
- }
- }
- }catch(e){ /* squelch */ }
-
- dijit._setStack(newStack, by);
- },
-
- _onFocusNode: function(/*DomNode*/ node){
- // summary:
- // Callback when node is focused
-
- if(!node){
- return;
- }
-
- if(node.nodeType == 9){
- // Ignore focus events on the document itself. This is here so that
- // (for example) clicking the up/down arrows of a spinner
- // (which don't get focus) won't cause that widget to blur. (FF issue)
- return;
- }
-
- dijit._onTouchNode(node);
-
- if(node == dijit._curFocus){ return; }
- if(dijit._curFocus){
- dijit._prevFocus = dijit._curFocus;
- }
- dijit._curFocus = node;
- dojo.publish("focusNode", [node]);
- },
-
- _setStack: function(/*String[]*/ newStack, /*String*/ by){
- // summary:
- // The stack of active widgets has changed. Send out appropriate events and records new stack.
- // newStack:
- // array of widget id's, starting from the top (outermost) widget
- // by:
- // "mouse" if the focus/touch was caused by a mouse down event
-
- var oldStack = dijit._activeStack;
- dijit._activeStack = newStack;
-
- // compare old stack to new stack to see how many elements they have in common
- for(var nCommon=0; nCommon<Math.min(oldStack.length, newStack.length); nCommon++){
- if(oldStack[nCommon] != newStack[nCommon]){
- break;
- }
- }
-
- var widget;
- // for all elements that have gone out of focus, send blur event
- for(var i=oldStack.length-1; i>=nCommon; i--){
- widget = dijit.byId(oldStack[i]);
- if(widget){
- widget._focused = false;
- widget._hasBeenBlurred = true;
- if(widget._onBlur){
- widget._onBlur(by);
- }
- if(widget._setStateClass){
- widget._setStateClass();
- }
- dojo.publish("widgetBlur", [widget, by]);
- }
- }
-
- // for all element that have come into focus, send focus event
- for(i=nCommon; i<newStack.length; i++){
- widget = dijit.byId(newStack[i]);
- if(widget){
- widget._focused = true;
- if(widget._onFocus){
- widget._onFocus(by);
- }
- if(widget._setStateClass){
- widget._setStateClass();
- }
- dojo.publish("widgetFocus", [widget, by]);
- }
- }
- }
-});
-
-// register top window and all the iframes it contains
-dojo.addOnLoad(function(){
- var handle = dijit.registerWin(window);
- if(dojo.isIE){
- dojo.addOnWindowUnload(function(){
- dijit.unregisterWin(handle);
- handle = null;
- })
- }
-});
-
-}
diff --git a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/_base/manager.js b/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/_base/manager.js
deleted file mode 100644
index b83a5a8..0000000
--- a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/_base/manager.js
+++ /dev/null
@@ -1,452 +0,0 @@
-/*
- Copyright (c) 2004-2009, The Dojo Foundation All Rights Reserved.
- Available via Academic Free License >= 2.1 OR the modified BSD license.
- see: http://dojotoolkit.org/license for details
-*/
-
-
-if(!dojo._hasResource["dijit._base.manager"]){ //_hasResource checks added by build. Do not use _hasResource directly in your code.
-dojo._hasResource["dijit._base.manager"] = true;
-dojo.provide("dijit._base.manager");
-
-dojo.declare("dijit.WidgetSet", null, {
- // summary:
- // A set of widgets indexed by id. A default instance of this class is
- // available as `dijit.registry`
- //
- // example:
- // Create a small list of widgets:
- // | var ws = new dijit.WidgetSet();
- // | ws.add(dijit.byId("one"));
- // | ws.add(dijit.byId("two"));
- // | // destroy both:
- // | ws.forEach(function(w){ w.destroy(); });
- //
- // example:
- // Using dijit.registry:
- // | dijit.registry.forEach(function(w){ /* do something */ });
-
- constructor: function(){
- this._hash = {};
- this.length = 0;
- },
-
- add: function(/*dijit._Widget*/ widget){
- // summary:
- // Add a widget to this list. If a duplicate ID is detected, a error is thrown.
- //
- // widget: dijit._Widget
- // Any dijit._Widget subclass.
- if(this._hash[widget.id]){
- throw new Error("Tried to register widget with id==" + widget.id + " but that id is already registered");
- }
- this._hash[widget.id] = widget;
- this.length++;
- },
-
- remove: function(/*String*/ id){
- // summary:
- // Remove a widget from this WidgetSet. Does not destroy the widget; simply
- // removes the reference.
- if(this._hash[id]){
- delete this._hash[id];
- this.length--;
- }
- },
-
- forEach: function(/*Function*/ func, /* Object? */thisObj){
- // summary:
- // Call specified function for each widget in this set.
- //
- // func:
- // A callback function to run for each item. Is passed the widget, the index
- // in the iteration, and the full hash, similar to `dojo.forEach`.
- //
- // thisObj:
- // An optional scope parameter
- //
- // example:
- // Using the default `dijit.registry` instance:
- // | dijit.registry.forEach(function(widget){
- // | console.log(widget.declaredClass);
- // | });
- //
- // returns:
- // Returns self, in order to allow for further chaining.
-
- thisObj = thisObj || dojo.global;
- var i = 0, id;
- for(id in this._hash){
- func.call(thisObj, this._hash[id], i++, this._hash);
- }
- return this; // dijit.WidgetSet
- },
-
- filter: function(/*Function*/ filter, /* Object? */thisObj){
- // summary:
- // Filter down this WidgetSet to a smaller new WidgetSet
- // Works the same as `dojo.filter` and `dojo.NodeList.filter`
- //
- // filter:
- // Callback function to test truthiness. Is passed the widget
- // reference and the pseudo-index in the object.
- //
- // thisObj: Object?
- // Option scope to use for the filter function.
- //
- // example:
- // Arbitrary: select the odd widgets in this list
- // | dijit.registry.filter(function(w, i){
- // | return i % 2 == 0;
- // | }).forEach(function(w){ /* odd ones */ });
-
- thisObj = thisObj || dojo.global;
- var res = new dijit.WidgetSet(), i = 0, id;
- for(id in this._hash){
- var w = this._hash[id];
- if(filter.call(thisObj, w, i++, this._hash)){
- res.add(w);
- }
- }
- return res; // dijit.WidgetSet
- },
-
- byId: function(/*String*/ id){
- // summary:
- // Find a widget in this list by it's id.
- // example:
- // Test if an id is in a particular WidgetSet
- // | var ws = new dijit.WidgetSet();
- // | ws.add(dijit.byId("bar"));
- // | var t = ws.byId("bar") // returns a widget
- // | var x = ws.byId("foo"); // returns undefined
-
- return this._hash[id]; // dijit._Widget
- },
-
- byClass: function(/*String*/ cls){
- // summary:
- // Reduce this widgetset to a new WidgetSet of a particular `declaredClass`
- //
- // cls: String
- // The Class to scan for. Full dot-notated string.
- //
- // example:
- // Find all `dijit.TitlePane`s in a page:
- // | dijit.registry.byClass("dijit.TitlePane").forEach(function(tp){ tp.close(); });
-
- var res = new dijit.WidgetSet(), id, widget;
- for(id in this._hash){
- widget = this._hash[id];
- if(widget.declaredClass == cls){
- res.add(widget);
- }
- }
- return res; // dijit.WidgetSet
-},
-
- toArray: function(){
- // summary:
- // Convert this WidgetSet into a true Array
- //
- // example:
- // Work with the widget .domNodes in a real Array
- // | dojo.map(dijit.registry.toArray(), function(w){ return w.domNode; });
-
- var ar = [];
- for(var id in this._hash){
- ar.push(this._hash[id]);
- }
- return ar; // dijit._Widget[]
-},
-
- map: function(/* Function */func, /* Object? */thisObj){
- // summary:
- // Create a new Array from this WidgetSet, following the same rules as `dojo.map`
- // example:
- // | var nodes = dijit.registry.map(function(w){ return w.domNode; });
- //
- // returns:
- // A new array of the returned values.
- return dojo.map(this.toArray(), func, thisObj); // Array
- },
-
- every: function(func, thisObj){
- // summary:
- // A synthetic clone of `dojo.every` acting explictly on this WidgetSet
- //
- // func: Function
- // A callback function run for every widget in this list. Exits loop
- // when the first false return is encountered.
- //
- // thisObj: Object?
- // Optional scope parameter to use for the callback
-
- thisObj = thisObj || dojo.global;
- var x = 0, i;
- for(i in this._hash){
- if(!func.call(thisObj, this._hash[i], x++, this._hash)){
- return false; // Boolean
- }
- }
- return true; // Boolean
- },
-
- some: function(func, thisObj){
- // summary:
- // A synthetic clone of `dojo.some` acting explictly on this WidgetSet
- //
- // func: Function
- // A callback function run for every widget in this list. Exits loop
- // when the first true return is encountered.
- //
- // thisObj: Object?
- // Optional scope parameter to use for the callback
-
- thisObj = thisObj || dojo.global;
- var x = 0, i;
- for(i in this._hash){
- if(func.call(thisObj, this._hash[i], x++, this._hash)){
- return true; // Boolean
- }
- }
- return false; // Boolean
- }
-
-});
-
-/*=====
-dijit.registry = {
- // summary:
- // A list of widgets on a page.
- // description:
- // Is an instance of `dijit.WidgetSet`
-};
-=====*/
-dijit.registry= new dijit.WidgetSet();
-
-dijit._widgetTypeCtr = {};
-
-dijit.getUniqueId = function(/*String*/widgetType){
- // summary:
- // Generates a unique id for a given widgetType
-
- var id;
- do{
- id = widgetType + "_" +
- (widgetType in dijit._widgetTypeCtr ?
- ++dijit._widgetTypeCtr[widgetType] : dijit._widgetTypeCtr[widgetType] = 0);
- }while(dijit.byId(id));
- return dijit._scopeName == "dijit" ? id : dijit._scopeName + "_" + id; // String
-};
-
-dijit.findWidgets = function(/*DomNode*/ root){
- // summary:
- // Search subtree under root returning widgets found.
- // Doesn't search for nested widgets (ie, widgets inside other widgets).
-
- var outAry = [];
-
- function getChildrenHelper(root){
- for(var node = root.firstChild; node; node = node.nextSibling){
- if(node.nodeType == 1){
- var widgetId = node.getAttribute("widgetId");
- if(widgetId){
- var widget = dijit.byId(widgetId);
- outAry.push(widget);
- }else{
- getChildrenHelper(node);
- }
- }
- }
- }
-
- getChildrenHelper(root);
- return outAry;
-};
-
-dijit._destroyAll = function(){
- // summary:
- // Code to destroy all widgets and do other cleanup on page unload
-
- // Clean up focus manager lingering references to widgets and nodes
- dijit._curFocus = null;
- dijit._prevFocus = null;
- dijit._activeStack = [];
-
- // Destroy all the widgets, top down
- dojo.forEach(dijit.findWidgets(dojo.body()), function(widget){
- // Avoid double destroy of widgets like Menu that are attached to <body>
- // even though they are logically children of other widgets.
- if(!widget._destroyed){
- if(widget.destroyRecursive){
- widget.destroyRecursive();
- }else if(widget.destroy){
- widget.destroy();
- }
- }
- });
-};
-
-if(dojo.isIE){
- // Only run _destroyAll() for IE because we think it's only necessary in that case,
- // and because it causes problems on FF. See bug #3531 for details.
- dojo.addOnWindowUnload(function(){
- dijit._destroyAll();
- });
-}
-
-dijit.byId = function(/*String|Widget*/id){
- // summary:
- // Returns a widget by it's id, or if passed a widget, no-op (like dojo.byId())
- return typeof id == "string" ? dijit.registry._hash[id] : id; // dijit._Widget
-};
-
-dijit.byNode = function(/* DOMNode */ node){
- // summary:
- // Returns the widget corresponding to the given DOMNode
- return dijit.registry.byId(node.getAttribute("widgetId")); // dijit._Widget
-};
-
-dijit.getEnclosingWidget = function(/* DOMNode */ node){
- // summary:
- // Returns the widget whose DOM tree contains the specified DOMNode, or null if
- // the node is not contained within the DOM tree of any widget
- while(node){
- var id = node.getAttribute && node.getAttribute("widgetId");
- if(id){
- return dijit.byId(id);
- }
- node = node.parentNode;
- }
- return null;
-};
-
-dijit._isElementShown = function(/*Element*/elem){
- var style = dojo.style(elem);
- return (style.visibility != "hidden")
- && (style.visibility != "collapsed")
- && (style.display != "none")
- && (dojo.attr(elem, "type") != "hidden");
-}
-
-dijit.isTabNavigable = function(/*Element*/elem){
- // summary:
- // Tests if an element is tab-navigable
-
- // TODO: convert (and rename method) to return effectivite tabIndex; will save time in _getTabNavigable()
- if(dojo.attr(elem, "disabled")){
- return false;
- }else if(dojo.hasAttr(elem, "tabIndex")){
- // Explicit tab index setting
- return dojo.attr(elem, "tabIndex") >= 0; // boolean
- }else{
- // No explicit tabIndex setting, need to investigate node type
- switch(elem.nodeName.toLowerCase()){
- case "a":
- // An <a> w/out a tabindex is only navigable if it has an href
- return dojo.hasAttr(elem, "href");
- case "area":
- case "button":
- case "input":
- case "object":
- case "select":
- case "textarea":
- // These are navigable by default
- return true;
- case "iframe":
- // If it's an editor <iframe> then it's tab navigable.
- if(dojo.isMoz){
- return elem.contentDocument.designMode == "on";
- }else if(dojo.isWebKit){
- var doc = elem.contentDocument,
- body = doc && doc.body;
- return body && body.contentEditable == 'true';
- }else{
- // contentWindow.document isn't accessible within IE7/8
- // if the iframe.src points to a foreign url and this
- // page contains an element, that could get focus
- try{
- doc = elem.contentWindow.document;
- body = doc && doc.body;
- return body && body.firstChild && body.firstChild.contentEditable == 'true';
- }catch(e){
- return false;
- }
- }
- default:
- return elem.contentEditable == 'true';
- }
- }
-};
-
-dijit._getTabNavigable = function(/*DOMNode*/root){
- // summary:
- // Finds descendants of the specified root node.
- //
- // description:
- // Finds the following descendants of the specified root node:
- // * the first tab-navigable element in document order
- // without a tabIndex or with tabIndex="0"
- // * the last tab-navigable element in document order
- // without a tabIndex or with tabIndex="0"
- // * the first element in document order with the lowest
- // positive tabIndex value
- // * the last element in document order with the highest
- // positive tabIndex value
- var first, last, lowest, lowestTabindex, highest, highestTabindex;
- var walkTree = function(/*DOMNode*/parent){
- dojo.query("> *", parent).forEach(function(child){
- var isShown = dijit._isElementShown(child);
- if(isShown && dijit.isTabNavigable(child)){
- var tabindex = dojo.attr(child, "tabIndex");
- if(!dojo.hasAttr(child, "tabIndex") || tabindex == 0){
- if(!first){ first = child; }
- last = child;
- }else if(tabindex > 0){
- if(!lowest || tabindex < lowestTabindex){
- lowestTabindex = tabindex;
- lowest = child;
- }
- if(!highest || tabindex >= highestTabindex){
- highestTabindex = tabindex;
- highest = child;
- }
- }
- }
- if(isShown && child.nodeName.toUpperCase() != 'SELECT'){ walkTree(child) }
- });
- };
- if(dijit._isElementShown(root)){ walkTree(root) }
- return { first: first, last: last, lowest: lowest, highest: highest };
-}
-dijit.getFirstInTabbingOrder = function(/*String|DOMNode*/root){
- // summary:
- // Finds the descendant of the specified root node
- // that is first in the tabbing order
- var elems = dijit._getTabNavigable(dojo.byId(root));
- return elems.lowest ? elems.lowest : elems.first; // DomNode
-};
-
-dijit.getLastInTabbingOrder = function(/*String|DOMNode*/root){
- // summary:
- // Finds the descendant of the specified root node
- // that is last in the tabbing order
- var elems = dijit._getTabNavigable(dojo.byId(root));
- return elems.last ? elems.last : elems.highest; // DomNode
-};
-
-/*=====
-dojo.mixin(dijit, {
- // defaultDuration: Integer
- // The default animation speed (in ms) to use for all Dijit
- // transitional animations, unless otherwise specified
- // on a per-instance basis. Defaults to 200, overrided by
- // `djConfig.defaultDuration`
- defaultDuration: 300
-});
-=====*/
-
-dijit.defaultDuration = dojo.config["defaultDuration"] || 200;
-
-}
diff --git a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/_base/place.js b/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/_base/place.js
deleted file mode 100644
index 020b71d..0000000
--- a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/_base/place.js
+++ /dev/null
@@ -1,394 +0,0 @@
-/*
- Copyright (c) 2004-2009, The Dojo Foundation All Rights Reserved.
- Available via Academic Free License >= 2.1 OR the modified BSD license.
- see: http://dojotoolkit.org/license for details
-*/
-
-
-if(!dojo._hasResource["dijit._base.place"]){ //_hasResource checks added by build. Do not use _hasResource directly in your code.
-dojo._hasResource["dijit._base.place"] = true;
-dojo.provide("dijit._base.place");
-
-dojo.require("dojo.AdapterRegistry");
-
-// ported from dojo.html.util
-
-dijit.getViewport = function(){
- // summary:
- // Returns the dimensions and scroll position of the viewable area of a browser window
-
- var scrollRoot = (dojo.doc.compatMode == 'BackCompat')? dojo.body() : dojo.doc.documentElement;
-
- // get scroll position
- var scroll = dojo._docScroll(); // scrollRoot.scrollTop/Left should work
- return { w: scrollRoot.clientWidth, h: scrollRoot.clientHeight, l: scroll.x, t: scroll.y };
-};
-
-/*=====
-dijit.__Position = function(){
- // x: Integer
- // horizontal coordinate in pixels, relative to document body
- // y: Integer
- // vertical coordinate in pixels, relative to document body
-
- thix.x = x;
- this.y = y;
-}
-=====*/
-
-
-dijit.placeOnScreen = function(
- /* DomNode */ node,
- /* dijit.__Position */ pos,
- /* String[] */ corners,
- /* dijit.__Position? */ padding){
- // summary:
- // Positions one of the node's corners at specified position
- // such that node is fully visible in viewport.
- // description:
- // NOTE: node is assumed to be absolutely or relatively positioned.
- // pos:
- // Object like {x: 10, y: 20}
- // corners:
- // Array of Strings representing order to try corners in, like ["TR", "BL"].
- // Possible values are:
- // * "BL" - bottom left
- // * "BR" - bottom right
- // * "TL" - top left
- // * "TR" - top right
- // padding:
- // set padding to put some buffer around the element you want to position.
- // example:
- // Try to place node's top right corner at (10,20).
- // If that makes node go (partially) off screen, then try placing
- // bottom left corner at (10,20).
- // | placeOnScreen(node, {x: 10, y: 20}, ["TR", "BL"])
-
- var choices = dojo.map(corners, function(corner){
- var c = { corner: corner, pos: {x:pos.x,y:pos.y} };
- if(padding){
- c.pos.x += corner.charAt(1) == 'L' ? padding.x : -padding.x;
- c.pos.y += corner.charAt(0) == 'T' ? padding.y : -padding.y;
- }
- return c;
- });
-
- return dijit._place(node, choices);
-}
-
-dijit._place = function(/*DomNode*/ node, /* Array */ choices, /* Function */ layoutNode){
- // summary:
- // Given a list of spots to put node, put it at the first spot where it fits,
- // of if it doesn't fit anywhere then the place with the least overflow
- // choices: Array
- // Array of elements like: {corner: 'TL', pos: {x: 10, y: 20} }
- // Above example says to put the top-left corner of the node at (10,20)
- // layoutNode: Function(node, aroundNodeCorner, nodeCorner)
- // for things like tooltip, they are displayed differently (and have different dimensions)
- // based on their orientation relative to the parent. This adjusts the popup based on orientation.
-
- // get {x: 10, y: 10, w: 100, h:100} type obj representing position of
- // viewport over document
- var view = dijit.getViewport();
-
- // This won't work if the node is inside a <div style="position: relative">,
- // so reattach it to dojo.doc.body. (Otherwise, the positioning will be wrong
- // and also it might get cutoff)
- if(!node.parentNode || String(node.parentNode.tagName).toLowerCase() != "body"){
- dojo.body().appendChild(node);
- }
-
- var best = null;
- dojo.some(choices, function(choice){
- var corner = choice.corner;
- var pos = choice.pos;
-
- // configure node to be displayed in given position relative to button
- // (need to do this in order to get an accurate size for the node, because
- // a tooltips size changes based on position, due to triangle)
- if(layoutNode){
- layoutNode(node, choice.aroundCorner, corner);
- }
-
- // get node's size
- var style = node.style;
- var oldDisplay = style.display;
- var oldVis = style.visibility;
- style.visibility = "hidden";
- style.display = "";
- var mb = dojo.marginBox(node);
- style.display = oldDisplay;
- style.visibility = oldVis;
-
- // coordinates and size of node with specified corner placed at pos,
- // and clipped by viewport
- var startX = Math.max(view.l, corner.charAt(1) == 'L' ? pos.x : (pos.x - mb.w)),
- startY = Math.max(view.t, corner.charAt(0) == 'T' ? pos.y : (pos.y - mb.h)),
- endX = Math.min(view.l + view.w, corner.charAt(1) == 'L' ? (startX + mb.w) : pos.x),
- endY = Math.min(view.t + view.h, corner.charAt(0) == 'T' ? (startY + mb.h) : pos.y),
- width = endX - startX,
- height = endY - startY,
- overflow = (mb.w - width) + (mb.h - height);
-
- if(best == null || overflow < best.overflow){
- best = {
- corner: corner,
- aroundCorner: choice.aroundCorner,
- x: startX,
- y: startY,
- w: width,
- h: height,
- overflow: overflow
- };
- }
- return !overflow;
- });
-
- node.style.left = best.x + "px";
- node.style.top = best.y + "px";
- if(best.overflow && layoutNode){
- layoutNode(node, best.aroundCorner, best.corner);
- }
- return best;
-}
-
-dijit.placeOnScreenAroundNode = function(
- /* DomNode */ node,
- /* DomNode */ aroundNode,
- /* Object */ aroundCorners,
- /* Function? */ layoutNode){
-
- // summary:
- // Position node adjacent or kitty-corner to aroundNode
- // such that it's fully visible in viewport.
- //
- // description:
- // Place node such that corner of node touches a corner of
- // aroundNode, and that node is fully visible.
- //
- // aroundCorners:
- // Ordered list of pairs of corners to try matching up.
- // Each pair of corners is represented as a key/value in the hash,
- // where the key corresponds to the aroundNode's corner, and
- // the value corresponds to the node's corner:
- //
- // | { aroundNodeCorner1: nodeCorner1, aroundNodeCorner2: nodeCorner2, ...}
- //
- // The following strings are used to represent the four corners:
- // * "BL" - bottom left
- // * "BR" - bottom right
- // * "TL" - top left
- // * "TR" - top right
- //
- // layoutNode: Function(node, aroundNodeCorner, nodeCorner)
- // For things like tooltip, they are displayed differently (and have different dimensions)
- // based on their orientation relative to the parent. This adjusts the popup based on orientation.
- //
- // example:
- // | dijit.placeOnScreenAroundNode(node, aroundNode, {'BL':'TL', 'TR':'BR'});
- // This will try to position node such that node's top-left corner is at the same position
- // as the bottom left corner of the aroundNode (ie, put node below
- // aroundNode, with left edges aligned). If that fails it will try to put
- // the bottom-right corner of node where the top right corner of aroundNode is
- // (ie, put node above aroundNode, with right edges aligned)
- //
-
- // get coordinates of aroundNode
- aroundNode = dojo.byId(aroundNode);
- var oldDisplay = aroundNode.style.display;
- aroundNode.style.display="";
- // #3172: use the slightly tighter border box instead of marginBox
- var aroundNodePos = dojo.position(aroundNode, true);
- aroundNode.style.display=oldDisplay;
-
- // place the node around the calculated rectangle
- return dijit._placeOnScreenAroundRect(node,
- aroundNodePos.x, aroundNodePos.y, aroundNodePos.w, aroundNodePos.h, // rectangle
- aroundCorners, layoutNode);
-};
-
-/*=====
-dijit.__Rectangle = function(){
- // x: Integer
- // horizontal offset in pixels, relative to document body
- // y: Integer
- // vertical offset in pixels, relative to document body
- // width: Integer
- // width in pixels
- // height: Integer
- // height in pixels
-
- this.x = x;
- this.y = y;
- this.width = width;
- this.height = height;
-}
-=====*/
-
-
-dijit.placeOnScreenAroundRectangle = function(
- /* DomNode */ node,
- /* dijit.__Rectangle */ aroundRect,
- /* Object */ aroundCorners,
- /* Function */ layoutNode){
-
- // summary:
- // Like dijit.placeOnScreenAroundNode(), except that the "around"
- // parameter is an arbitrary rectangle on the screen (x, y, width, height)
- // instead of a dom node.
-
- return dijit._placeOnScreenAroundRect(node,
- aroundRect.x, aroundRect.y, aroundRect.width, aroundRect.height, // rectangle
- aroundCorners, layoutNode);
-};
-
-dijit._placeOnScreenAroundRect = function(
- /* DomNode */ node,
- /* Number */ x,
- /* Number */ y,
- /* Number */ width,
- /* Number */ height,
- /* Object */ aroundCorners,
- /* Function */ layoutNode){
-
- // summary:
- // Like dijit.placeOnScreenAroundNode(), except it accepts coordinates
- // of a rectangle to place node adjacent to.
-
- // TODO: combine with placeOnScreenAroundRectangle()
-
- // Generate list of possible positions for node
- var choices = [];
- for(var nodeCorner in aroundCorners){
- choices.push( {
- aroundCorner: nodeCorner,
- corner: aroundCorners[nodeCorner],
- pos: {
- x: x + (nodeCorner.charAt(1) == 'L' ? 0 : width),
- y: y + (nodeCorner.charAt(0) == 'T' ? 0 : height)
- }
- });
- }
-
- return dijit._place(node, choices, layoutNode);
-};
-
-dijit.placementRegistry= new dojo.AdapterRegistry();
-dijit.placementRegistry.register("node",
- function(n, x){
- return typeof x == "object" &&
- typeof x.offsetWidth != "undefined" && typeof x.offsetHeight != "undefined";
- },
- dijit.placeOnScreenAroundNode);
-dijit.placementRegistry.register("rect",
- function(n, x){
- return typeof x == "object" &&
- "x" in x && "y" in x && "width" in x && "height" in x;
- },
- dijit.placeOnScreenAroundRectangle);
-
-dijit.placeOnScreenAroundElement = function(
- /* DomNode */ node,
- /* Object */ aroundElement,
- /* Object */ aroundCorners,
- /* Function */ layoutNode){
-
- // summary:
- // Like dijit.placeOnScreenAroundNode(), except it accepts an arbitrary object
- // for the "around" argument and finds a proper processor to place a node.
-
- return dijit.placementRegistry.match.apply(dijit.placementRegistry, arguments);
-};
-
-dijit.getPopupAlignment = function(/*Array*/ position, /*Boolean*/ leftToRight){
- // summary:
- // Transforms the passed array of preferred positions into a format suitable for passing as the aroundCorners argument to dijit.placeOnScreenAroundElement.
- //
- // position: String[]
- // This variable controls the position of the drop down.
- // It's an array of strings with the following values:
- //
- // * before: places drop down to the left of the target node/widget, or to the right in
- // the case of RTL scripts like Hebrew and Arabic
- // * after: places drop down to the right of the target node/widget, or to the left in
- // the case of RTL scripts like Hebrew and Arabic
- // * above: drop down goes above target node
- // * below: drop down goes below target node
- //
- // The list is positions is tried, in order, until a position is found where the drop down fits
- // within the viewport.
- //
- // leftToRight: Boolean
- // Whether the popup will be displaying in leftToRight mode.
- //
- var align = {};
- dojo.forEach(position, function(pos){
- switch(pos){
- case "after":
- align[leftToRight ? "BR" : "BL"] = leftToRight ? "BL" : "BR";
- break;
- case "before":
- align[leftToRight ? "BL" : "BR"] = leftToRight ? "BR" : "BL";
- break;
- case "below":
- // first try to align left borders, next try to align right borders (or reverse for RTL mode)
- align[leftToRight ? "BL" : "BR"] = leftToRight ? "TL" : "TR";
- align[leftToRight ? "BR" : "BL"] = leftToRight ? "TR" : "TL";
- break;
- case "above":
- default:
- // first try to align left borders, next try to align right borders (or reverse for RTL mode)
- align[leftToRight ? "TL" : "TR"] = leftToRight ? "BL" : "BR";
- align[leftToRight ? "TR" : "TL"] = leftToRight ? "BR" : "BL";
- break;
- }
- });
- return align;
-};
-dijit.getPopupAroundAlignment = function(/*Array*/ position, /*Boolean*/ leftToRight){
- // summary:
- // Transforms the passed array of preferred positions into a format suitable for passing as the aroundCorners argument to dijit.placeOnScreenAroundElement.
- //
- // position: String[]
- // This variable controls the position of the drop down.
- // It's an array of strings with the following values:
- //
- // * before: places drop down to the left of the target node/widget, or to the right in
- // the case of RTL scripts like Hebrew and Arabic
- // * after: places drop down to the right of the target node/widget, or to the left in
- // the case of RTL scripts like Hebrew and Arabic
- // * above: drop down goes above target node
- // * below: drop down goes below target node
- //
- // The list is positions is tried, in order, until a position is found where the drop down fits
- // within the viewport.
- //
- // leftToRight: Boolean
- // Whether the popup will be displaying in leftToRight mode.
- //
- var align = {};
- dojo.forEach(position, function(pos){
- switch(pos){
- case "after":
- align[leftToRight ? "BR" : "BL"] = leftToRight ? "BL" : "BR";
- break;
- case "before":
- align[leftToRight ? "BL" : "BR"] = leftToRight ? "BR" : "BL";
- break;
- case "below":
- // first try to align left borders, next try to align right borders (or reverse for RTL mode)
- align[leftToRight ? "BL" : "BR"] = leftToRight ? "TL" : "TR";
- align[leftToRight ? "BR" : "BL"] = leftToRight ? "TR" : "TL";
- break;
- case "above":
- default:
- // first try to align left borders, next try to align right borders (or reverse for RTL mode)
- align[leftToRight ? "TL" : "TR"] = leftToRight ? "BL" : "BR";
- align[leftToRight ? "TR" : "TL"] = leftToRight ? "BR" : "BL";
- break;
- }
- });
- return align;
-};
-
-}
diff --git a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/_base/popup.js b/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/_base/popup.js
deleted file mode 100644
index ec7ba54..0000000
--- a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/_base/popup.js
+++ /dev/null
@@ -1,365 +0,0 @@
-/*
- Copyright (c) 2004-2009, The Dojo Foundation All Rights Reserved.
- Available via Academic Free License >= 2.1 OR the modified BSD license.
- see: http://dojotoolkit.org/license for details
-*/
-
-
-if(!dojo._hasResource["dijit._base.popup"]){ //_hasResource checks added by build. Do not use _hasResource directly in your code.
-dojo._hasResource["dijit._base.popup"] = true;
-dojo.provide("dijit._base.popup");
-
-dojo.require("dijit._base.focus");
-dojo.require("dijit._base.place");
-dojo.require("dijit._base.window");
-
-dijit.popup = new function(){
- // summary:
- // This class is used to show/hide widgets as popups.
-
- var stack = [],
- beginZIndex=1000,
- idGen = 1;
-
- this.moveOffScreen = function(/*DomNode*/ node){
- // summary:
- // Moves node offscreen without hiding it (so that all layout widgets included
- // in this node can still layout properly)
- //
- // description:
- // Attaches node to dojo.doc.body, and
- // positions it off screen, but not display:none, so that
- // the widget doesn't appear in the page flow and/or cause a blank
- // area at the bottom of the viewport (making scrollbar longer), but
- // initialization of contained widgets works correctly
-
- var s = node.style;
- s.visibility = "hidden"; // so TAB key doesn't navigate to hidden popup
- s.position = "absolute";
- s.top = "-9999px";
- if(s.display == "none"){
- s.display="";
- }
- dojo.body().appendChild(node);
- };
-
-/*=====
-dijit.popup.__OpenArgs = function(){
- // popup: Widget
- // widget to display
- // parent: Widget
- // the button etc. that is displaying this popup
- // around: DomNode
- // DOM node (typically a button); place popup relative to this node. (Specify this *or* "x" and "y" parameters.)
- // x: Integer
- // Absolute horizontal position (in pixels) to place node at. (Specify this *or* "around" parameter.)
- // y: Integer
- // Absolute vertical position (in pixels) to place node at. (Specity this *or* "around" parameter.)
- // orient: Object || String
- // When the around parameter is specified, orient should be an
- // ordered list of tuples of the form (around-node-corner, popup-node-corner).
- // dijit.popup.open() tries to position the popup according to each tuple in the list, in order,
- // until the popup appears fully within the viewport.
- //
- // The default value is {BL:'TL', TL:'BL'}, which represents a list of two tuples:
- // 1. (BL, TL)
- // 2. (TL, BL)
- // where BL means "bottom left" and "TL" means "top left".
- // So by default, it first tries putting the popup below the around node, left-aligning them,
- // and then tries to put it above the around node, still left-aligning them. Note that the
- // default is horizontally reversed when in RTL mode.
- //
- // When an (x,y) position is specified rather than an around node, orient is either
- // "R" or "L". R (for right) means that it tries to put the popup to the right of the mouse,
- // specifically positioning the popup's top-right corner at the mouse position, and if that doesn't
- // fit in the viewport, then it tries, in order, the bottom-right corner, the top left corner,
- // and the top-right corner.
- // onCancel: Function
- // callback when user has canceled the popup by
- // 1. hitting ESC or
- // 2. by using the popup widget's proprietary cancel mechanism (like a cancel button in a dialog);
- // i.e. whenever popupWidget.onCancel() is called, args.onCancel is called
- // onClose: Function
- // callback whenever this popup is closed
- // onExecute: Function
- // callback when user "executed" on the popup/sub-popup by selecting a menu choice, etc. (top menu only)
- // padding: dijit.__Position
- // adding a buffer around the opening position. This is only useful when around is not set.
- this.popup = popup;
- this.parent = parent;
- this.around = around;
- this.x = x;
- this.y = y;
- this.orient = orient;
- this.onCancel = onCancel;
- this.onClose = onClose;
- this.onExecute = onExecute;
- this.padding = padding;
-}
-=====*/
-
- // Compute the closest ancestor popup that's *not* a child of another popup.
- // Ex: For a TooltipDialog with a button that spawns a tree of menus, find the popup of the button.
- var getTopPopup = function(){
- for(var pi=stack.length-1; pi > 0 && stack[pi].parent === stack[pi-1].widget; pi--){
- /* do nothing, just trying to get right value for pi */
- }
- return stack[pi];
- };
-
- var wrappers=[];
- this.open = function(/*dijit.popup.__OpenArgs*/ args){
- // summary:
- // Popup the widget at the specified position
- //
- // example:
- // opening at the mouse position
- // | dijit.popup.open({popup: menuWidget, x: evt.pageX, y: evt.pageY});
- //
- // example:
- // opening the widget as a dropdown
- // | dijit.popup.open({parent: this, popup: menuWidget, around: this.domNode, onClose: function(){...}});
- //
- // Note that whatever widget called dijit.popup.open() should also listen to its own _onBlur callback
- // (fired from _base/focus.js) to know that focus has moved somewhere else and thus the popup should be closed.
-
- var widget = args.popup,
- orient = args.orient || (
- dojo._isBodyLtr() ?
- {'BL':'TL', 'BR':'TR', 'TL':'BL', 'TR':'BR'} :
- {'BR':'TR', 'BL':'TL', 'TR':'BR', 'TL':'BL'}
- ),
- around = args.around,
- id = (args.around && args.around.id) ? (args.around.id+"_dropdown") : ("popup_"+idGen++);
-
- // make wrapper div to hold widget and possibly hold iframe behind it.
- // we can't attach the iframe as a child of the widget.domNode because
- // widget.domNode might be a <table>, <ul>, etc.
-
- var wrapperobj = wrappers.pop(), wrapper, iframe;
- if(!wrapperobj){
- wrapper = dojo.create("div",{
- "class":"dijitPopup"
- }, dojo.body());
- dijit.setWaiRole(wrapper, "presentation");
- }else{
- // recycled a old wrapper, so that we don't need to reattach the iframe
- // which is slow even if the iframe is empty, see #10167
- wrapper = wrapperobj[0];
- iframe = wrapperobj[1];
- }
-
- dojo.attr(wrapper,{
- id: id,
- style:{
- zIndex: beginZIndex + stack.length,
- visibility:"hidden",
- // prevent transient scrollbar causing misalign (#5776), and initial flash in upper left (#10111)
- top: "-9999px"
- },
- dijitPopupParent: args.parent ? args.parent.id : ""
- });
-
- var s = widget.domNode.style;
- s.display = "";
- s.visibility = "";
- s.position = "";
- s.top = "0px";
- wrapper.appendChild(widget.domNode);
-
- if(!iframe){
- iframe = new dijit.BackgroundIframe(wrapper);
- }else{
- iframe.resize(wrapper)
- }
-
- // position the wrapper node
- var best = around ?
- dijit.placeOnScreenAroundElement(wrapper, around, orient, widget.orient ? dojo.hitch(widget, "orient") : null) :
- dijit.placeOnScreen(wrapper, args, orient == 'R' ? ['TR','BR','TL','BL'] : ['TL','BL','TR','BR'], args.padding);
-
- wrapper.style.visibility = "visible";
- // TODO: use effects to fade in wrapper
-
- var handlers = [];
-
- // provide default escape and tab key handling
- // (this will work for any widget, not just menu)
- handlers.push(dojo.connect(wrapper, "onkeypress", this, function(evt){
- if(evt.charOrCode == dojo.keys.ESCAPE && args.onCancel){
- dojo.stopEvent(evt);
- args.onCancel();
- }else if(evt.charOrCode === dojo.keys.TAB){
- dojo.stopEvent(evt);
- var topPopup = getTopPopup();
- if(topPopup && topPopup.onCancel){
- topPopup.onCancel();
- }
- }
- }));
-
- // watch for cancel/execute events on the popup and notify the caller
- // (for a menu, "execute" means clicking an item)
- if(widget.onCancel){
- handlers.push(dojo.connect(widget, "onCancel", args.onCancel));
- }
-
- handlers.push(dojo.connect(widget, widget.onExecute ? "onExecute" : "onChange", function(){
- var topPopup = getTopPopup();
- if(topPopup && topPopup.onExecute){
- topPopup.onExecute();
- }
- }));
-
- stack.push({
- wrapper: wrapper,
- iframe: iframe,
- widget: widget,
- parent: args.parent,
- onExecute: args.onExecute,
- onCancel: args.onCancel,
- onClose: args.onClose,
- handlers: handlers
- });
-
- if(widget.onOpen){
- // TODO: in 2.0 standardize onShow() (used by StackContainer) and onOpen() (used here)
- widget.onOpen(best);
- }
-
- return best;
- };
-
- this.close = function(/*dijit._Widget*/ popup){
- // summary:
- // Close specified popup and any popups that it parented
-
- // Basically work backwards from the top of the stack closing popups
- // until we hit the specified popup, but IIRC there was some issue where closing
- // a popup would cause others to close too. Thus if we are trying to close B in [A,B,C]
- // closing C might close B indirectly and then the while() condition will run where stack==[A]...
- // so the while condition is constructed defensively.
- while(dojo.some(stack, function(elem){return elem.widget == popup;})){
- var top = stack.pop(),
- wrapper = top.wrapper,
- iframe = top.iframe,
- widget = top.widget,
- onClose = top.onClose;
-
- if(widget.onClose){
- // TODO: in 2.0 standardize onHide() (used by StackContainer) and onClose() (used here)
- widget.onClose();
- }
- dojo.forEach(top.handlers, dojo.disconnect);
-
- // Move the widget offscreen, unless it has already been destroyed in above onClose() etc.
- if(widget && widget.domNode){
- this.moveOffScreen(widget.domNode);
- }
-
- // recycle the wrapper plus iframe, so we prevent reattaching iframe everytime an popup opens
- // don't use moveOffScreen which would also reattach the wrapper to body, which causes reloading of iframe
- wrapper.style.top = "-9999px";
- wrapper.style.visibility = "hidden";
- wrappers.push([wrapper,iframe]);
-
- if(onClose){
- onClose();
- }
- }
- };
-}();
-
-dijit._frames = new function(){
- // summary:
- // cache of iframes
- var queue = [];
-
- this.pop = function(){
- var iframe;
- if(queue.length){
- iframe = queue.pop();
- iframe.style.display="";
- }else{
- if(dojo.isIE){
- var burl = dojo.config["dojoBlankHtmlUrl"] || (dojo.moduleUrl("dojo", "resources/blank.html")+"") || "javascript:\"\"";
- var html="<iframe src='" + burl + "'"
- + " style='position: absolute; left: 0px; top: 0px;"
- + "z-index: -1; filter:Alpha(Opacity=\"0\");'>";
- iframe = dojo.doc.createElement(html);
- }else{
- iframe = dojo.create("iframe");
- iframe.src = 'javascript:""';
- iframe.className = "dijitBackgroundIframe";
- dojo.style(iframe, "opacity", 0.1);
- }
- iframe.tabIndex = -1; // Magic to prevent iframe from getting focus on tab keypress - as style didnt work.
- }
- return iframe;
- };
-
- this.push = function(iframe){
- iframe.style.display="none";
- queue.push(iframe);
- }
-}();
-
-
-dijit.BackgroundIframe = function(/* DomNode */node){
- // summary:
- // For IE/FF z-index schenanigans. id attribute is required.
- //
- // description:
- // new dijit.BackgroundIframe(node)
- // Makes a background iframe as a child of node, that fills
- // area (and position) of node
-
- if(!node.id){ throw new Error("no id"); }
- if(dojo.isIE || dojo.isMoz){
- var iframe = dijit._frames.pop();
- node.appendChild(iframe);
- if(dojo.isIE<7){
- this.resize(node);
- this._conn = dojo.connect(node, 'onresize', this, function(){
- this.resize(node);
- });
- }else{
- dojo.style(iframe, {
- width: '100%',
- height: '100%'
- });
- }
- this.iframe = iframe;
- }
-};
-
-dojo.extend(dijit.BackgroundIframe, {
- resize: function(node){
- // summary:
- // resize the iframe so its the same size as node
- // description:
- // this function is a no-op in all browsers except
- // IE6, which does not support 100% width/height
- // of absolute positioned iframes
- if(this.iframe && dojo.isIE<7){
- dojo.style(this.iframe, {
- width: node.offsetWidth + 'px',
- height: node.offsetHeight + 'px'
- });
- }
- },
- destroy: function(){
- // summary:
- // destroy the iframe
- if(this._conn){
- dojo.disconnect(this._conn);
- this._conn = null;
- }
- if(this.iframe){
- dijit._frames.push(this.iframe);
- delete this.iframe;
- }
- }
-});
-
-}
diff --git a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/_base/scroll.js b/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/_base/scroll.js
deleted file mode 100644
index 74834a2..0000000
--- a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/_base/scroll.js
+++ /dev/null
@@ -1,109 +0,0 @@
-/*
- Copyright (c) 2004-2009, The Dojo Foundation All Rights Reserved.
- Available via Academic Free License >= 2.1 OR the modified BSD license.
- see: http://dojotoolkit.org/license for details
-*/
-
-
-if(!dojo._hasResource["dijit._base.scroll"]){ //_hasResource checks added by build. Do not use _hasResource directly in your code.
-dojo._hasResource["dijit._base.scroll"] = true;
-dojo.provide("dijit._base.scroll");
-
-dijit.scrollIntoView = function(/*DomNode*/ node, /*Object?*/ pos){
- // summary:
- // Scroll the passed node into view, if it is not already.
-
- // don't rely on that node.scrollIntoView works just because the function is there
-
- try{ // catch unexpected/unrecreatable errors (#7808) since we can recover using a semi-acceptable native method
- node = dojo.byId(node);
- var doc = node.ownerDocument || dojo.doc,
- body = doc.body || dojo.body(),
- html = doc.documentElement || body.parentNode,
- isIE = dojo.isIE, isWK = dojo.isWebKit;
- // if an untested browser, then use the native method
- if((!(dojo.isMoz || isIE || isWK) || node == body || node == html) && (typeof node.scrollIntoView != "undefined")){
- node.scrollIntoView(false); // short-circuit to native if possible
- return;
- }
- var backCompat = doc.compatMode == 'BackCompat',
- clientAreaRoot = backCompat? body : html,
- scrollRoot = isWK ? body : clientAreaRoot,
- rootWidth = clientAreaRoot.clientWidth,
- rootHeight = clientAreaRoot.clientHeight,
- rtl = !dojo._isBodyLtr(),
- nodePos = pos || dojo.position(node),
- el = node.parentNode,
- isFixed = function(el){
- return ((isIE <= 6 || (isIE && backCompat))? false : (dojo.style(el, 'position').toLowerCase() == "fixed"));
- };
- if(isFixed(node)){ return; } // nothing to do
- while(el){
- if(el == body){ el = scrollRoot; }
- var elPos = dojo.position(el),
- fixedPos = isFixed(el);
- with(elPos){
- if(el == scrollRoot){
- w = rootWidth, h = rootHeight;
- if(scrollRoot == html && isIE && rtl){ x += scrollRoot.offsetWidth-w; } // IE workaround where scrollbar causes negative x
- if(x < 0 || !isIE){ x = 0; } // IE can have values > 0
- if(y < 0 || !isIE){ y = 0; }
- }else{
- var pb = dojo._getPadBorderExtents(el);
- w -= pb.w; h -= pb.h; x += pb.l; y += pb.t;
- }
- with(el){
- if(el != scrollRoot){ // body, html sizes already have the scrollbar removed
- var clientSize = clientWidth,
- scrollBarSize = w - clientSize;
- if(clientSize > 0 && scrollBarSize > 0){
- w = clientSize;
- if(isIE && rtl){ x += scrollBarSize; }
- }
- clientSize = clientHeight;
- scrollBarSize = h - clientSize;
- if(clientSize > 0 && scrollBarSize > 0){
- h = clientSize;
- }
- }
- if(fixedPos){ // bounded by viewport, not parents
- if(y < 0){
- h += y, y = 0;
- }
- if(x < 0){
- w += x, x = 0;
- }
- if(y + h > rootHeight){
- h = rootHeight - y;
- }
- if(x + w > rootWidth){
- w = rootWidth - x;
- }
- }
- // calculate overflow in all 4 directions
- var l = nodePos.x - x, // beyond left: < 0
- t = nodePos.y - Math.max(y, 0), // beyond top: < 0
- r = l + nodePos.w - w, // beyond right: > 0
- bot = t + nodePos.h - h; // beyond bottom: > 0
- if(r * l > 0){
- var s = Math[l < 0? "max" : "min"](l, r);
- nodePos.x += scrollLeft;
- scrollLeft += (isIE >= 8 && !backCompat && rtl)? -s : s;
- nodePos.x -= scrollLeft;
- }
- if(bot * t > 0){
- nodePos.y += scrollTop;
- scrollTop += Math[t < 0? "max" : "min"](t, bot);
- nodePos.y -= scrollTop;
- }
- }
- }
- el = (el != scrollRoot) && !fixedPos && el.parentNode;
- }
- }catch(error){
- console.error('scrollIntoView: ' + error);
- node.scrollIntoView(false);
- }
-};
-
-}
diff --git a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/_base/sniff.js b/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/_base/sniff.js
deleted file mode 100644
index 0cb0ab6..0000000
--- a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/_base/sniff.js
+++ /dev/null
@@ -1,84 +0,0 @@
-/*
- Copyright (c) 2004-2009, The Dojo Foundation All Rights Reserved.
- Available via Academic Free License >= 2.1 OR the modified BSD license.
- see: http://dojotoolkit.org/license for details
-*/
-
-
-if(!dojo._hasResource["dijit._base.sniff"]){ //_hasResource checks added by build. Do not use _hasResource directly in your code.
-dojo._hasResource["dijit._base.sniff"] = true;
-// summary:
-// Applies pre-set CSS classes to the top-level HTML node, based on:
-// - browser (ex: dj_ie)
-// - browser version (ex: dj_ie6)
-// - box model (ex: dj_contentBox)
-// - text direction (ex: dijitRtl)
-//
-// In addition, browser, browser version, and box model are
-// combined with an RTL flag when browser text is RTL. ex: dj_ie-rtl.
-//
-// Simply doing a require on this module will
-// establish this CSS. Modified version of Morris' CSS hack.
-
-dojo.provide("dijit._base.sniff");
-
-(function(){
-
- var d = dojo,
- html = d.doc.documentElement,
- ie = d.isIE,
- opera = d.isOpera,
- maj = Math.floor,
- ff = d.isFF,
- boxModel = d.boxModel.replace(/-/,''),
-
- classes = {
- dj_ie: ie,
- dj_ie6: maj(ie) == 6,
- dj_ie7: maj(ie) == 7,
- dj_ie8: maj(ie) == 8,
- dj_iequirks: ie && d.isQuirks,
-
- // NOTE: Opera not supported by dijit
- dj_opera: opera,
-
- dj_khtml: d.isKhtml,
-
- dj_webkit: d.isWebKit,
- dj_safari: d.isSafari,
- dj_chrome: d.isChrome,
-
- dj_gecko: d.isMozilla,
- dj_ff3: maj(ff) == 3
- }; // no dojo unsupported browsers
-
- classes["dj_" + boxModel] = true;
-
- // apply browser, browser version, and box model class names
- for(var p in classes){
- if(classes[p]){
- if(html.className){
- html.className += " " + p;
- }else{
- html.className = p;
- }
- }
- }
-
- // If RTL mode then add dijitRtl flag plus repeat existing classes
- // with -rtl extension
- // (unshift is to make this code run after <body> node is loaded but before parser runs)
- dojo._loaders.unshift(function(){
- if(!dojo._isBodyLtr()){
- html.className += " dijitRtl";
- for(var p in classes){
- if(classes[p]){
- html.className += " " + p + "-rtl";
- }
- }
- }
- });
-
-})();
-
-}
diff --git a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/_base/typematic.js b/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/_base/typematic.js
deleted file mode 100644
index faefbce..0000000
--- a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/_base/typematic.js
+++ /dev/null
@@ -1,186 +0,0 @@
-/*
- Copyright (c) 2004-2009, The Dojo Foundation All Rights Reserved.
- Available via Academic Free License >= 2.1 OR the modified BSD license.
- see: http://dojotoolkit.org/license for details
-*/
-
-
-if(!dojo._hasResource["dijit._base.typematic"]){ //_hasResource checks added by build. Do not use _hasResource directly in your code.
-dojo._hasResource["dijit._base.typematic"] = true;
-dojo.provide("dijit._base.typematic");
-
-dijit.typematic = {
- // summary:
- // These functions are used to repetitively call a user specified callback
- // method when a specific key or mouse click over a specific DOM node is
- // held down for a specific amount of time.
- // Only 1 such event is allowed to occur on the browser page at 1 time.
-
- _fireEventAndReload: function(){
- this._timer = null;
- this._callback(++this._count, this._node, this._evt);
-
- // Schedule next event, reducing the timer a little bit each iteration, bottoming-out at 10 to avoid
- // browser overload (particularly avoiding starving DOH robot so it never gets to send a mouseup)
- this._currentTimeout = Math.max(
- this._currentTimeout < 0 ? this._initialDelay :
- (this._subsequentDelay > 1 ? this._subsequentDelay : Math.round(this._currentTimeout * this._subsequentDelay)),
- 10);
- this._timer = setTimeout(dojo.hitch(this, "_fireEventAndReload"), this._currentTimeout);
- },
-
- trigger: function(/*Event*/ evt, /* Object */ _this, /*DOMNode*/ node, /* Function */ callback, /* Object */ obj, /* Number */ subsequentDelay, /* Number */ initialDelay){
- // summary:
- // Start a timed, repeating callback sequence.
- // If already started, the function call is ignored.
- // This method is not normally called by the user but can be
- // when the normal listener code is insufficient.
- // evt:
- // key or mouse event object to pass to the user callback
- // _this:
- // pointer to the user's widget space.
- // node:
- // the DOM node object to pass the the callback function
- // callback:
- // function to call until the sequence is stopped called with 3 parameters:
- // count:
- // integer representing number of repeated calls (0..n) with -1 indicating the iteration has stopped
- // node:
- // the DOM node object passed in
- // evt:
- // key or mouse event object
- // obj:
- // user space object used to uniquely identify each typematic sequence
- // subsequentDelay:
- // if > 1, the number of milliseconds until the 3->n events occur
- // or else the fractional time multiplier for the next event's delay, default=0.9
- // initialDelay:
- // the number of milliseconds until the 2nd event occurs, default=500ms
- if(obj != this._obj){
- this.stop();
- this._initialDelay = initialDelay || 500;
- this._subsequentDelay = subsequentDelay || 0.90;
- this._obj = obj;
- this._evt = evt;
- this._node = node;
- this._currentTimeout = -1;
- this._count = -1;
- this._callback = dojo.hitch(_this, callback);
- this._fireEventAndReload();
- }
- },
-
- stop: function(){
- // summary:
- // Stop an ongoing timed, repeating callback sequence.
- if(this._timer){
- clearTimeout(this._timer);
- this._timer = null;
- }
- if(this._obj){
- this._callback(-1, this._node, this._evt);
- this._obj = null;
- }
- },
-
- addKeyListener: function(/*DOMNode*/ node, /*Object*/ keyObject, /*Object*/ _this, /*Function*/ callback, /*Number*/ subsequentDelay, /*Number*/ initialDelay){
- // summary:
- // Start listening for a specific typematic key.
- // See also the trigger method for other parameters.
- // keyObject:
- // an object defining the key to listen for.
- // charOrCode:
- // the printable character (string) or keyCode (number) to listen for.
- // keyCode:
- // (deprecated - use charOrCode) the keyCode (number) to listen for (implies charCode = 0).
- // charCode:
- // (deprecated - use charOrCode) the charCode (number) to listen for.
- // ctrlKey:
- // desired ctrl key state to initiate the calback sequence:
- // - pressed (true)
- // - released (false)
- // - either (unspecified)
- // altKey:
- // same as ctrlKey but for the alt key
- // shiftKey:
- // same as ctrlKey but for the shift key
- // returns:
- // an array of dojo.connect handles
- if(keyObject.keyCode){
- keyObject.charOrCode = keyObject.keyCode;
- dojo.deprecated("keyCode attribute parameter for dijit.typematic.addKeyListener is deprecated. Use charOrCode instead.", "", "2.0");
- }else if(keyObject.charCode){
- keyObject.charOrCode = String.fromCharCode(keyObject.charCode);
- dojo.deprecated("charCode attribute parameter for dijit.typematic.addKeyListener is deprecated. Use charOrCode instead.", "", "2.0");
- }
- return [
- dojo.connect(node, "onkeypress", this, function(evt){
- if(evt.charOrCode == keyObject.charOrCode &&
- (keyObject.ctrlKey === undefined || keyObject.ctrlKey == evt.ctrlKey) &&
- (keyObject.altKey === undefined || keyObject.altKey == evt.altKey) &&
- (keyObject.metaKey === undefined || keyObject.metaKey == (evt.metaKey || false)) && // IE doesn't even set metaKey
- (keyObject.shiftKey === undefined || keyObject.shiftKey == evt.shiftKey)){
- dojo.stopEvent(evt);
- dijit.typematic.trigger(keyObject, _this, node, callback, keyObject, subsequentDelay, initialDelay);
- }else if(dijit.typematic._obj == keyObject){
- dijit.typematic.stop();
- }
- }),
- dojo.connect(node, "onkeyup", this, function(evt){
- if(dijit.typematic._obj == keyObject){
- dijit.typematic.stop();
- }
- })
- ];
- },
-
- addMouseListener: function(/*DOMNode*/ node, /*Object*/ _this, /*Function*/ callback, /*Number*/ subsequentDelay, /*Number*/ initialDelay){
- // summary:
- // Start listening for a typematic mouse click.
- // See the trigger method for other parameters.
- // returns:
- // an array of dojo.connect handles
- var dc = dojo.connect;
- return [
- dc(node, "mousedown", this, function(evt){
- dojo.stopEvent(evt);
- dijit.typematic.trigger(evt, _this, node, callback, node, subsequentDelay, initialDelay);
- }),
- dc(node, "mouseup", this, function(evt){
- dojo.stopEvent(evt);
- dijit.typematic.stop();
- }),
- dc(node, "mouseout", this, function(evt){
- dojo.stopEvent(evt);
- dijit.typematic.stop();
- }),
- dc(node, "mousemove", this, function(evt){
- dojo.stopEvent(evt);
- }),
- dc(node, "dblclick", this, function(evt){
- dojo.stopEvent(evt);
- if(dojo.isIE){
- dijit.typematic.trigger(evt, _this, node, callback, node, subsequentDelay, initialDelay);
- setTimeout(dojo.hitch(this, dijit.typematic.stop), 50);
- }
- })
- ];
- },
-
- addListener: function(/*Node*/ mouseNode, /*Node*/ keyNode, /*Object*/ keyObject, /*Object*/ _this, /*Function*/ callback, /*Number*/ subsequentDelay, /*Number*/ initialDelay){
- // summary:
- // Start listening for a specific typematic key and mouseclick.
- // This is a thin wrapper to addKeyListener and addMouseListener.
- // See the addMouseListener and addKeyListener methods for other parameters.
- // mouseNode:
- // the DOM node object to listen on for mouse events.
- // keyNode:
- // the DOM node object to listen on for key events.
- // returns:
- // an array of dojo.connect handles
- return this.addKeyListener(keyNode, keyObject, _this, callback, subsequentDelay, initialDelay).concat(
- this.addMouseListener(mouseNode, _this, callback, subsequentDelay, initialDelay));
- }
-};
-
-}
diff --git a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/_base/wai.js b/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/_base/wai.js
deleted file mode 100644
index 231fdc1..0000000
--- a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/_base/wai.js
+++ /dev/null
@@ -1,157 +0,0 @@
-/*
- Copyright (c) 2004-2009, The Dojo Foundation All Rights Reserved.
- Available via Academic Free License >= 2.1 OR the modified BSD license.
- see: http://dojotoolkit.org/license for details
-*/
-
-
-if(!dojo._hasResource["dijit._base.wai"]){ //_hasResource checks added by build. Do not use _hasResource directly in your code.
-dojo._hasResource["dijit._base.wai"] = true;
-dojo.provide("dijit._base.wai");
-
-dijit.wai = {
- onload: function(){
- // summary:
- // Detects if we are in high-contrast mode or not
-
- // This must be a named function and not an anonymous
- // function, so that the widget parsing code can make sure it
- // registers its onload function after this function.
- // DO NOT USE "this" within this function.
-
- // create div for testing if high contrast mode is on or images are turned off
- var div = dojo.create("div",{
- id: "a11yTestNode",
- style:{
- cssText:'border: 1px solid;'
- + 'border-color:red green;'
- + 'position: absolute;'
- + 'height: 5px;'
- + 'top: -999px;'
- + 'background-image: url("' + (dojo.config.blankGif || dojo.moduleUrl("dojo", "resources/blank.gif")) + '");'
- }
- }, dojo.body());
-
- // test it
- var cs = dojo.getComputedStyle(div);
- if(cs){
- var bkImg = cs.backgroundImage;
- var needsA11y = (cs.borderTopColor == cs.borderRightColor) || (bkImg != null && (bkImg == "none" || bkImg == "url(invalid-url:)" ));
- dojo[needsA11y ? "addClass" : "removeClass"](dojo.body(), "dijit_a11y");
- if(dojo.isIE){
- div.outerHTML = ""; // prevent mixed-content warning, see http://support.microsoft.com/kb/925014
- }else{
- dojo.body().removeChild(div);
- }
- }
- }
-};
-
-// Test if computer is in high contrast mode.
-// Make sure the a11y test runs first, before widgets are instantiated.
-if(dojo.isIE || dojo.isMoz){ // NOTE: checking in Safari messes things up
- dojo._loaders.unshift(dijit.wai.onload);
-}
-
-dojo.mixin(dijit, {
- _XhtmlRoles: /banner|contentinfo|definition|main|navigation|search|note|secondary|seealso/,
-
- hasWaiRole: function(/*Element*/ elem, /*String*/ role){
- // summary:
- // Determines if an element has a particular non-XHTML role.
- // returns:
- // True if elem has the specific non-XHTML role attribute and false if not.
- // For backwards compatibility if role parameter not provided,
- // returns true if has non XHTML role
- var waiRole = this.getWaiRole(elem);
- return role ? (waiRole.indexOf(role) > -1) : (waiRole.length > 0);
- },
-
- getWaiRole: function(/*Element*/ elem){
- // summary:
- // Gets the non-XHTML role for an element (which should be a wai role).
- // returns:
- // The non-XHTML role of elem or an empty string if elem
- // does not have a role.
- return dojo.trim((dojo.attr(elem, "role") || "").replace(this._XhtmlRoles,"").replace("wairole:",""));
- },
-
- setWaiRole: function(/*Element*/ elem, /*String*/ role){
- // summary:
- // Sets the role on an element.
- // description:
- // Replace existing role attribute with new role.
- // If elem already has an XHTML role, append this role to XHTML role
- // and remove other ARIA roles.
-
- var curRole = dojo.attr(elem, "role") || "";
- if(!this._XhtmlRoles.test(curRole)){
- dojo.attr(elem, "role", role);
- }else{
- if((" "+ curRole +" ").indexOf(" " + role + " ") < 0){
- var clearXhtml = dojo.trim(curRole.replace(this._XhtmlRoles, ""));
- var cleanRole = dojo.trim(curRole.replace(clearXhtml, ""));
- dojo.attr(elem, "role", cleanRole + (cleanRole ? ' ' : '') + role);
- }
- }
- },
-
- removeWaiRole: function(/*Element*/ elem, /*String*/ role){
- // summary:
- // Removes the specified non-XHTML role from an element.
- // Removes role attribute if no specific role provided (for backwards compat.)
-
- var roleValue = dojo.attr(elem, "role");
- if(!roleValue){ return; }
- if(role){
- var t = dojo.trim((" " + roleValue + " ").replace(" " + role + " ", " "));
- dojo.attr(elem, "role", t);
- }else{
- elem.removeAttribute("role");
- }
- },
-
- hasWaiState: function(/*Element*/ elem, /*String*/ state){
- // summary:
- // Determines if an element has a given state.
- // description:
- // Checks for an attribute called "aria-"+state.
- // returns:
- // true if elem has a value for the given state and
- // false if it does not.
-
- return elem.hasAttribute ? elem.hasAttribute("aria-"+state) : !!elem.getAttribute("aria-"+state);
- },
-
- getWaiState: function(/*Element*/ elem, /*String*/ state){
- // summary:
- // Gets the value of a state on an element.
- // description:
- // Checks for an attribute called "aria-"+state.
- // returns:
- // The value of the requested state on elem
- // or an empty string if elem has no value for state.
-
- return elem.getAttribute("aria-"+state) || "";
- },
-
- setWaiState: function(/*Element*/ elem, /*String*/ state, /*String*/ value){
- // summary:
- // Sets a state on an element.
- // description:
- // Sets an attribute called "aria-"+state.
-
- elem.setAttribute("aria-"+state, value);
- },
-
- removeWaiState: function(/*Element*/ elem, /*String*/ state){
- // summary:
- // Removes a state from an element.
- // description:
- // Sets an attribute called "aria-"+state.
-
- elem.removeAttribute("aria-"+state);
- }
-});
-
-}
diff --git a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/_base/window.js b/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/_base/window.js
deleted file mode 100644
index cbafd87..0000000
--- a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/_base/window.js
+++ /dev/null
@@ -1,38 +0,0 @@
-/*
- Copyright (c) 2004-2009, The Dojo Foundation All Rights Reserved.
- Available via Academic Free License >= 2.1 OR the modified BSD license.
- see: http://dojotoolkit.org/license for details
-*/
-
-
-if(!dojo._hasResource["dijit._base.window"]){ //_hasResource checks added by build. Do not use _hasResource directly in your code.
-dojo._hasResource["dijit._base.window"] = true;
-dojo.provide("dijit._base.window");
-
-// TODO: remove this in 2.0, it's not used anymore, or at least not internally
-
-dijit.getDocumentWindow = function(doc){
- // summary:
- // Get window object associated with document doc
-
- // In some IE versions (at least 6.0), document.parentWindow does not return a
- // reference to the real window object (maybe a copy), so we must fix it as well
- // We use IE specific execScript to attach the real window reference to
- // document._parentWindow for later use
- if(dojo.isIE && window !== document.parentWindow && !doc._parentWindow){
- /*
- In IE 6, only the variable "window" can be used to connect events (others
- may be only copies).
- */
- doc.parentWindow.execScript("document._parentWindow = window;", "Javascript");
- //to prevent memory leak, unset it after use
- //another possibility is to add an onUnload handler which seems overkill to me (liucougar)
- var win = doc._parentWindow;
- doc._parentWindow = null;
- return win; // Window
- }
-
- return doc._parentWindow || doc.parentWindow || doc.defaultView; // Window
-}
-
-}
diff --git a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/_editor/RichText.js b/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/_editor/RichText.js
deleted file mode 100644
index 839cd9d..0000000
--- a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/_editor/RichText.js
+++ /dev/null
@@ -1,1811 +0,0 @@
-/*
- Copyright (c) 2004-2009, The Dojo Foundation All Rights Reserved.
- Available via Academic Free License >= 2.1 OR the modified BSD license.
- see: http://dojotoolkit.org/license for details
-*/
-
-
-if(!dojo._hasResource["dijit._editor.RichText"]){ //_hasResource checks added by build. Do not use _hasResource directly in your code.
-dojo._hasResource["dijit._editor.RichText"] = true;
-dojo.provide("dijit._editor.RichText");
-
-dojo.require("dijit._Widget");
-dojo.require("dijit._editor.selection");
-dojo.require("dijit._editor.range");
-dojo.require("dijit._editor.html");
-
-// used to restore content when user leaves this page then comes back
-// but do not try doing dojo.doc.write if we are using xd loading.
-// dojo.doc.write will only work if RichText.js is included in the dojo.js
-// file. If it is included in dojo.js and you want to allow rich text saving
-// for back/forward actions, then set dojo.config.allowXdRichTextSave = true.
-if(!dojo.config["useXDomain"] || dojo.config["allowXdRichTextSave"]){
- if(dojo._postLoad){
- (function(){
- var savetextarea = dojo.doc.createElement('textarea');
- savetextarea.id = dijit._scopeName + "._editor.RichText.savedContent";
- dojo.style(savetextarea, {
- display:'none',
- position:'absolute',
- top:"-100px",
- height:"3px",
- width:"3px"
- });
- dojo.body().appendChild(savetextarea);
- })();
- }else{
- //dojo.body() is not available before onLoad is fired
- try{
- dojo.doc.write('<textarea id="' + dijit._scopeName + '._editor.RichText.savedContent" ' +
- 'style="display:none;position:absolute;top:-100px;left:-100px;height:3px;width:3px;overflow:hidden;"></textarea>');
- }catch(e){ }
- }
-}
-
-dojo.declare("dijit._editor.RichText", dijit._Widget, {
- constructor: function(params){
- // summary:
- // dijit._editor.RichText is the core of dijit.Editor, which provides basic
- // WYSIWYG editing features.
- //
- // description:
- // dijit._editor.RichText is the core of dijit.Editor, which provides basic
- // WYSIWYG editing features. It also encapsulates the differences
- // of different js engines for various browsers. Do not use this widget
- // with an HTML <TEXTAREA> tag, since the browser unescapes XML escape characters,
- // like <. This can have unexpected behavior and lead to security issues
- // such as scripting attacks.
- //
- // tags:
- // private
-
- // contentPreFilters: Function(String)[]
- // Pre content filter function register array.
- // these filters will be executed before the actual
- // editing area gets the html content.
- this.contentPreFilters = [];
-
- // contentPostFilters: Function(String)[]
- // post content filter function register array.
- // These will be used on the resulting html
- // from contentDomPostFilters. The resulting
- // content is the final html (returned by getValue()).
- this.contentPostFilters = [];
-
- // contentDomPreFilters: Function(DomNode)[]
- // Pre content dom filter function register array.
- // These filters are applied after the result from
- // contentPreFilters are set to the editing area.
- this.contentDomPreFilters = [];
-
- // contentDomPostFilters: Function(DomNode)[]
- // Post content dom filter function register array.
- // These filters are executed on the editing area dom.
- // The result from these will be passed to contentPostFilters.
- this.contentDomPostFilters = [];
-
- // editingAreaStyleSheets: dojo._URL[]
- // array to store all the stylesheets applied to the editing area
- this.editingAreaStyleSheets = [];
-
- // Make a copy of this.events before we start writing into it, otherwise we
- // will modify the prototype which leads to bad things on pages w/multiple editors
- this.events = [].concat(this.events);
-
- this._keyHandlers = {};
- this.contentPreFilters.push(dojo.hitch(this, "_preFixUrlAttributes"));
- if(dojo.isMoz){
- this.contentPreFilters.push(this._normalizeFontStyle);
- this.contentPostFilters.push(this._removeMozBogus);
- }
- if(dojo.isWebKit){
- // Try to clean up WebKit bogus artifacts. The inserted classes
- // made by WebKit sometimes messes things up.
- this.contentPreFilters.push(this._removeWebkitBogus);
- this.contentPostFilters.push(this._removeWebkitBogus);
- }
- if(dojo.isIE){
- // IE generates <strong> and <em> but we want to normalize to <b> and <i>
- this.contentPostFilters.push(this._normalizeFontStyle);
- }
- //this.contentDomPostFilters.push(this._postDomFixUrlAttributes);
-
- this.onLoadDeferred = new dojo.Deferred();
- },
-
- // inheritWidth: Boolean
- // whether to inherit the parent's width or simply use 100%
- inheritWidth: false,
-
- // focusOnLoad: [deprecated] Boolean
- // Focus into this widget when the page is loaded
- focusOnLoad: false,
-
- // name: String?
- // Specifies the name of a (hidden) <textarea> node on the page that's used to save
- // the editor content on page leave. Used to restore editor contents after navigating
- // to a new page and then hitting the back button.
- name: "",
-
- // styleSheets: [const] String
- // semicolon (";") separated list of css files for the editing area
- styleSheets: "",
-
- // _content: [private] String
- // temporary content storage
- _content: "",
-
- // height: String
- // Set height to fix the editor at a specific height, with scrolling.
- // By default, this is 300px. If you want to have the editor always
- // resizes to accommodate the content, use AlwaysShowToolbar plugin
- // and set height="". If this editor is used within a layout widget,
- // set height="100%".
- height: "300px",
-
- // minHeight: String
- // The minimum height that the editor should have.
- minHeight: "1em",
-
- // isClosed: [private] Boolean
- isClosed: true,
-
- // isLoaded: [private] Boolean
- isLoaded: false,
-
- // _SEPARATOR: [private] String
- // Used to concat contents from multiple editors into a single string,
- // so they can be saved into a single <textarea> node. See "name" attribute.
- _SEPARATOR: "@@**%%__RICHTEXTBOUNDRY__%%**@@",
-
- // onLoadDeferred: [protected] dojo.Deferred
- // Deferred which is fired when the editor finishes loading
- onLoadDeferred: null,
-
- // isTabIndent: Boolean
- // Make tab key and shift-tab indent and outdent rather than navigating.
- // Caution: sing this makes web pages inaccessible to users unable to use a mouse.
- isTabIndent: false,
-
- // disableSpellCheck: [const] Boolean
- // When true, disables the browser's native spell checking, if supported.
- // Works only in Firefox.
- disableSpellCheck: false,
-
- postCreate: function(){
- if("textarea" == this.domNode.tagName.toLowerCase()){
- console.warn("RichText should not be used with the TEXTAREA tag. See dijit._editor.RichText docs.");
- }
- dojo.publish(dijit._scopeName + "._editor.RichText::init", [this]);
- this.open();
- this.setupDefaultShortcuts();
- },
-
- setupDefaultShortcuts: function(){
- // summary:
- // Add some default key handlers
- // description:
- // Overwrite this to setup your own handlers. The default
- // implementation does not use Editor commands, but directly
- // executes the builtin commands within the underlying browser
- // support.
- // tags:
- // protected
- var exec = dojo.hitch(this, function(cmd, arg){
- return function(){
- return !this.execCommand(cmd,arg);
- };
- });
-
- var ctrlKeyHandlers = {
- b: exec("bold"),
- i: exec("italic"),
- u: exec("underline"),
- a: exec("selectall"),
- s: function(){ this.save(true); },
- m: function(){ this.isTabIndent = !this.isTabIndent; },
-
- "1": exec("formatblock", "h1"),
- "2": exec("formatblock", "h2"),
- "3": exec("formatblock", "h3"),
- "4": exec("formatblock", "h4"),
-
- "\\": exec("insertunorderedlist")
- };
-
- if(!dojo.isIE){
- ctrlKeyHandlers.Z = exec("redo"); //FIXME: undo?
- }
-
- for(var key in ctrlKeyHandlers){
- this.addKeyHandler(key, true, false, ctrlKeyHandlers[key]);
- }
- },
-
- // events: [private] String[]
- // events which should be connected to the underlying editing area
- events: ["onKeyPress", "onKeyDown", "onKeyUp", "onClick"],
-
- // captureEvents: [deprecated] String[]
- // Events which should be connected to the underlying editing
- // area, events in this array will be addListener with
- // capture=true.
- // TODO: looking at the code I don't see any distinction between events and captureEvents,
- // so get rid of this for 2.0 if not sooner
- captureEvents: [],
-
- _editorCommandsLocalized: false,
- _localizeEditorCommands: function(){
- // summary:
- // When IE is running in a non-English locale, the API actually changes,
- // so that we have to say (for example) danraku instead of p (for paragraph).
- // Handle that here.
- // tags:
- // private
- if(this._editorCommandsLocalized){
- return;
- }
- this._editorCommandsLocalized = true;
-
- //in IE, names for blockformat is locale dependent, so we cache the values here
-
- //if the normal way fails, we try the hard way to get the list
-
- //do not use _cacheLocalBlockFormatNames here, as it will
- //trigger security warning in IE7
-
- //put p after div, so if IE returns Normal, we show it as paragraph
- //We can distinguish p and div if IE returns Normal, however, in order to detect that,
- //we have to call this.document.selection.createRange().parentElement() or such, which
- //could slow things down. Leave it as it is for now
- var formats = ['div', 'p', 'pre', 'h1', 'h2', 'h3', 'h4', 'h5', 'h6', 'ol', 'ul', 'address'];
- var localhtml = "", format, i=0;
- while((format=formats[i++])){
- //append a <br> after each element to separate the elements more reliably
- if(format.charAt(1) != 'l'){
- localhtml += "<"+format+"><span>content</span></"+format+"><br/>";
- }else{
- localhtml += "<"+format+"><li>content</li></"+format+"><br/>";
- }
- }
- //queryCommandValue returns empty if we hide editNode, so move it out of screen temporary
- var div = dojo.doc.createElement('div');
- dojo.style(div, {
- position: "absolute",
- top: "-2000px"
- });
- dojo.doc.body.appendChild(div);
- div.innerHTML = localhtml;
- var node = div.firstChild;
- while(node){
- dijit._editor.selection.selectElement(node.firstChild);
- dojo.withGlobal(this.window, "selectElement", dijit._editor.selection, [node.firstChild]);
- var nativename = node.tagName.toLowerCase();
- this._local2NativeFormatNames[nativename] = document.queryCommandValue("formatblock");
- //this.queryCommandValue("formatblock");
- this._native2LocalFormatNames[this._local2NativeFormatNames[nativename]] = nativename;
- node = node.nextSibling.nextSibling;
- }
- dojo.body().removeChild(div);
- },
-
- open: function(/*DomNode?*/ element){
- // summary:
- // Transforms the node referenced in this.domNode into a rich text editing
- // node.
- // description:
- // Sets up the editing area asynchronously. This will result in
- // the creation and replacement with an <iframe>.
- //
- // A dojo.Deferred object is created at this.onLoadDeferred, and
- // users may attach to it to be informed when the rich-text area
- // initialization is finalized.
- // tags:
- // private
-
- if(!this.onLoadDeferred || this.onLoadDeferred.fired >= 0){
- this.onLoadDeferred = new dojo.Deferred();
- }
-
- if(!this.isClosed){ this.close(); }
- dojo.publish(dijit._scopeName + "._editor.RichText::open", [ this ]);
-
- this._content = "";
- if(arguments.length == 1 && element.nodeName){ // else unchanged
- this.domNode = element;
- }
-
- var dn = this.domNode;
-
- // "html" will hold the innerHTML of the srcNodeRef and will be used to
- // initialize the editor.
- var html;
-
- if(dn.nodeName && dn.nodeName.toLowerCase() == "textarea"){
- // if we were created from a textarea, then we need to create a
- // new editing harness node.
- var ta = (this.textarea = dn);
- this.name = ta.name;
- html = ta.value;
- dn = this.domNode = dojo.doc.createElement("div");
- dn.setAttribute('widgetId', this.id);
- ta.removeAttribute('widgetId');
- dn.cssText = ta.cssText;
- dn.className += " " + ta.className;
- dojo.place(dn, ta, "before");
- var tmpFunc = dojo.hitch(this, function(){
- //some browsers refuse to submit display=none textarea, so
- //move the textarea off screen instead
- dojo.style(ta, {
- display: "block",
- position: "absolute",
- top: "-1000px"
- });
-
- if(dojo.isIE){ //nasty IE bug: abnormal formatting if overflow is not hidden
- var s = ta.style;
- this.__overflow = s.overflow;
- s.overflow = "hidden";
- }
- });
- if(dojo.isIE){
- setTimeout(tmpFunc, 10);
- }else{
- tmpFunc();
- }
-
- if(ta.form){
- dojo.connect(ta.form, "onsubmit", this, function(){
- // FIXME: should we be calling close() here instead?
- ta.value = this.getValue();
- });
- }
- }else{
- html = dijit._editor.getChildrenHtml(dn);
- dn.innerHTML = "";
- }
-
- var content = dojo.contentBox(dn);
- this._oldHeight = content.h;
- this._oldWidth = content.w;
-
- this.savedContent = html;
-
- // If we're a list item we have to put in a blank line to force the
- // bullet to nicely align at the top of text
- if(dn.nodeName && dn.nodeName == "LI"){
- dn.innerHTML = " <br>";
- }
-
- this.editingArea = dn.ownerDocument.createElement("div");
- dn.appendChild(this.editingArea);
-
- // User has pressed back/forward button so we lost the text in the editor, but it's saved
- // in a hidden <textarea> (which contains the data for all the editors on this page),
- // so get editor value from there
- if(this.name !== "" && (!dojo.config["useXDomain"] || dojo.config["allowXdRichTextSave"])){
- var saveTextarea = dojo.byId(dijit._scopeName + "._editor.RichText.savedContent");
- if(saveTextarea.value !== ""){
- var datas = saveTextarea.value.split(this._SEPARATOR), i=0, dat;
- while((dat=datas[i++])){
- var data = dat.split(":");
- if(data[0] == this.name){
- html = data[1];
- datas.splice(i, 1); // TODO: this has no effect
- break;
- }
- }
- }
-
- // TODO: this is troublesome if this editor has been destroyed, should have global handler.
- // TODO: need to clear <textarea> in global handler
- dojo.addOnUnload(dojo.hitch(this, "_saveContent"));
- }
-
- this.isClosed = false;
-
- var ifr = (this.editorObject = this.iframe = dojo.doc.createElement('iframe'));
- ifr.id = this.id+"_iframe";
- this._iframeSrc = this._getIframeDocTxt();
- ifr.style.border = "none";
- ifr.style.width = "100%";
- if(this._layoutMode){
- // iframe should be 100% height, thus getting it's height from surrounding
- // <div> (which has the correct height set by Editor)
- ifr.style.height = "100%";
- }else{
- if(dojo.isIE >= 7){
- if(this.height){
- ifr.style.height = this.height;
- }
- if(this.minHeight){
- ifr.style.minHeight = this.minHeight;
- }
- }else{
- ifr.style.height = this.height ? this.height : this.minHeight;
- }
- }
- ifr.frameBorder = 0;
- ifr._loadFunc = dojo.hitch( this, function(win){
- this.window = win;
- this.document = this.window.document;
-
- if(dojo.isIE){
- this._localizeEditorCommands();
- }
-
- // Do final setup and set initial contents of editor
- this.onLoad(html);
-
- this.savedContent = this.getValue(true);
- });
-
- // Set the iframe's initial (blank) content.
- var s = 'javascript:parent.' + dijit._scopeName + '.byId("'+this.id+'")._iframeSrc';
- ifr.setAttribute('src', s);
- this.editingArea.appendChild(ifr);
-
- if(dojo.isSafari){ // Safari seems to always append iframe with src=about:blank
- setTimeout(function(){ifr.setAttribute('src', s);},0);
- }
-
- // TODO: this is a guess at the default line-height, kinda works
- if(dn.nodeName == "LI"){
- dn.lastChild.style.marginTop = "-1.2em";
- }
-
- dojo.addClass(this.domNode, "RichTextEditable");
- },
-
- //static cache variables shared among all instance of this class
- _local2NativeFormatNames: {},
- _native2LocalFormatNames: {},
-
- _getIframeDocTxt: function(){
- // summary:
- // Generates the boilerplate text of the document inside the iframe (ie, <html><head>...</head><body/></html>).
- // Editor content (if not blank) should be added afterwards.
- // tags:
- // private
- var _cs = dojo.getComputedStyle(this.domNode);
-
- // The contents inside of <body>. The real contents are set later via a call to setValue().
- var html = "";
- if(dojo.isIE || (!this.height && !dojo.isMoz)){
- // In auto-expand mode, need a wrapper div for AlwaysShowToolbar plugin to correctly
- // expand/contract the editor as the content changes.
- html = "<div></div>";
- }else if(dojo.isMoz){
- // workaround bug where can't select then delete text (until user types something
- // into the editor)... and/or issue where typing doesn't erase selected text
- this._cursorToStart = true;
- html = " ";
- }
-
- var font = [ _cs.fontWeight, _cs.fontSize, _cs.fontFamily ].join(" ");
-
- // line height is tricky - applying a units value will mess things up.
- // if we can't get a non-units value, bail out.
- var lineHeight = _cs.lineHeight;
- if(lineHeight.indexOf("px") >= 0){
- lineHeight = parseFloat(lineHeight)/parseFloat(_cs.fontSize);
- // console.debug(lineHeight);
- }else if(lineHeight.indexOf("em")>=0){
- lineHeight = parseFloat(lineHeight);
- }else{
- // If we can't get a non-units value, just default
- // it to the CSS spec default of 'normal'. Seems to
- // work better, esp on IE, than '1.0'
- lineHeight = "normal";
- }
- var userStyle = "";
- this.style.replace(/(^|;)(line-|font-?)[^;]+/g, function(match){ userStyle += match.replace(/^;/g,"") + ';'; });
-
- // need to find any associated label element and update iframe document title
- var label=dojo.query('label[for="'+this.id+'"]');
-
- return [
- this.isLeftToRight() ? "<html><head>" : "<html dir='rtl'><head>",
- (dojo.isMoz && label.length ? "<title>" + label[0].innerHTML + "</title>" : ""),
- "<meta http-equiv='Content-Type' content='text/html'>",
- "<style>",
- "body,html {",
- "\tbackground:transparent;",
- "\tpadding: 1px 0 0 0;",
- "\tmargin: -1px 0 0 0;", // remove extraneous vertical scrollbar on safari and firefox
- (dojo.isWebKit?"\twidth: 100%;":""),
- (dojo.isWebKit?"\theight: 100%;":""),
- "}",
- // TODO: left positioning will cause contents to disappear out of view
- // if it gets too wide for the visible area
- "body{",
- "\ttop:0px; left:0px; right:0px;",
- "\tfont:", font, ";",
- ((this.height||dojo.isOpera) ? "" : "position: fixed;"),
- // FIXME: IE 6 won't understand min-height?
- "\tmin-height:", this.minHeight, ";",
- "\tline-height:", lineHeight,
- "}",
- "p{ margin: 1em 0; }",
- (this.height ? // height:auto undoes the height:100%
- "" : "body,html{overflow-y:hidden;/*for IE*/} body > div {overflow-x:auto;/*FF:horizontal scrollbar*/ overflow-y:hidden;/*safari*/ min-height:"+this.minHeight+";/*safari*/}"
- ),
- "li > ul:-moz-first-node, li > ol:-moz-first-node{ padding-top: 1.2em; } ",
- "li{ min-height:1.2em; }",
- "</style>",
- this._applyEditingAreaStyleSheets(),
- "</head><body onload='frameElement._loadFunc(window,document)' style='"+userStyle+"'>", html, "</body></html>"
- ].join(""); // String
- },
-
- _applyEditingAreaStyleSheets: function(){
- // summary:
- // apply the specified css files in styleSheets
- // tags:
- // private
- var files = [];
- if(this.styleSheets){
- files = this.styleSheets.split(';');
- this.styleSheets = '';
- }
-
- //empty this.editingAreaStyleSheets here, as it will be filled in addStyleSheet
- files = files.concat(this.editingAreaStyleSheets);
- this.editingAreaStyleSheets = [];
-
- var text='', i=0, url;
- while((url=files[i++])){
- var abstring = (new dojo._Url(dojo.global.location, url)).toString();
- this.editingAreaStyleSheets.push(abstring);
- text += '<link rel="stylesheet" type="text/css" href="'+abstring+'"/>';
- }
- return text;
- },
-
- addStyleSheet: function(/*dojo._Url*/ uri){
- // summary:
- // add an external stylesheet for the editing area
- // uri:
- // A dojo.uri.Uri pointing to the url of the external css file
- var url=uri.toString();
-
- //if uri is relative, then convert it to absolute so that it can be resolved correctly in iframe
- if(url.charAt(0) == '.' || (url.charAt(0) != '/' && !uri.host)){
- url = (new dojo._Url(dojo.global.location, url)).toString();
- }
-
- if(dojo.indexOf(this.editingAreaStyleSheets, url) > -1){
-// console.debug("dijit._editor.RichText.addStyleSheet: Style sheet "+url+" is already applied");
- return;
- }
-
- this.editingAreaStyleSheets.push(url);
- this.onLoadDeferred.addCallback(dojo.hitch(function(){
- if(this.document.createStyleSheet){ //IE
- this.document.createStyleSheet(url);
- }else{ //other browser
- var head = this.document.getElementsByTagName("head")[0];
- var stylesheet = this.document.createElement("link");
- stylesheet.rel="stylesheet";
- stylesheet.type="text/css";
- stylesheet.href=url;
- head.appendChild(stylesheet);
- }
- }));
- },
-
- removeStyleSheet: function(/*dojo._Url*/ uri){
- // summary:
- // remove an external stylesheet for the editing area
- var url=uri.toString();
- //if uri is relative, then convert it to absolute so that it can be resolved correctly in iframe
- if(url.charAt(0) == '.' || (url.charAt(0) != '/' && !uri.host)){
- url = (new dojo._Url(dojo.global.location, url)).toString();
- }
- var index = dojo.indexOf(this.editingAreaStyleSheets, url);
- if(index == -1){
-// console.debug("dijit._editor.RichText.removeStyleSheet: Style sheet "+url+" has not been applied");
- return;
- }
- delete this.editingAreaStyleSheets[index];
- dojo.withGlobal(this.window,'query', dojo, ['link:[href="'+url+'"]']).orphan();
- },
-
- // disabled: Boolean
- // The editor is disabled; the text cannot be changed.
- disabled: false,
-
- _mozSettingProps: {'styleWithCSS':false},
- _setDisabledAttr: function(/*Boolean*/ value){
- this.disabled = value;
- if(!this.isLoaded){ return; } // this method requires init to be complete
- value = !!value;
- if(dojo.isIE || dojo.isWebKit || dojo.isOpera){
- var preventIEfocus = dojo.isIE && (this.isLoaded || !this.focusOnLoad);
- if(preventIEfocus){ this.editNode.unselectable = "on"; }
- this.editNode.contentEditable = !value;
- if(preventIEfocus){
- var _this = this;
- setTimeout(function(){ _this.editNode.unselectable = "off"; }, 0);
- }
- }else{ //moz
- try{
- this.document.designMode=(value?'off':'on');
- }catch(e){ return; } // ! _disabledOK
- if(!value && this._mozSettingProps){
- var ps = this._mozSettingProps;
- for(var n in ps){
- if(ps.hasOwnProperty(n)){
- try{
- this.document.execCommand(n,false,ps[n]);
- }catch(e2){}
- }
- }
- }
-// this.document.execCommand('contentReadOnly', false, value);
-// if(value){
-// this.blur(); //to remove the blinking caret
-// }
- }
- this._disabledOK = true;
- },
-
-/* Event handlers
- *****************/
-
- onLoad: function(/*String*/ html){
- // summary:
- // Handler after the iframe finishes loading.
- // html: String
- // Editor contents should be set to this value
- // tags:
- // protected
-
- // TODO: rename this to _onLoad, make empty public onLoad() method, deprecate/make protected onLoadDeferred handler?
-
- if(!this.window.__registeredWindow){
- this.window.__registeredWindow = true;
- this._iframeRegHandle = dijit.registerIframe(this.iframe);
- }
- if(!dojo.isIE && (this.height || dojo.isMoz)){
- this.editNode=this.document.body;
- }else{
- // there's a wrapper div around the content, see _getIframeDocTxt().
- this.editNode=this.document.body.firstChild;
- var _this = this;
- if(dojo.isIE){ // #4996 IE wants to focus the BODY tag
- var tabStop = (this.tabStop = dojo.doc.createElement('<div tabIndex=-1>'));
- this.editingArea.appendChild(tabStop);
- this.iframe.onfocus = function(){ _this.editNode.setActive(); };
- }
- }
- this.focusNode = this.editNode; // for InlineEditBox
-
-
- var events = this.events.concat(this.captureEvents);
- var ap = this.iframe ? this.document : this.editNode;
- dojo.forEach(events, function(item){
- this.connect(ap, item.toLowerCase(), item);
- }, this);
-
- if(dojo.isIE){ // IE contentEditable
- this.connect(this.document, "onmousedown", "_onIEMouseDown"); // #4996 fix focus
-
- // give the node Layout on IE
- // TODO: this may no longer be needed, since we've reverted IE to using an iframe,
- // not contentEditable. Removing it would also probably remove the need for creating
- // the extra <div> in _getIframeDocTxt()
- this.editNode.style.zoom = 1.0;
- }
-
- if(dojo.isWebKit){
- //WebKit sometimes doesn't fire right on selections, so the toolbar
- //doesn't update right. Therefore, help it out a bit with an additional
- //listener. A mouse up will typically indicate a display change, so fire this
- //and get the toolbar to adapt. Reference: #9532
- this._webkitListener = this.connect(this.document, "onmouseup", "onDisplayChanged");
- }
-
- if(dojo.isIE){
- // Try to make sure 'hidden' elements aren't visible in edit mode (like browsers other than IE
- // do). See #9103
- try{
- this.document.execCommand('RespectVisibilityInDesign', true, null);
- }catch(e){/* squelch */}
- }
-
- this.isLoaded = true;
-
- this.attr('disabled', this.disabled); // initialize content to editable (or not)
-
- // Note that setValue() call will only work after isLoaded is set to true (above)
- this.setValue(html);
-
- if(this.onLoadDeferred){
- this.onLoadDeferred.callback(true);
- }
-
- this.onDisplayChanged();
-
- if(this.focusOnLoad){
- // after the document loads, then set focus after updateInterval expires so that
- // onNormalizedDisplayChanged has run to avoid input caret issues
- dojo.addOnLoad(dojo.hitch(this, function(){ setTimeout(dojo.hitch(this, "focus"), this.updateInterval); }));
- }
- },
-
- onKeyDown: function(/* Event */ e){
- // summary:
- // Handler for onkeydown event
- // tags:
- // protected
-
- // we need this event at the moment to get the events from control keys
- // such as the backspace. It might be possible to add this to Dojo, so that
- // keyPress events can be emulated by the keyDown and keyUp detection.
-
- if(e.keyCode === dojo.keys.TAB && this.isTabIndent ){
- dojo.stopEvent(e); //prevent tab from moving focus out of editor
-
- // FIXME: this is a poor-man's indent/outdent. It would be
- // better if it added 4 " " chars in an undoable way.
- // Unfortunately pasteHTML does not prove to be undoable
- if(this.queryCommandEnabled((e.shiftKey ? "outdent" : "indent"))){
- this.execCommand((e.shiftKey ? "outdent" : "indent"));
- }
- }
- if(dojo.isIE){
- if(e.keyCode == dojo.keys.TAB && !this.isTabIndent){
- if(e.shiftKey && !e.ctrlKey && !e.altKey){
- // focus the BODY so the browser will tab away from it instead
- this.iframe.focus();
- }else if(!e.shiftKey && !e.ctrlKey && !e.altKey){
- // focus the BODY so the browser will tab away from it instead
- this.tabStop.focus();
- }
- }else if(e.keyCode === dojo.keys.BACKSPACE && this.document.selection.type === "Control"){
- // IE has a bug where if a non-text object is selected in the editor,
- // hitting backspace would act as if the browser's back button was
- // clicked instead of deleting the object. see #1069
- dojo.stopEvent(e);
- this.execCommand("delete");
- }else if((65 <= e.keyCode && e.keyCode <= 90) ||
- (e.keyCode>=37 && e.keyCode<=40) // FIXME: get this from connect() instead!
- ){ //arrow keys
- e.charCode = e.keyCode;
- this.onKeyPress(e);
- }
- }
- return true;
- },
-
- onKeyUp: function(e){
- // summary:
- // Handler for onkeyup event
- // tags:
- // callback
- return;
- },
-
- setDisabled: function(/*Boolean*/ disabled){
- // summary:
- // Deprecated, use attr('disabled', ...) instead.
- // tags:
- // deprecated
- dojo.deprecated('dijit.Editor::setDisabled is deprecated','use dijit.Editor::attr("disabled",boolean) instead', 2.0);
- this.attr('disabled',disabled);
- },
- _setValueAttr: function(/*String*/ value){
- // summary:
- // Registers that attr("value", foo) should call setValue(foo)
- this.setValue(value);
- },
- _setDisableSpellCheckAttr: function(/*Boolean*/ disabled){
- if(this.document){
- dojo.attr(this.document.body, "spellcheck", !disabled);
- }else{
- // try again after the editor is finished loading
- this.onLoadDeferred.addCallback(dojo.hitch(this, function(){
- dojo.attr(this.document.body, "spellcheck", !disabled);
- }));
- }
- this.disableSpellCheck = disabled;
- },
-
- onKeyPress: function(e){
- // summary:
- // Handle the various key events
- // tags:
- // protected
-
- var c = (e.keyChar && e.keyChar.toLowerCase()) || e.keyCode,
- handlers = this._keyHandlers[c],
- args = arguments;
-
- if(handlers && !e.altKey){
- dojo.some(handlers, function(h){
- if(!(h.shift ^ e.shiftKey) && !(h.ctrl ^ e.ctrlKey)){
- if(!h.handler.apply(this, args)){
- e.preventDefault();
- }
- return true;
- }
- }, this);
- }
-
- // function call after the character has been inserted
- if(!this._onKeyHitch){
- this._onKeyHitch = dojo.hitch(this, "onKeyPressed");
- }
- setTimeout(this._onKeyHitch, 1);
- return true;
- },
-
- addKeyHandler: function(/*String*/ key, /*Boolean*/ ctrl, /*Boolean*/ shift, /*Function*/ handler){
- // summary:
- // Add a handler for a keyboard shortcut
- // description:
- // The key argument should be in lowercase if it is a letter character
- // tags:
- // protected
- if(!dojo.isArray(this._keyHandlers[key])){
- this._keyHandlers[key] = [];
- }
- //TODO: would be nice to make this a hash instead of an array for quick lookups
- this._keyHandlers[key].push({
- shift: shift || false,
- ctrl: ctrl || false,
- handler: handler
- });
- },
-
- onKeyPressed: function(){
- // summary:
- // Handler for after the user has pressed a key, and the display has been updated.
- // (Runs on a timer so that it runs after the display is updated)
- // tags:
- // private
- this.onDisplayChanged(/*e*/); // can't pass in e
- },
-
- onClick: function(/*Event*/ e){
- // summary:
- // Handler for when the user clicks.
- // tags:
- // private
-
- // console.info('onClick',this._tryDesignModeOn);
- this.onDisplayChanged(e);
- },
-
- _onIEMouseDown: function(/*Event*/ e){
- // summary:
- // IE only to prevent 2 clicks to focus
- // tags:
- // protected
-
- if(!this._focused && !this.disabled){
- this.focus();
- }
- },
-
- _onBlur: function(e){
- // summary:
- // Called from focus manager when focus has moved away from this editor
- // tags:
- // protected
-
- // console.info('_onBlur')
-
- this.inherited(arguments);
- var _c=this.getValue(true);
-
- if(_c!=this.savedContent){
- this.onChange(_c);
- this.savedContent=_c;
- }
- },
- _onFocus: function(/*Event*/ e){
- // summary:
- // Called from focus manager when focus has moved into this editor
- // tags:
- // protected
-
- // console.info('_onFocus')
- if(!this.disabled){
- if(!this._disabledOK){
- this.attr('disabled', false);
- }
- this.inherited(arguments);
- }
- },
-
- // TODO: why is this needed - should we deprecate this ?
- blur: function(){
- // summary:
- // Remove focus from this instance.
- // tags:
- // deprecated
- if(!dojo.isIE && this.window.document.documentElement && this.window.document.documentElement.focus){
- this.window.document.documentElement.focus();
- }else if(dojo.doc.body.focus){
- dojo.doc.body.focus();
- }
- },
-
- focus: function(){
- // summary:
- // Move focus to this editor
- if(!dojo.isIE){
- dijit.focus(this.iframe);
- if(this._cursorToStart){
- delete this._cursorToStart;
- if(this.editNode.childNodes &&
- this.editNode.childNodes.length === 1 &&
- this.editNode.innerHTML === " "){
- this.placeCursorAtStart();
- }
- }
- }else if(this.editNode && this.editNode.focus){
- // editNode may be hidden in display:none div, lets just punt in this case
- //this.editNode.focus(); -> causes IE to scroll always (strict and quirks mode) to the top the Iframe
- // if we fire the event manually and let the browser handle the focusing, the latest
- // cursor position is focused like in FF
- this.iframe.fireEvent('onfocus', document.createEventObject()); // createEventObject only in IE
- // }else{
- // TODO: should we throw here?
- // console.debug("Have no idea how to focus into the editor!");
- }
- },
-
- // _lastUpdate: 0,
- updateInterval: 200,
- _updateTimer: null,
- onDisplayChanged: function(/*Event*/ e){
- // summary:
- // This event will be fired everytime the display context
- // changes and the result needs to be reflected in the UI.
- // description:
- // If you don't want to have update too often,
- // onNormalizedDisplayChanged should be used instead
- // tags:
- // private
-
- // var _t=new Date();
- if(this._updateTimer){
- clearTimeout(this._updateTimer);
- }
- if(!this._updateHandler){
- this._updateHandler = dojo.hitch(this,"onNormalizedDisplayChanged");
- }
- this._updateTimer = setTimeout(this._updateHandler, this.updateInterval);
- },
- onNormalizedDisplayChanged: function(){
- // summary:
- // This event is fired every updateInterval ms or more
- // description:
- // If something needs to happen immediately after a
- // user change, please use onDisplayChanged instead.
- // tags:
- // private
- delete this._updateTimer;
- },
- onChange: function(newContent){
- // summary:
- // This is fired if and only if the editor loses focus and
- // the content is changed.
- },
- _normalizeCommand: function(/*String*/ cmd, /*Anything?*/argument){
- // summary:
- // Used as the advice function by dojo.connect to map our
- // normalized set of commands to those supported by the target
- // browser.
- // tags:
- // private
-
- var command = cmd.toLowerCase();
- if(command == "formatblock"){
- if(dojo.isSafari && argument === undefined){ command = "heading"; }
- }else if(command == "hilitecolor" && !dojo.isMoz){
- command = "backcolor";
- }
-
- return command;
- },
-
- _qcaCache: {},
- queryCommandAvailable: function(/*String*/ command){
- // summary:
- // Tests whether a command is supported by the host. Clients
- // SHOULD check whether a command is supported before attempting
- // to use it, behaviour for unsupported commands is undefined.
- // command:
- // The command to test for
- // tags:
- // private
-
- // memoizing version. See _queryCommandAvailable for computing version
- var ca = this._qcaCache[command];
- if(ca !== undefined){ return ca; }
- return (this._qcaCache[command] = this._queryCommandAvailable(command));
- },
-
- _queryCommandAvailable: function(/*String*/ command){
- // summary:
- // See queryCommandAvailable().
- // tags:
- // private
-
- var ie = 1;
- var mozilla = 1 << 1;
- var webkit = 1 << 2;
- var opera = 1 << 3;
- var webkit420 = 1 << 4;
-
- function isSupportedBy(browsers){
- return {
- ie: Boolean(browsers & ie),
- mozilla: Boolean(browsers & mozilla),
- webkit: Boolean(browsers & webkit),
- webkit420: Boolean(browsers & webkit420),
- opera: Boolean(browsers & opera)
- };
- }
-
- var supportedBy = null;
-
- switch(command.toLowerCase()){
- case "bold": case "italic": case "underline":
- case "subscript": case "superscript":
- case "fontname": case "fontsize":
- case "forecolor": case "hilitecolor":
- case "justifycenter": case "justifyfull": case "justifyleft":
- case "justifyright": case "delete": case "selectall": case "toggledir":
- supportedBy = isSupportedBy(mozilla | ie | webkit | opera);
- break;
-
- case "createlink": case "unlink": case "removeformat":
- case "inserthorizontalrule": case "insertimage":
- case "insertorderedlist": case "insertunorderedlist":
- case "indent": case "outdent": case "formatblock":
- case "inserthtml": case "undo": case "redo": case "strikethrough": case "tabindent":
- supportedBy = isSupportedBy(mozilla | ie | opera | webkit420);
- break;
-
- case "blockdirltr": case "blockdirrtl":
- case "dirltr": case "dirrtl":
- case "inlinedirltr": case "inlinedirrtl":
- supportedBy = isSupportedBy(ie);
- break;
- case "cut": case "copy": case "paste":
- supportedBy = isSupportedBy( ie | mozilla | webkit420);
- break;
-
- case "inserttable":
- supportedBy = isSupportedBy(mozilla | ie);
- break;
-
- case "insertcell": case "insertcol": case "insertrow":
- case "deletecells": case "deletecols": case "deleterows":
- case "mergecells": case "splitcell":
- supportedBy = isSupportedBy(ie | mozilla);
- break;
-
- default: return false;
- }
-
- return (dojo.isIE && supportedBy.ie) ||
- (dojo.isMoz && supportedBy.mozilla) ||
- (dojo.isWebKit && supportedBy.webkit) ||
- (dojo.isWebKit > 420 && supportedBy.webkit420) ||
- (dojo.isOpera && supportedBy.opera); // Boolean return true if the command is supported, false otherwise
- },
-
- execCommand: function(/*String*/ command, argument){
- // summary:
- // Executes a command in the Rich Text area
- // command:
- // The command to execute
- // argument:
- // An optional argument to the command
- // tags:
- // protected
- var returnValue;
-
- //focus() is required for IE to work
- //In addition, focus() makes sure after the execution of
- //the command, the editor receives the focus as expected
- this.focus();
-
- command = this._normalizeCommand(command, argument);
-
-
- if(argument !== undefined){
- if(command == "heading"){
- throw new Error("unimplemented");
- }else if((command == "formatblock") && dojo.isIE){
- argument = '<'+argument+'>';
- }
- }
-
- //Check to see if we have any over-rides for commands, they will be functions on this
- //widget of the form _commandImpl. If we don't, fall through to the basic native
- //exec command of the browser.
- var implFunc = "_" + command + "Impl";
- if(this[implFunc]){
- returnValue = this[implFunc](argument);
- }else{
- argument = arguments.length > 1 ? argument : null;
- if(argument || command!="createlink"){
- returnValue = this.document.execCommand(command, false, argument);
- }
- }
-
- this.onDisplayChanged();
- return returnValue;
- },
-
- queryCommandEnabled: function(/*String*/ command){
- // summary:
- // Check whether a command is enabled or not.
- // tags:
- // protected
- if(this.disabled || !this._disabledOK){ return false; }
- command = this._normalizeCommand(command);
- if(dojo.isMoz || dojo.isWebKit){
- if(command == "unlink"){ // mozilla returns true always
- // console.debug(this._sCall("hasAncestorElement", ['a']));
- return this._sCall("hasAncestorElement", ["a"]);
- }else if(command == "inserttable"){
- return true;
- }
- }
- //see #4109
- if(dojo.isWebKit){
- if(command == "copy"){
- command = "cut";
- }else if(command == "paste"){
- return true;
- }
- }
-
- var elem = dojo.isIE ? this.document.selection.createRange() : this.document;
- try{
- return elem.queryCommandEnabled(command);
- }catch(e){
- //Squelch, occurs if editor is hidden on FF 3 (and maybe others.)
- return false;
- }
-
- },
-
- queryCommandState: function(command){
- // summary:
- // Check the state of a given command and returns true or false.
- // tags:
- // protected
-
- if(this.disabled || !this._disabledOK){ return false; }
- command = this._normalizeCommand(command);
- try{
- return this.document.queryCommandState(command);
- }catch(e){
- //Squelch, occurs if editor is hidden on FF 3 (and maybe others.)
- return false;
- }
- },
-
- queryCommandValue: function(command){
- // summary:
- // Check the value of a given command. This matters most for
- // custom selections and complex values like font value setting.
- // tags:
- // protected
-
- if(this.disabled || !this._disabledOK){ return false; }
- var r;
- command = this._normalizeCommand(command);
- if(dojo.isIE && command == "formatblock"){
- r = this._native2LocalFormatNames[this.document.queryCommandValue(command)];
- }else if(dojo.isMoz && command === "hilitecolor"){
- var oldValue;
- try{
- oldValue = this.document.queryCommandValue("styleWithCSS");
- }catch(e){
- oldValue = false;
- }
- this.document.execCommand("styleWithCSS", false, true);
- r = this.document.queryCommandValue(command);
- this.document.execCommand("styleWithCSS", false, oldValue);
- }else{
- r = this.document.queryCommandValue(command);
- }
- return r;
- },
-
- // Misc.
-
- _sCall: function(name, args){
- // summary:
- // Run the named method of dijit._editor.selection over the
- // current editor instance's window, with the passed args.
- // tags:
- // private
- return dojo.withGlobal(this.window, name, dijit._editor.selection, args);
- },
-
- // FIXME: this is a TON of code duplication. Why?
-
- placeCursorAtStart: function(){
- // summary:
- // Place the cursor at the start of the editing area.
- // tags:
- // private
-
- this.focus();
-
- //see comments in placeCursorAtEnd
- var isvalid=false;
- if(dojo.isMoz){
- // TODO: Is this branch even necessary?
- var first=this.editNode.firstChild;
- while(first){
- if(first.nodeType == 3){
- if(first.nodeValue.replace(/^\s+|\s+$/g, "").length>0){
- isvalid=true;
- this._sCall("selectElement", [ first ]);
- break;
- }
- }else if(first.nodeType == 1){
- isvalid=true;
- var tg = first.tagName ? first.tagName.toLowerCase() : "";
- // Collapse before childless tags.
- if(/br|input|img|base|meta|area|basefont/.test(tg)){
- this._sCall("selectElement", [ first ]);
- }else{
- // Collapse inside tags with children.
- this._sCall("selectElementChildren", [ first ]);
- }
- break;
- }
- first = first.nextSibling;
- }
- }else{
- isvalid=true;
- this._sCall("selectElementChildren", [ this.editNode ]);
- }
- if(isvalid){
- this._sCall("collapse", [ true ]);
- }
- },
-
- placeCursorAtEnd: function(){
- // summary:
- // Place the cursor at the end of the editing area.
- // tags:
- // private
-
- this.focus();
-
- //In mozilla, if last child is not a text node, we have to use
- // selectElementChildren on this.editNode.lastChild otherwise the
- // cursor would be placed at the end of the closing tag of
- //this.editNode.lastChild
- var isvalid=false;
- if(dojo.isMoz){
- var last=this.editNode.lastChild;
- while(last){
- if(last.nodeType == 3){
- if(last.nodeValue.replace(/^\s+|\s+$/g, "").length>0){
- isvalid=true;
- this._sCall("selectElement", [ last ]);
- break;
- }
- }else if(last.nodeType == 1){
- isvalid=true;
- if(last.lastChild){
- this._sCall("selectElement", [ last.lastChild ]);
- }else{
- this._sCall("selectElement", [ last ]);
- }
- break;
- }
- last = last.previousSibling;
- }
- }else{
- isvalid=true;
- this._sCall("selectElementChildren", [ this.editNode ]);
- }
- if(isvalid){
- this._sCall("collapse", [ false ]);
- }
- },
-
- getValue: function(/*Boolean?*/ nonDestructive){
- // summary:
- // Return the current content of the editing area (post filters
- // are applied). Users should call attr('value') instead.
- // nonDestructive:
- // defaults to false. Should the post-filtering be run over a copy
- // of the live DOM? Most users should pass "true" here unless they
- // *really* know that none of the installed filters are going to
- // mess up the editing session.
- // tags:
- // private
- if(this.textarea){
- if(this.isClosed || !this.isLoaded){
- return this.textarea.value;
- }
- }
-
- return this._postFilterContent(null, nonDestructive);
- },
- _getValueAttr: function(){
- // summary:
- // Hook to make attr("value") work
- return this.getValue(true);
- },
-
- setValue: function(/*String*/ html){
- // summary:
- // This function sets the content. No undo history is preserved.
- // Users should use attr('value', ...) instead.
- // tags:
- // deprecated
-
- // TODO: remove this and getValue() for 2.0, and move code to _setValueAttr()
-
- if(!this.isLoaded){
- // try again after the editor is finished loading
- this.onLoadDeferred.addCallback(dojo.hitch(this, function(){
- this.setValue(html);
- }));
- return;
- }
- if(this.textarea && (this.isClosed || !this.isLoaded)){
- this.textarea.value=html;
- }else{
- html = this._preFilterContent(html);
- var node = this.isClosed ? this.domNode : this.editNode;
-
- // Use to avoid webkit problems where editor is disabled until the user clicks it
- if(!html && dojo.isWebKit){
- this._cursorToStart = true;
- html = " ";
- }
- node.innerHTML = html;
- this._preDomFilterContent(node);
- }
- this.onDisplayChanged();
- },
-
- replaceValue: function(/*String*/ html){
- // summary:
- // This function set the content while trying to maintain the undo stack
- // (now only works fine with Moz, this is identical to setValue in all
- // other browsers)
- // tags:
- // protected
-
- if(this.isClosed){
- this.setValue(html);
- }else if(this.window && this.window.getSelection && !dojo.isMoz){ // Safari
- // look ma! it's a totally f'd browser!
- this.setValue(html);
- }else if(this.window && this.window.getSelection){ // Moz
- html = this._preFilterContent(html);
- this.execCommand("selectall");
- if(!html){
- this._cursorToStart = true;
- html = " ";
- }
- this.execCommand("inserthtml", html);
- this._preDomFilterContent(this.editNode);
- }else if(this.document && this.document.selection){//IE
- //In IE, when the first element is not a text node, say
- //an <a> tag, when replacing the content of the editing
- //area, the <a> tag will be around all the content
- //so for now, use setValue for IE too
- this.setValue(html);
- }
- },
-
- _preFilterContent: function(/*String*/ html){
- // summary:
- // Filter the input before setting the content of the editing
- // area. DOM pre-filtering may happen after this
- // string-based filtering takes place but as of 1.2, this is not
- // guaranteed for operations such as the inserthtml command.
- // tags:
- // private
-
- var ec = html;
- dojo.forEach(this.contentPreFilters, function(ef){ if(ef){ ec = ef(ec); } });
- return ec;
- },
- _preDomFilterContent: function(/*DomNode*/ dom){
- // summary:
- // filter the input's live DOM. All filter operations should be
- // considered to be "live" and operating on the DOM that the user
- // will be interacting with in their editing session.
- // tags:
- // private
- dom = dom || this.editNode;
- dojo.forEach(this.contentDomPreFilters, function(ef){
- if(ef && dojo.isFunction(ef)){
- ef(dom);
- }
- }, this);
- },
-
- _postFilterContent: function(
- /*DomNode|DomNode[]|String?*/ dom,
- /*Boolean?*/ nonDestructive){
- // summary:
- // filter the output after getting the content of the editing area
- //
- // description:
- // post-filtering allows plug-ins and users to specify any number
- // of transforms over the editor's content, enabling many common
- // use-cases such as transforming absolute to relative URLs (and
- // vice-versa), ensuring conformance with a particular DTD, etc.
- // The filters are registered in the contentDomPostFilters and
- // contentPostFilters arrays. Each item in the
- // contentDomPostFilters array is a function which takes a DOM
- // Node or array of nodes as its only argument and returns the
- // same. It is then passed down the chain for further filtering.
- // The contentPostFilters array behaves the same way, except each
- // member operates on strings. Together, the DOM and string-based
- // filtering allow the full range of post-processing that should
- // be necessaray to enable even the most agressive of post-editing
- // conversions to take place.
- //
- // If nonDestructive is set to "true", the nodes are cloned before
- // filtering proceeds to avoid potentially destructive transforms
- // to the content which may still needed to be edited further.
- // Once DOM filtering has taken place, the serialized version of
- // the DOM which is passed is run through each of the
- // contentPostFilters functions.
- //
- // dom:
- // a node, set of nodes, which to filter using each of the current
- // members of the contentDomPostFilters and contentPostFilters arrays.
- //
- // nonDestructive:
- // defaults to "false". If true, ensures that filtering happens on
- // a clone of the passed-in content and not the actual node
- // itself.
- //
- // tags:
- // private
-
- var ec;
- if(!dojo.isString(dom)){
- dom = dom || this.editNode;
- if(this.contentDomPostFilters.length){
- if(nonDestructive){
- dom = dojo.clone(dom);
- }
- dojo.forEach(this.contentDomPostFilters, function(ef){
- dom = ef(dom);
- });
- }
- ec = dijit._editor.getChildrenHtml(dom);
- }else{
- ec = dom;
- }
-
- if(!dojo.trim(ec.replace(/^\xA0\xA0*/, '').replace(/\xA0\xA0*$/, '')).length){
- ec = "";
- }
-
- // if(dojo.isIE){
- // //removing appended <P> </P> for IE
- // ec = ec.replace(/(?:<p> </p>[\n\r]*)+$/i,"");
- // }
- dojo.forEach(this.contentPostFilters, function(ef){
- ec = ef(ec);
- });
-
- return ec;
- },
-
- _saveContent: function(/*Event*/ e){
- // summary:
- // Saves the content in an onunload event if the editor has not been closed
- // tags:
- // private
-
- var saveTextarea = dojo.byId(dijit._scopeName + "._editor.RichText.savedContent");
- if(saveTextarea.value){
- saveTextarea.value += this._SEPARATOR;
- }
- saveTextarea.value += this.name + ":" + this.getValue(true);
- },
-
-
- escapeXml: function(/*String*/ str, /*Boolean*/ noSingleQuotes){
- // summary:
- // Adds escape sequences for special characters in XML: &<>"'
- // Optionally skips escapes for single quotes
- // tags:
- // private
-
- str = str.replace(/&/gm, "&").replace(/</gm, "<").replace(/>/gm, ">").replace(/"/gm, """);
- if(!noSingleQuotes){
- str = str.replace(/'/gm, "'");
- }
- return str; // string
- },
-
- getNodeHtml: function(/* DomNode */ node){
- // summary:
- // Deprecated. Use dijit._editor._getNodeHtml() instead.
- // tags:
- // deprecated
- dojo.deprecated('dijit.Editor::getNodeHtml is deprecated','use dijit._editor.getNodeHtml instead', 2);
- return dijit._editor.getNodeHtml(node); // String
- },
-
- getNodeChildrenHtml: function(/* DomNode */ dom){
- // summary:
- // Deprecated. Use dijit._editor.getChildrenHtml() instead.
- // tags:
- // deprecated
- dojo.deprecated('dijit.Editor::getNodeChildrenHtml is deprecated','use dijit._editor.getChildrenHtml instead', 2);
- return dijit._editor.getChildrenHtml(dom);
- },
-
- close: function(/*Boolean*/ save){
- // summary:
- // Kills the editor and optionally writes back the modified contents to the
- // element from which it originated.
- // save:
- // Whether or not to save the changes. If false, the changes are discarded.
- // tags:
- // private
-
- if(this.isClosed){return false; }
-
- if(!arguments.length){ save = true; }
- this._content = this.getValue();
- var changed = (this.savedContent != this._content);
-
- // line height is squashed for iframes
- // FIXME: why was this here? if (this.iframe){ this.domNode.style.lineHeight = null; }
-
- if(this.interval){ clearInterval(this.interval); }
-
- if(this._webkitListener){
- //Cleaup of WebKit fix: #9532
- this.disconnect(this._webkitListener);
- delete this._webkitListener;
- }
-
- // Guard against memory leaks on IE (see #9268)
- if(dojo.isIE){
- this.iframe.onfocus = null;
- }
- this.iframe._loadFunc = null;
-
- if(this._iframeRegHandle){
- dijit.unregisterIframe(this._iframeRegHandle);
- delete this._iframeRegHandle;
- }
-
- if(this.textarea){
- var s = this.textarea.style;
- s.position = "";
- s.left = s.top = "";
- if(dojo.isIE){
- s.overflow = this.__overflow;
- this.__overflow = null;
- }
- this.textarea.value = save ? this._content : this.savedContent;
- dojo.destroy(this.domNode);
- this.domNode = this.textarea;
- }else{
- // if(save){
- // why we treat moz differently? comment out to fix #1061
- // if(dojo.isMoz){
- // var nc = dojo.doc.createElement("span");
- // this.domNode.appendChild(nc);
- // nc.innerHTML = this.editNode.innerHTML;
- // }else{
- // this.domNode.innerHTML = this._content;
- // }
- // }
-
- // Note that this destroys the iframe
- this.domNode.innerHTML = save ? this._content : this.savedContent;
- }
- delete this.iframe;
-
- dojo.removeClass(this.domNode, "RichTextEditable");
- this.isClosed = true;
- this.isLoaded = false;
-
- delete this.editNode;
- delete this.focusNode;
-
- if(this.window && this.window._frameElement){
- this.window._frameElement = null;
- }
-
- this.window = null;
- this.document = null;
- this.editingArea = null;
- this.editorObject = null;
-
- return changed; // Boolean: whether the content has been modified
- },
-
- destroy: function(){
- if(!this.isClosed){ this.close(false); }
- this.inherited(arguments);
- },
-
- _removeMozBogus: function(/* String */ html){
- // summary:
- // Post filter to remove unwanted HTML attributes generated by mozilla
- // tags:
- // private
- return html.replace(/\stype="_moz"/gi, '').replace(/\s_moz_dirty=""/gi, '').replace(/_moz_resizing="(true|false)"/gi,''); // String
- },
- _removeWebkitBogus: function(/* String */ html){
- // summary:
- // Post filter to remove unwanted HTML attributes generated by webkit
- // tags:
- // private
- html = html.replace(/\sclass="webkit-block-placeholder"/gi, '');
- html = html.replace(/\sclass="apple-style-span"/gi, '');
- return html; // String
- },
- _normalizeFontStyle: function(/* String */ html){
- // summary:
- // Convert <strong> and <em> to <b> and <i>.
- // description:
- // Moz can not handle strong/em tags correctly, so to help
- // mozilla and also to normalize output, convert them to <b> and <i>.
- //
- // Note the IE generates <strong> and <em> rather than <b> and <i>
- // tags:
- // private
- return html.replace(/<(\/)?strong([ \>])/gi, '<$1b$2')
- .replace(/<(\/)?em([ \>])/gi, '<$1i$2' ); // String
- },
-
- _preFixUrlAttributes: function(/* String */ html){
- // summary:
- // Pre-filter to do fixing to href attributes on <a> and <img> tags
- // tags:
- // private
- return html.replace(/(?:(<a(?=\s).*?\shref=)("|')(.*?)\2)|(?:(<a\s.*?href=)([^"'][^ >]+))/gi,
- '$1$4$2$3$5$2 _djrealurl=$2$3$5$2')
- .replace(/(?:(<img(?=\s).*?\ssrc=)("|')(.*?)\2)|(?:(<img\s.*?src=)([^"'][^ >]+))/gi,
- '$1$4$2$3$5$2 _djrealurl=$2$3$5$2'); // String
- },
-
- /*****************************************************************************
- The following functions implement HTML manipulation commands for various
- browser/contentEditable implementations. The goal of them is to enforce
- standard behaviors of them.
- ******************************************************************************/
-
- _inserthorizontalruleImpl: function(argument){
- // summary:
- // This function implements the insertion of HTML <HR> tags.
- // into a point on the page. IE doesn't to it right, so
- // we have to use an alternate form
- // argument:
- // arguments to the exec command, if any.
- // tags:
- // protected
- if(dojo.isIE){
- return this._inserthtmlImpl("<hr>");
- }
- return this.document.execCommand("inserthorizontalrule", false, argument);
- },
-
- _unlinkImpl: function(argument){
- // summary:
- // This function implements the unlink of an <a> tag.
- // argument:
- // arguments to the exec command, if any.
- // tags:
- // protected
- if((this.queryCommandEnabled("unlink")) && (dojo.isMoz || dojo.isWebKit)){
- var a = this._sCall("getAncestorElement", [ "a" ]);
- this._sCall("selectElement", [ a ]);
- return this.document.execCommand("unlink", false, null);
- }
- return this.document.execCommand("unlink", false, argument);
- },
-
- _hilitecolorImpl: function(argument){
- // summary:
- // This function implements the hilitecolor command
- // argument:
- // arguments to the exec command, if any.
- // tags:
- // protected
- var returnValue;
- if(dojo.isMoz){
- // mozilla doesn't support hilitecolor properly when useCSS is
- // set to false (bugzilla #279330)
- this.document.execCommand("styleWithCSS", false, true);
- returnValue = this.document.execCommand("hilitecolor", false, argument);
- this.document.execCommand("styleWithCSS", false, false);
- }else{
- returnValue = this.document.execCommand("hilitecolor", false, argument);
- }
- return returnValue;
- },
-
- _backcolorImpl: function(argument){
- // summary:
- // This function implements the backcolor command
- // argument:
- // arguments to the exec command, if any.
- // tags:
- // protected
- if(dojo.isIE){
- // Tested under IE 6 XP2, no problem here, comment out
- // IE weirdly collapses ranges when we exec these commands, so prevent it
- // var tr = this.document.selection.createRange();
- argument = argument ? argument : null;
- }
- return this.document.execCommand("backcolor", false, argument);
- },
-
- _forecolorImpl: function(argument){
- // summary:
- // This function implements the forecolor command
- // argument:
- // arguments to the exec command, if any.
- // tags:
- // protected
- if(dojo.isIE){
- // Tested under IE 6 XP2, no problem here, comment out
- // IE weirdly collapses ranges when we exec these commands, so prevent it
- // var tr = this.document.selection.createRange();
- argument = argument? argument : null;
- }
- return this.document.execCommand("forecolor", false, argument);
- },
-
- _inserthtmlImpl: function(argument){
- // summary:
- // This function implements the insertion of HTML content into
- // a point on the page.
- // argument:
- // The content to insert, if any.
- // tags:
- // protected
- argument = this._preFilterContent(argument);
- var rv = true;
- if(dojo.isIE){
- var insertRange = this.document.selection.createRange();
- if(this.document.selection.type.toUpperCase() == 'CONTROL'){
- var n=insertRange.item(0);
- while(insertRange.length){
- insertRange.remove(insertRange.item(0));
- }
- n.outerHTML=argument;
- }else{
- insertRange.pasteHTML(argument);
- }
- insertRange.select();
- //insertRange.collapse(true);
- }else if(dojo.isMoz && !argument.length){
- //mozilla can not inserthtml an empty html to delete current selection
- //so we delete the selection instead in this case
- this._sCall("remove"); // FIXME
- }else{
- rv = this.document.execCommand("inserthtml", false, argument);
- }
- return rv;
- }
-});
-
-}
diff --git a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/_editor/_Plugin.js b/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/_editor/_Plugin.js
deleted file mode 100644
index ffcd59f..0000000
--- a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/_editor/_Plugin.js
+++ /dev/null
@@ -1,182 +0,0 @@
-/*
- Copyright (c) 2004-2009, The Dojo Foundation All Rights Reserved.
- Available via Academic Free License >= 2.1 OR the modified BSD license.
- see: http://dojotoolkit.org/license for details
-*/
-
-
-if(!dojo._hasResource["dijit._editor._Plugin"]){ //_hasResource checks added by build. Do not use _hasResource directly in your code.
-dojo._hasResource["dijit._editor._Plugin"] = true;
-dojo.provide("dijit._editor._Plugin");
-dojo.require("dijit._Widget");
-dojo.require("dijit.Editor");
-dojo.require("dijit.form.Button");
-
-dojo.declare("dijit._editor._Plugin", null, {
- // summary
- // Base class for a "plugin" to the editor, which is usually
- // a single button on the Toolbar and some associated code
-
- constructor: function(/*Object?*/args, /*DomNode?*/node){
- this.params = args || {};
- dojo.mixin(this, this.params);
- this._connects=[];
- },
-
- // editor: [const] dijit.Editor
- // Points to the parent editor
- editor: null,
-
- // iconClassPrefix: [const] String
- // The CSS class name for the button node is formed from `iconClassPrefix` and `command`
- iconClassPrefix: "dijitEditorIcon",
-
- // button: dijit._Widget?
- // Pointer to `dijit.form.Button` or other widget (ex: `dijit.form.FilteringSelect`)
- // that is added to the toolbar to control this plugin.
- // If not specified, will be created on initialization according to `buttonClass`
- button: null,
-
- // command: String
- // String like "insertUnorderedList", "outdent", "justifyCenter", etc. that represents an editor command.
- // Passed to editor.execCommand() if `useDefaultCommand` is true.
- command: "",
-
- // useDefaultCommand: Boolean
- // If true, this plugin executes by calling Editor.execCommand() with the argument specified in `command`.
- useDefaultCommand: true,
-
- // buttonClass: Widget Class
- // Class of widget (ex: dijit.form.Button or dijit.form.FilteringSelect)
- // that is added to the toolbar to control this plugin.
- // This is used to instantiate the button, unless `button` itself is specified directly.
- buttonClass: dijit.form.Button,
-
- getLabel: function(/*String*/key){
- // summary:
- // Returns the label to use for the button
- // tags:
- // private
- return this.editor.commands[key]; // String
- },
-
- _initButton: function(){
- // summary:
- // Initialize the button or other widget that will control this plugin.
- // This code only works for plugins controlling built-in commands in the editor.
- // tags:
- // protected extension
- if(this.command.length){
- var label = this.getLabel(this.command);
- var className = this.iconClassPrefix+" "+this.iconClassPrefix + this.command.charAt(0).toUpperCase() + this.command.substr(1);
- if(!this.button){
- var props = dojo.mixin({
- label: label,
- showLabel: false,
- iconClass: className,
- dropDown: this.dropDown,
- tabIndex: "-1"
- }, this.params || {});
- this.button = new this.buttonClass(props);
- }
- }
- },
-
- destroy: function(){
- // summary:
- // Destroy this plugin
-
- dojo.forEach(this._connects, dojo.disconnect);
- if(this.dropDown){
- this.dropDown.destroyRecursive();
- }
- },
-
- connect: function(o, f, tf){
- // summary:
- // Make a dojo.connect() that is automatically disconnected when this plugin is destroyed.
- // Similar to `dijit._Widget.connect`.
- // tags:
- // protected
- this._connects.push(dojo.connect(o, f, this, tf));
- },
-
- updateState: function(){
- // summary:
- // Change state of the plugin to respond to events in the editor.
- // description:
- // This is called on meaningful events in the editor, such as change of selection
- // or caret position (but not simple typing of alphanumeric keys). It gives the
- // plugin a chance to update the CSS of its button.
- //
- // For example, the "bold" plugin will highlight/unhighlight the bold button depending on whether the
- // characters next to the caret are bold or not.
- //
- // Only makes sense when `useDefaultCommand` is true, as it calls Editor.queryCommandEnabled(`command`).
- var e = this.editor,
- c = this.command,
- checked, enabled;
- if(!e || !e.isLoaded || !c.length){ return; }
- if(this.button){
- try{
- enabled = e.queryCommandEnabled(c);
- if(this.enabled !== enabled){
- this.enabled = enabled;
- this.button.attr('disabled', !enabled);
- }
- if(typeof this.button.checked == 'boolean'){
- checked = e.queryCommandState(c);
- if(this.checked !== checked){
- this.checked = checked;
- this.button.attr('checked', e.queryCommandState(c));
- }
- }
- }catch(e){
- console.log(e); // FIXME: we shouldn't have debug statements in our code. Log as an error?
- }
- }
- },
-
- setEditor: function(/*dijit.Editor*/ editor){
- // summary:
- // Tell the plugin which Editor it is associated with.
-
- // TODO: refactor code to just pass editor to constructor.
-
- // FIXME: detach from previous editor!!
- this.editor = editor;
-
- // FIXME: prevent creating this if we don't need to (i.e., editor can't handle our command)
- this._initButton();
-
- // FIXME: wire up editor to button here!
- if(this.command.length &&
- !this.editor.queryCommandAvailable(this.command)){
- // console.debug("hiding:", this.command);
- if(this.button){
- this.button.domNode.style.display = "none";
- }
- }
- if(this.button && this.useDefaultCommand){
- this.connect(this.button, "onClick",
- dojo.hitch(this.editor, "execCommand", this.command, this.commandArg)
- );
- }
- this.connect(this.editor, "onNormalizedDisplayChanged", "updateState");
- },
-
- setToolbar: function(/*dijit.Toolbar*/ toolbar){
- // summary:
- // Tell the plugin to add it's controller widget (often a button)
- // to the toolbar. Does nothing if there is no controller widget.
-
- // TODO: refactor code to just pass toolbar to constructor.
-
- if(this.button){
- toolbar.addChild(this.button);
- }
- // console.debug("adding", this.button, "to:", toolbar);
- }
-});
-
-}
diff --git a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/_editor/html.js b/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/_editor/html.js
deleted file mode 100644
index 43048a8..0000000
--- a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/_editor/html.js
+++ /dev/null
@@ -1,191 +0,0 @@
-/*
- Copyright (c) 2004-2009, The Dojo Foundation All Rights Reserved.
- Available via Academic Free License >= 2.1 OR the modified BSD license.
- see: http://dojotoolkit.org/license for details
-*/
-
-
-if(!dojo._hasResource["dijit._editor.html"]){ //_hasResource checks added by build. Do not use _hasResource directly in your code.
-dojo._hasResource["dijit._editor.html"] = true;
-dojo.provide("dijit._editor.html");
-
-dijit._editor.escapeXml=function(/*String*/str, /*Boolean?*/noSingleQuotes){
- // summary:
- // Adds escape sequences for special characters in XML: &<>"'
- // Optionally skips escapes for single quotes
- str = str.replace(/&/gm, "&").replace(/</gm, "<").replace(/>/gm, ">").replace(/"/gm, """);
- if(!noSingleQuotes){
- str = str.replace(/'/gm, "'");
- }
- return str; // string
-};
-
-dijit._editor.getNodeHtml=function(/* DomNode */node){
- var output;
- switch(node.nodeType){
- case 1: //element node
- var lName = node.nodeName.toLowerCase();
- if(lName.charAt(0) == "/"){
- // IE does some strange things with malformed HTML input, like
- // treating a close tag </span> without an open tag <span>, as
- // a new tag with tagName of /span. Corrupts output HTML, remove
- // them. Other browsers don't prefix tags that way, so will
- // never show up.
- return "";
- }
- output = '<' + lName;
-
- //store the list of attributes and sort it to have the
- //attributes appear in the dictionary order
- var attrarray = [];
- var attr;
- if(dojo.isIE && node.outerHTML){
- var s = node.outerHTML;
- s = s.substr(0, s.indexOf('>'))
- .replace(/(['"])[^"']*\1/g, ''); //to make the following regexp safe
- var reg = /(\b\w+)\s?=/g;
- var m, key;
- while((m = reg.exec(s))){
- key = m[1];
- if(key.substr(0,3) != '_dj'){
- if(key == 'src' || key == 'href'){
- if(node.getAttribute('_djrealurl')){
- attrarray.push([key,node.getAttribute('_djrealurl')]);
- continue;
- }
- }
- var val, match;
- switch(key){
- case 'style':
- val = node.style.cssText.toLowerCase();
- break;
- case 'class':
- val = node.className;
- break;
- case 'width':
- if(lName === "img"){
- // This somehow gets lost on IE for IMG tags and the like
- // and we have to find it in outerHTML, known IE oddity.
- match=/width=(\S+)/i.exec(s);
- if(match){
- val = match[1];
- }
- break;
- }
- case 'height':
- if(lName === "img"){
- // This somehow gets lost on IE for IMG tags and the like
- // and we have to find it in outerHTML, known IE oddity.
- match=/height=(\S+)/i.exec(s);
- if(match){
- val = match[1];
- }
- break;
- }
- default:
- val = node.getAttribute(key);
- }
- if(val != null){
- attrarray.push([key, val.toString()]);
- }
- }
- }
- }else{
- var i = 0;
- while((attr = node.attributes[i++])){
- //ignore all attributes starting with _dj which are
- //internal temporary attributes used by the editor
- var n = attr.name;
- if(n.substr(0,3) != '_dj' /*&&
- (attr.specified == undefined || attr.specified)*/){
- var v = attr.value;
- if(n == 'src' || n == 'href'){
- if(node.getAttribute('_djrealurl')){
- v = node.getAttribute('_djrealurl');
- }
- }
- attrarray.push([n,v]);
- }
- }
- }
- attrarray.sort(function(a,b){
- return a[0] < b[0] ? -1 : (a[0] == b[0] ? 0 : 1);
- });
- var j = 0;
- while((attr = attrarray[j++])){
- output += ' ' + attr[0] + '="' +
- (dojo.isString(attr[1]) ? dijit._editor.escapeXml(attr[1], true) : attr[1]) + '"';
- }
- if(lName === "script"){
- // Browsers handle script tags differently in how you get content,
- // but innerHTML always seems to work, so insert its content that way
- // Yes, it's bad to allow script tags in the editor code, but some people
- // seem to want to do it, so we need to at least return them right.
- // other plugins/filters can strip them.
- output += '>' + node.innerHTML +'</' + lName + '>';
- }else{
- if(node.childNodes.length){
- output += '>' + dijit._editor.getChildrenHtml(node)+'</' + lName +'>';
- }else{
- switch(lName){
- case 'br':
- case 'hr':
- case 'img':
- case 'input':
- case 'base':
- case 'meta':
- case 'area':
- case 'basefont':
- // These should all be singly closed
- output += ' />';
- break;
- default:
- // Assume XML style separate closure for everything else.
- output += '></' + lName + '>';
- }
- }
- }
- break;
- case 4: // cdata
- case 3: // text
- // FIXME:
- output = dijit._editor.escapeXml(node.nodeValue, true);
- break;
- case 8: //comment
- // FIXME:
- output = '<!--' + dijit._editor.escapeXml(node.nodeValue, true) + '-->';
- break;
- default:
- output = "<!-- Element not recognized - Type: " + node.nodeType + " Name: " + node.nodeName + "-->";
- }
- return output;
-};
-
-dijit._editor.getChildrenHtml = function(/* DomNode */dom){
- // summary:
- // Returns the html content of a DomNode and children
- var out = "";
- if(!dom){ return out; }
- var nodes = dom["childNodes"] || dom;
-
- //IE issue.
- //If we have an actual node we can check parent relationships on for IE,
- //We should check, as IE sometimes builds invalid DOMS. If no parent, we can't check
- //And should just process it and hope for the best.
- var checkParent = !dojo.isIE || nodes !== dom;
-
- var node, i = 0;
- while((node = nodes[i++])){
- //IE is broken. DOMs are supposed to be a tree. But in the case of malformed HTML, IE generates a graph
- //meaning one node ends up with multiple references (multiple parents). This is totally wrong and invalid, but
- //such is what it is. We have to keep track and check for this because otherise the source output HTML will have dups.
- //No other browser generates a graph. Leave it to IE to break a fundamental DOM rule. So, we check the parent if we can
- //If we can't, nothing more we can do other than walk it.
- if(!checkParent || node.parentNode == dom){
- out += dijit._editor.getNodeHtml(node);
- }
- }
- return out; // String
-};
-
-}
diff --git a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/_editor/nls/FontChoice.js b/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/_editor/nls/FontChoice.js
deleted file mode 100644
index 71da48d..0000000
--- a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/_editor/nls/FontChoice.js
+++ /dev/null
@@ -1 +0,0 @@
-({"1":"xx-small","2":"x-small","formatBlock":"Format","3":"small","4":"medium","5":"large","6":"x-large","7":"xx-large","fantasy":"fantasy","serif":"serif","p":"Paragraph","pre":"Pre-formatted","sans-serif":"sans-serif","fontName":"Font","h1":"Heading","h2":"Subheading","h3":"Sub-subheading","monospace":"monospace","fontSize":"Size","cursive":"cursive"})
\ No newline at end of file
diff --git a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/_editor/nls/LinkDialog.js b/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/_editor/nls/LinkDialog.js
deleted file mode 100644
index 0dd81f1..0000000
--- a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/_editor/nls/LinkDialog.js
+++ /dev/null
@@ -1 +0,0 @@
-({"text":"Description:","insertImageTitle":"Image Properties","set":"Set","newWindow":"New Window","topWindow":"Topmost Window","target":"Target:","createLinkTitle":"Link Properties","parentWindow":"Parent Window","currentWindow":"Current Window","url":"URL:"})
\ No newline at end of file
diff --git a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/_editor/nls/ar/FontChoice.js b/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/_editor/nls/ar/FontChoice.js
deleted file mode 100644
index 78c3ed9..0000000
--- a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/_editor/nls/ar/FontChoice.js
+++ /dev/null
@@ -1 +0,0 @@
-({"1":"صغير جدا جدا","2":"صغير جدا","formatBlock":"النسق","3":"صغير","4":"متوسط","5":"كبير","6":"كبير جدا","7":"كبير جدا جدا","fantasy":"خيالي","serif":"serif","p":"فقرة","pre":"منسق بصفة مسبقة","sans-serif":"sans-serif","fontName":"طاقم طباعة","h1":"عنوان","h2":"عنوان فرعي","h3":"فرعي-عنوان فرعي","monospace":"أحادي المسافة","fontSize":"الحجم","cursive":"كتابة بحروف متصلة"})
\ No newline at end of file
diff --git a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/_editor/nls/ar/LinkDialog.js b/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/_editor/nls/ar/LinkDialog.js
deleted file mode 100644
index 8545531..0000000
--- a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/_editor/nls/ar/LinkDialog.js
+++ /dev/null
@@ -1 +0,0 @@
-({"set":"تحديد","text":"الوصف:","insertImageTitle":"خصائص الصورة","url":"عنوان URL:","createLinkTitle":"خصائص الوصلة","newWindow":"New Window","topWindow":"Topmost Window","target":"Target:","parentWindow":"Parent Window","currentWindow":"Current Window"})
\ No newline at end of file
diff --git a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/_editor/nls/ar/commands.js b/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/_editor/nls/ar/commands.js
deleted file mode 100644
index 23e83e7..0000000
--- a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/_editor/nls/ar/commands.js
+++ /dev/null
@@ -1 +0,0 @@
-({"removeFormat":"ازالة النسق","copy":"نسخ","paste":"لصق","selectAll":"اختيار كل","insertOrderedList":"كشف مرقم","insertTable":"ادراج/تحرير جدول","underline":"تسطير","foreColor":"لون الواجهة الأمامية","htmlToggle":"مصدر HTML","formatBlock":"نمط الفقرة","insertHorizontalRule":"مسطرة أفقية","delete":"حذف","insertUnorderedList":"كشف نقطي","tableProp":"خصائص الجدول","insertImage":"ادراج صورة","superscript":"رمز علوي","subscript":"رمز سفلي","createLink":"تكوين وصلة","undo":"تراجع","italic":"مائل","fontName":"اسم طاقم الطباعة","justifyLeft":"محاذاة الى اليسار","unlink":"ازالة وصلة","toggleTableBorder":"تبديل حدود الجدول","fontSize":"حجم طاقم الطباعة","systemShortcut":"يكون التصرف \"${0}\" متاحا فقط ببرنامج الاستعراض الخاص بك باستخدام المسار المختصر للوحة المفاتيح. استخدم ${1}.","indent":"ازاحة للداخل","redo":"اعادة","strikethrough":"تشطيب","justifyFull":"ضبط","justifyCenter":"محاذاة في الوسط","hiliteColor":"لون الخلفية","deleteTable":"حذف جدول","outdent":"ازاحة للخارج","cut":"قص","plainFormatBlock":"نمط الفقرة","toggleDir":"تبديل الاتجاه","bold":"عريض","tabIndent":"ازاحة علامة الجدولة للداخل","justifyRight":"محاذاة الى اليمين","print":"Print","newPage":"New Page","appleKey":"⌘${0}","fullScreen":"Toggle Full Screen","viewSource":"View HTML Source","ctrlKey":"ctrl+${0}"})
\ No newline at end of file
diff --git a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/_editor/nls/ca/FontChoice.js b/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/_editor/nls/ca/FontChoice.js
deleted file mode 100644
index 8d3dabe..0000000
--- a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/_editor/nls/ca/FontChoice.js
+++ /dev/null
@@ -1 +0,0 @@
-({"1":"xx-petit","2":"x-petit","formatBlock":"Format","3":"petit","4":"mitjà","5":"gran","6":"x-gran","7":"xx-gran","fantasy":"Fantasia","serif":"serif","p":"Paràgraf","pre":"Format previ","sans-serif":"sans-serif","fontName":"Tipus de lletra","h1":"Títol","h2":"Subtítol","h3":"Subsubtítol","monospace":"monoespai","fontSize":"Mida","cursive":"Cursiva"})
\ No newline at end of file
diff --git a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/_editor/nls/ca/LinkDialog.js b/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/_editor/nls/ca/LinkDialog.js
deleted file mode 100644
index 7b3aa02..0000000
--- a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/_editor/nls/ca/LinkDialog.js
+++ /dev/null
@@ -1 +0,0 @@
-({"set":"Defineix","text":"Descripció:","insertImageTitle":"Propietats de la imatge","url":"URL:","createLinkTitle":"Propietats de l'enllaç","newWindow":"New Window","topWindow":"Topmost Window","target":"Target:","parentWindow":"Parent Window","currentWindow":"Current Window"})
\ No newline at end of file
diff --git a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/_editor/nls/ca/commands.js b/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/_editor/nls/ca/commands.js
deleted file mode 100644
index aec09d8..0000000
--- a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/_editor/nls/ca/commands.js
+++ /dev/null
@@ -1 +0,0 @@
-({"removeFormat":"Elimina el format","copy":"Copia","paste":"Enganxa","selectAll":"Selecciona-ho tot","insertOrderedList":"Llista numerada","insertTable":"Insereix/edita la taula","underline":"Subratllat","foreColor":"Color de primer pla","htmlToggle":"Font HTML","formatBlock":"Estil de paràgraf","insertHorizontalRule":"Regle horitzontal","delete":"Suprimeix","insertUnorderedList":"Llista de vinyetes","tableProp":"Propietat de taula","insertImage":"Insereix imatge","superscript":"Superíndex","subscript":"Subíndex","createLink":"Crea un enllaç","undo":"Desfés","italic":"Cursiva","fontName":"Nom del tipus de lletra","justifyLeft":"Alinea a la esquerra","unlink":"Elimina l'enllaç","toggleTableBorder":"Inverteix els contorns de taula","ctrlKey":"control+${0}","fontSize":"Cos de la lletra","systemShortcut":"L'acció \"${0}\" és l'única disponible al navegador utilitzant una drecera del teclat. Utilitzeu ${1}.","indent":"Sagnat","redo":"Refés","strikethrough":"Ratllat","justifyFull":"Justifica","justifyCenter":"Centra","hiliteColor":"Color de fons","deleteTable":"Suprimeix la taula","outdent":"Sagna a l'esquerra","cut":"Retalla","plainFormatBlock":"Estil de paràgraf","toggleDir":"Inverteix la direcció","bold":"Negreta","tabIndent":"Sagnat","justifyRight":"Alinea a la dreta","print":"Print","newPage":"New Page","appleKey":"⌘${0}","fullScreen":"Toggle Full Screen","viewSource":"View HTML Source"})
\ No newline at end of file
diff --git a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/_editor/nls/commands.js b/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/_editor/nls/commands.js
deleted file mode 100644
index 582b782..0000000
--- a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/_editor/nls/commands.js
+++ /dev/null
@@ -1 +0,0 @@
-({"removeFormat":"Remove Format","copy":"Copy","paste":"Paste","selectAll":"Select All","insertOrderedList":"Numbered List","insertTable":"Insert/Edit Table","print":"Print","underline":"Underline","foreColor":"Foreground Color","htmlToggle":"HTML Source","formatBlock":"Paragraph Style","newPage":"New Page","insertHorizontalRule":"Horizontal Rule","delete":"Delete","appleKey":"⌘${0}","insertUnorderedList":"Bullet List","tableProp":"Table Property","insertImage":"Insert Image","superscript":"Superscript","subscript":"Subscript","createLink":"Create Link","undo":"Undo","fullScreen":"Toggle Full Screen","italic":"Italic","fontName":"Font Name","justifyLeft":"Align Left","unlink":"Remove Link","toggleTableBorder":"Toggle Table Border","viewSource":"View HTML Source","ctrlKey":"ctrl+${0}","fontSize":"Font Size","systemShortcut":"The \"${0}\" action is only available in your browser using a keyboard shortcut. Use ${1}.","indent":"Indent","redo":"Redo","strikethrough":"Strikethrough","justifyFull":"Justify","justifyCenter":"Align Center","hiliteColor":"Background Color","deleteTable":"Delete Table","outdent":"Outdent","cut":"Cut","plainFormatBlock":"Paragraph Style","toggleDir":"Toggle Direction","bold":"Bold","tabIndent":"Tab Indent","justifyRight":"Align Right"})
\ No newline at end of file
diff --git a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/_editor/nls/cs/FontChoice.js b/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/_editor/nls/cs/FontChoice.js
deleted file mode 100644
index 4f82895..0000000
--- a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/_editor/nls/cs/FontChoice.js
+++ /dev/null
@@ -1 +0,0 @@
-({"1":"extra malé","2":"velmi malé","formatBlock":"Formát","3":"malé","4":"střední","5":"velké","6":"velmi velké","7":"extra velké","fantasy":"fantasy","serif":"serif","p":"Odstavec","pre":"Předformátované","sans-serif":"sans-serif","fontName":"Písmo","h1":"Nadpis","h2":"Podnadpis","h3":"Podnadpis 2","monospace":"monospace","fontSize":"Velikost","cursive":"cursive"})
\ No newline at end of file
diff --git a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/_editor/nls/cs/LinkDialog.js b/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/_editor/nls/cs/LinkDialog.js
deleted file mode 100644
index 41dad34..0000000
--- a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/_editor/nls/cs/LinkDialog.js
+++ /dev/null
@@ -1 +0,0 @@
-({"text":"Popis:","insertImageTitle":"Vlastnosti obrázku","set":"Nastavit","newWindow":"Nové okno","topWindow":"Okno nejvyšší úrovně","target":"Cíl:","createLinkTitle":"Vlastnosti odkazu","parentWindow":"Nadřízené okno","currentWindow":"Aktuální okno","url":"Adresa URL:"})
\ No newline at end of file
diff --git a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/_editor/nls/cs/commands.js b/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/_editor/nls/cs/commands.js
deleted file mode 100644
index ce51558..0000000
--- a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/_editor/nls/cs/commands.js
+++ /dev/null
@@ -1 +0,0 @@
-({"removeFormat":"Odebrat formát","copy":"Kopírovat","paste":"Vložit","selectAll":"Vybrat vše","insertOrderedList":"Číslovaný seznam","insertTable":"Vložit/upravit tabulku","print":"Tisk","underline":"Podtržení","foreColor":"Barva popředí","htmlToggle":"Zdroj HTML","formatBlock":"Styl odstavce","newPage":"Nová stránka","insertHorizontalRule":"Vodorovná čára","delete":"Odstranit","insertUnorderedList":"Seznam s odrážkami","tableProp":"Vlastnost tabulky","insertImage":"Vložit obrázek","superscript":"Horní index","subscript":"Dolní index","createLink":"Vytvořit odkaz","undo":"Zpět","fullScreen":"Přepnout režim celé obrazovky","italic":"Kurzíva","fontName":"Název písma","justifyLeft":"Zarovnat vlevo","unlink":"Odebrat odkaz","toggleTableBorder":"Přepnout ohraničení tabulky","viewSource":"Zobrazit zdroj ve formátu HTML","fontSize":"Velikost písma","systemShortcut":"Akce \"${0}\" je v prohlížeči dostupná pouze prostřednictvím klávesové zkratky. Použijte klávesovou zkratku ${1}.","indent":"Odsadit","redo":"Opakovat","strikethrough":"Přeškrtnutí","justifyFull":"Do bloku","justifyCenter":"Zarovnat na střed","hiliteColor":"Barva pozadí","deleteTable":"Odstranit tabulku","outdent":"Předsadit","cut":"Vyjmout","plainFormatBlock":"Styl odstavce","toggleDir":"Přepnout směr","bold":"Tučné","tabIndent":"Odsazení tabulátoru","justifyRight":"Zarovnat vpravo","appleKey":"⌘${0}","ctrlKey":"ctrl+${0}"})
\ No newline at end of file
diff --git a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/_editor/nls/da/FontChoice.js b/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/_editor/nls/da/FontChoice.js
deleted file mode 100644
index 2ecab08..0000000
--- a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/_editor/nls/da/FontChoice.js
+++ /dev/null
@@ -1 +0,0 @@
-({"1":"xx-small","2":"x-small","formatBlock":"Format","3":"small","4":"medium","5":"large","6":"x-large","7":"xx-large","fantasy":"fantasy","serif":"serif","p":"Afsnit","pre":"Forudformateret","sans-serif":"sans-serif","fontName":"Skrifttype","h1":"Overskrift","h2":"Underoverskrift","h3":"Underunderoverskrift","monospace":"monospace","fontSize":"Størrelse","cursive":"kursiv"})
\ No newline at end of file
diff --git a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/_editor/nls/da/LinkDialog.js b/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/_editor/nls/da/LinkDialog.js
deleted file mode 100644
index c7590f0..0000000
--- a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/_editor/nls/da/LinkDialog.js
+++ /dev/null
@@ -1 +0,0 @@
-({"set":"Definér","text":"Beskrivelse:","insertImageTitle":"Billedegenskaber","url":"URL:","createLinkTitle":"Linkegenskaber","newWindow":"New Window","topWindow":"Topmost Window","target":"Target:","parentWindow":"Parent Window","currentWindow":"Current Window"})
\ No newline at end of file
diff --git a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/_editor/nls/da/commands.js b/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/_editor/nls/da/commands.js
deleted file mode 100644
index b7aed14..0000000
--- a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/_editor/nls/da/commands.js
+++ /dev/null
@@ -1 +0,0 @@
-({"removeFormat":"Fjern format","copy":"Kopiér","paste":"Sæt ind","selectAll":"Markér alle","insertOrderedList":"Nummereret liste","insertTable":"Indsæt/redigér tabel","underline":"Understreget","foreColor":"Forgrundsfarve","htmlToggle":"HTML-kilde","formatBlock":"Afsnitstypografi","insertHorizontalRule":"Vandret linje","delete":"Slet","insertUnorderedList":"Punktliste","tableProp":"Tabelegenskab","insertImage":"Indsæt billede","superscript":"Hævet skrift","subscript":"Sænket skrift","createLink":"Opret link","undo":"Fortryd","italic":"Kursiv","fontName":"Skriftnavn","justifyLeft":"Venstrejusteret","unlink":"Fjern link","toggleTableBorder":"Skift tabelramme","ctrlKey":"Ctrl+${0}","fontSize":"Skriftstørrelse","systemShortcut":"Funktionen \"${0}\" kan kun bruges i your browser med en tastaturgenvej. Brug ${1}.","indent":"Indrykning","redo":"Annullér Fortryd","strikethrough":"Gennemstreget","justifyFull":"Lige margener","justifyCenter":"Centreret","hiliteColor":"Baggrundsfarve","deleteTable":"Slet tabel","outdent":"Udrykning","cut":"Klip","plainFormatBlock":"Afsnitstypografi","toggleDir":"Skift retning","bold":"Fed","tabIndent":"Indrykning med tabulator","justifyRight":"Højrejusteret","print":"Print","newPage":"New Page","appleKey":"⌘${0}","fullScreen":"Toggle Full Screen","viewSource":"View HTML Source"})
\ No newline at end of file
diff --git a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/_editor/nls/de/FontChoice.js b/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/_editor/nls/de/FontChoice.js
deleted file mode 100644
index f16b312..0000000
--- a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/_editor/nls/de/FontChoice.js
+++ /dev/null
@@ -1 +0,0 @@
-({"1":"XXS","2":"XS","formatBlock":"Format","3":"S","4":"M","5":"L","6":"XL","7":"XXL","fantasy":"Fantasie","serif":"Serife","p":"Absatz","pre":"Vorformatiert","sans-serif":"Serifenlos","fontName":"Schriftart","h1":"Überschrift","h2":"Unterüberschrift","h3":"Unterunterüberschrift","monospace":"Monospaceschrift","fontSize":"Größe","cursive":"Kursiv"})
\ No newline at end of file
diff --git a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/_editor/nls/de/LinkDialog.js b/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/_editor/nls/de/LinkDialog.js
deleted file mode 100644
index b1eab6c..0000000
--- a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/_editor/nls/de/LinkDialog.js
+++ /dev/null
@@ -1 +0,0 @@
-({"text":"Beschreibung:","insertImageTitle":"Grafikeigenschaften","set":"Festlegen","newWindow":"Neues Fenster","topWindow":"Aktives Fenster","target":"Ziel:","createLinkTitle":"Linkeigenschaften","parentWindow":"Übergeordnetes Fenster","currentWindow":"Aktuelles Fenster","url":"URL:"})
\ No newline at end of file
diff --git a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/_editor/nls/de/commands.js b/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/_editor/nls/de/commands.js
deleted file mode 100644
index 8fa589c..0000000
--- a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/_editor/nls/de/commands.js
+++ /dev/null
@@ -1 +0,0 @@
-({"removeFormat":"Formatierung entfernen","copy":"Kopieren","paste":"Einfügen","selectAll":"Alles auswählen","insertOrderedList":"Nummerierung","insertTable":"Tabelle einfügen/bearbeiten","print":"Drucken","underline":"Unterstrichen","foreColor":"Vordergrundfarbe","htmlToggle":"HTML-Quelltext","formatBlock":"Absatzstil","newPage":"Neue Seite","insertHorizontalRule":"Horizontaler Strich","delete":"Löschen","insertUnorderedList":"Aufzählungszeichen","tableProp":"Tabelleneigenschaft","insertImage":"Grafik einfügen","superscript":"Hochgestellt","subscript":"Tiefgestellt","createLink":"Link erstellen","undo":"Rückgängig","fullScreen":"Gesamtanzeige","italic":"Kursiv","fontName":"Schriftartname","justifyLeft":"Linksbündig","unlink":"Link entfernen","toggleTableBorder":"Tabellenumrandung ein-/ausschalten","viewSource":"HTML-Quelle","ctrlKey":"Strg+${0}","fontSize":"Schriftgröße","systemShortcut":"Die Aktion \"${0}\" ist nur über einen Direktaufruf in Ihrem Browser verfügbar. Verwenden Sie ${1}.","indent":"Einrücken","redo":"Wiederherstellen","strikethrough":"Durchgestrichen","justifyFull":"Blocksatz","justifyCenter":"Zentriert","hiliteColor":"Hintergrundfarbe","deleteTable":"Tabelle löschen","outdent":"Ausrücken","cut":"Ausschneiden","plainFormatBlock":"Absatzstil","toggleDir":"Wechselrichtung","bold":"Fett","tabIndent":"Tabulatoreinrückung","justifyRight":"Rechtsbündig","appleKey":"⌘${0}"})
\ No newline at end of file
diff --git a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/_editor/nls/el/FontChoice.js b/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/_editor/nls/el/FontChoice.js
deleted file mode 100644
index 2d51628..0000000
--- a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/_editor/nls/el/FontChoice.js
+++ /dev/null
@@ -1 +0,0 @@
-({"1":"xx-μικρά","2":"x-μικρά","formatBlock":"Μορφή","3":"μικρά","4":"μεσαία","5":"μεγάλα","6":"x-μεγάλα","7":"xx-μεγάλα","fantasy":"φαντασίας","serif":"με πατούρες (serif)","p":"Παράγραφος","pre":"Προ-μορφοποιημένο","sans-serif":"χωρίς πατούρες (sans-serif)","fontName":"Γραμματοσειρά","h1":"Επικεφαλίδα","h2":"Δευτερεύουσα επικεφαλίδα","h3":"Δευτερεύουσα επικεφαλίδα τρίτου επιπέδου","monospace":"σταθερού πλάτους","fontSize":"Μέγεθος","cursive":"πλάγιοι"})
\ No newline at end of file
diff --git a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/_editor/nls/el/LinkDialog.js b/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/_editor/nls/el/LinkDialog.js
deleted file mode 100644
index 9eef633..0000000
--- a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/_editor/nls/el/LinkDialog.js
+++ /dev/null
@@ -1 +0,0 @@
-({"set":"Ορισμός","text":"Περιγραφή:","insertImageTitle":"Ιδιότητες εικόνας","url":"Διεύθυνση URL:","createLinkTitle":"Ιδιότητες διασύνδεσης","newWindow":"New Window","topWindow":"Topmost Window","target":"Target:","parentWindow":"Parent Window","currentWindow":"Current Window"})
\ No newline at end of file
diff --git a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/_editor/nls/el/commands.js b/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/_editor/nls/el/commands.js
deleted file mode 100644
index eaf90eb..0000000
--- a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/_editor/nls/el/commands.js
+++ /dev/null
@@ -1 +0,0 @@
-({"removeFormat":"Αφαίρεση μορφοποίησης","copy":"Αντιγραφή","paste":"Επικόλληση","selectAll":"Επιλογή όλων","insertOrderedList":"Αριθμημένη λίστα","insertTable":"Εισαγωγή/Τροποποίηση πίνακα","underline":"Υπογράμμιση","foreColor":"Χρώμα προσκηνίου","htmlToggle":"Πρωτογενής κώδικας HTML","formatBlock":"Στυλ παραγράφου","insertHorizontalRule":"Οριζόντια γραμμή","delete":"Διαγραφή","insertUnorderedList":"Λίστα με κουκίδες","tableProp":"Ιδιότητα πίνακα","insertImage":"Εισαγωγή εικόνας","superscript":"Εκθέτης","subscript":"Δείκτης","createLink":"Δημιουργία διασύνδεσης","undo":"Αναίρεση","italic":"Πλάγια","fontName":"Όνομα γραμματοσειράς","justifyLeft":"Στοίχιση αριστερά","unlink":"Αφαίρεση διασύνδεσης","toggleTableBorder":"Εναλλαγή εμφάνισης περιγράμματος πίνακα","fontSize":"Μέγεθος γραμματοσειράς","systemShortcut":"Σε αυτό το πρόγραμμα πλοήγησης, η ενέργεια \"${0}\" είναι διαθέσιμη μόνο με τη χρήση μιας συντόμευσης πληκτρολογίου. Χρησιμοποιήστε τη συντόμευση ${1}.","indent":"Εσοχή","redo":"Ακύρωση αναίρεσης","strikethrough":"Διαγράμμιση","justifyFull":"Πλήρης στοίχιση","justifyCenter":"Στοίχιση στο κέντρο","hiliteColor":"Χρώμα φόντου","deleteTable":"Διαγραφή πίνακα","outdent":"Μείωση περιθωρίου","cut":"Αποκοπή","plainFormatBlock":"Στυλ παραγράφου","toggleDir":"Εναλλαγή κατεύθυνσης","bold":"Έντονα","tabIndent":"Εσοχή με το πλήκτρο Tab","justifyRight":"Στοίχιση δεξιά","print":"Print","newPage":"New Page","appleKey":"⌘${0}","fullScreen":"Toggle Full Screen","viewSource":"View HTML Source","ctrlKey":"ctrl+${0}"})
\ No newline at end of file
diff --git a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/_editor/nls/es/FontChoice.js b/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/_editor/nls/es/FontChoice.js
deleted file mode 100644
index bacacf0..0000000
--- a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/_editor/nls/es/FontChoice.js
+++ /dev/null
@@ -1 +0,0 @@
-({"1":"xx-pequeño","2":"x-pequeño","formatBlock":"Formato","3":"pequeño","4":"medio","5":"grande","6":"x-grande","7":"xx-grande","fantasy":"fantasía","serif":"serif","p":"Párrafo","pre":"Preformateado","sans-serif":"sans-serif","fontName":"Font","h1":"Cabecera","h2":"Subcabecera","h3":"Sub-subcabecera","monospace":"espacio sencillo","fontSize":"Tamaño","cursive":"cursiva"})
\ No newline at end of file
diff --git a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/_editor/nls/es/LinkDialog.js b/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/_editor/nls/es/LinkDialog.js
deleted file mode 100644
index 15802d7..0000000
--- a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/_editor/nls/es/LinkDialog.js
+++ /dev/null
@@ -1 +0,0 @@
-({"text":"Descripción: ","insertImageTitle":"Propiedades de la imagen","set":"Establecer","newWindow":"Nueva ventana","topWindow":"Ventana superior","target":"Destino: ","createLinkTitle":"Propiedades del enlace","parentWindow":"Ventana padre","currentWindow":"Ventana actual","url":"URL:"})
\ No newline at end of file
diff --git a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/_editor/nls/es/commands.js b/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/_editor/nls/es/commands.js
deleted file mode 100644
index 0d189dc..0000000
--- a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/_editor/nls/es/commands.js
+++ /dev/null
@@ -1 +0,0 @@
-({"removeFormat":"Eliminar formato","copy":"Copiar","paste":"Pegar","selectAll":"Seleccionar todo","insertOrderedList":"Lista numerada","insertTable":"Insertar/Editar tabla","print":"Imprimir","underline":"Subrayado","foreColor":"Color de primer plano","htmlToggle":"Fuente HTML","formatBlock":"Estilo de párrafo","newPage":"Nueva página","insertHorizontalRule":"Regla horizontal","delete":"Suprimir","insertUnorderedList":"Lista con viñetas","tableProp":"Propiedad de tabla","insertImage":"Insertar imagen","superscript":"Superíndice","subscript":"Subíndice","createLink":"Crear enlace","undo":"Deshacer","fullScreen":"Conmutar pantalla completa","italic":"Cursiva","fontName":"Nombre de font","justifyLeft":"Alinear izquierda","unlink":"Eliminar enlace","toggleTableBorder":"Conmutar borde de tabla","viewSource":"Ver fuente HTML","ctrlKey":"control+${0}","fontSize":"Tamaño de font","systemShortcut":"La acción \"${0}\" sólo está disponible en su navegador mediante un atajo de teclado. Utilice ${1}.","indent":"Sangría","redo":"Rehacer","strikethrough":"Tachado","justifyFull":"Justificar","justifyCenter":"Alinear centro","hiliteColor":"Color de segundo plano","deleteTable":"Suprimir tabla","outdent":"Anular sangría","cut":"Cortar","plainFormatBlock":"Estilo de párrafo","toggleDir":"Conmutar dirección","bold":"Negrita","tabIndent":"Sangría de tabulador","justifyRight":"Alinear derecha","appleKey":"⌘${0}"})
\ No newline at end of file
diff --git a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/_editor/nls/fi/FontChoice.js b/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/_editor/nls/fi/FontChoice.js
deleted file mode 100644
index 37d3962..0000000
--- a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/_editor/nls/fi/FontChoice.js
+++ /dev/null
@@ -1 +0,0 @@
-({"1":"xx-small","2":"x-small","formatBlock":"Muoto","3":"small","4":"medium","5":"large","6":"x-large","7":"xx-large","fantasy":"fantasy","serif":"serif","p":"Kappale","pre":"Esimuotoiltu","sans-serif":"sans-serif","fontName":"Fontti","h1":"Otsikko","h2":"Alatason otsikko","h3":"Alimman tason otsikko","monospace":"monospace","fontSize":"Koko","cursive":"cursive"})
\ No newline at end of file
diff --git a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/_editor/nls/fi/LinkDialog.js b/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/_editor/nls/fi/LinkDialog.js
deleted file mode 100644
index 0f8c69f..0000000
--- a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/_editor/nls/fi/LinkDialog.js
+++ /dev/null
@@ -1 +0,0 @@
-({"set":"Aseta","text":"Kuvaus:","insertImageTitle":"Kuvan ominaisuudet","url":"URL-osoite:","createLinkTitle":"Linkin ominaisuudet","newWindow":"New Window","topWindow":"Topmost Window","target":"Target:","parentWindow":"Parent Window","currentWindow":"Current Window"})
\ No newline at end of file
diff --git a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/_editor/nls/fi/commands.js b/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/_editor/nls/fi/commands.js
deleted file mode 100644
index 60f87bb..0000000
--- a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/_editor/nls/fi/commands.js
+++ /dev/null
@@ -1 +0,0 @@
-({"removeFormat":"Poista muotoilu","copy":"Kopioi","paste":"Liitä","selectAll":"Valitse kaikki","insertOrderedList":"Numeroitu luettelo","insertTable":"Lisää taulukko/muokkaa taulukkoa","underline":"Alleviivaus","foreColor":"Edustaväri","htmlToggle":"HTML-lähde","formatBlock":"Kappaletyyli","insertHorizontalRule":"Vaakasuuntainen viiva","delete":"Poista","insertUnorderedList":"Numeroimaton luettelo","tableProp":"Taulukon ominaisuudet","insertImage":"Lisää kuva","superscript":"Korotettu","subscript":"Alennettu","createLink":"Luo linkki","undo":"Kumoa","italic":"Kursivointi","fontName":"Fontin nimi","justifyLeft":"Tasaus vasemmalle","unlink":"Poista linkki","toggleTableBorder":"Ota taulukon kehys käyttöön/poista kehys käytöstä","fontSize":"Fontin koko","systemShortcut":"Toiminto \"${0}\" on käytettävissä selaimessa vain näppäimistön pikatoiminnolla. Käytä seuraavaa: ${1}.","indent":"Sisennä","redo":"Tee uudelleen","strikethrough":"Yliviivaus","justifyFull":"Tasaus","justifyCenter":"Tasaus keskelle","hiliteColor":"Taustaväri","deleteTable":"Poista taulukko","outdent":"Ulonna","cut":"Leikkaa","plainFormatBlock":"Kappaletyyli","toggleDir":"Vaihda suuntaa","bold":"Lihavointi","tabIndent":"Sarkainsisennys","justifyRight":"Tasaus oikealle","print":"Print","newPage":"New Page","appleKey":"⌘${0}","fullScreen":"Toggle Full Screen","viewSource":"View HTML Source","ctrlKey":"ctrl+${0}"})
\ No newline at end of file
diff --git a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/_editor/nls/fr/FontChoice.js b/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/_editor/nls/fr/FontChoice.js
deleted file mode 100644
index 9063de8..0000000
--- a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/_editor/nls/fr/FontChoice.js
+++ /dev/null
@@ -1 +0,0 @@
-({"1":"xxs","2":"xs","formatBlock":"Mise en forme","3":"s","4":"m","5":"l","6":"xl","7":"xxl","fantasy":"fantaisie","serif":"serif","p":"Paragraphe","pre":"Pré-mise en forme","sans-serif":"sans serif","fontName":"Police","h1":"En-tête","h2":"Sous-en-tête","h3":"Sous-sous-en-tête","monospace":"espacement fixe","fontSize":"Taille","cursive":"cursive"})
\ No newline at end of file
diff --git a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/_editor/nls/fr/LinkDialog.js b/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/_editor/nls/fr/LinkDialog.js
deleted file mode 100644
index 7094601..0000000
--- a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/_editor/nls/fr/LinkDialog.js
+++ /dev/null
@@ -1 +0,0 @@
-({"text":"Description :","insertImageTitle":"Propriétés des images","set":"Définir","newWindow":"Nouvelle fenêtre","topWindow":"Première fenêtre","target":"Cible :","createLinkTitle":"Propriétés des liens","parentWindow":"Fenêtre parent","currentWindow":"Fenêtre en cours","url":"URL :"})
\ No newline at end of file
diff --git a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/_editor/nls/fr/commands.js b/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/_editor/nls/fr/commands.js
deleted file mode 100644
index df8cb3b..0000000
--- a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/_editor/nls/fr/commands.js
+++ /dev/null
@@ -1 +0,0 @@
-({"removeFormat":"Supprimer la mise en forme","copy":"Copier","paste":"Coller","selectAll":"Sélectionner tout","insertOrderedList":"Liste numérotée","insertTable":"Insérer/Modifier un tableau","print":"Imprimer","underline":"Souligner","foreColor":"Couleur avant-plan","htmlToggle":"Source HTML","formatBlock":"Style de paragraphe","newPage":"Nouvelle page","insertHorizontalRule":"Règle horizontale","delete":"Supprimer","insertUnorderedList":"Liste à puces","tableProp":"Propriété du tableau","insertImage":"Insérer une image","superscript":"Exposant","subscript":"Indice","createLink":"Créer un lien","undo":"Annuler","fullScreen":"Basculer vers le mode plein écran","italic":"Italique","fontName":"Nom de police","justifyLeft":"Aligner à gauche","unlink":"Supprimer le lien","toggleTableBorder":"Afficher/Masquer la bordure du tableau","viewSource":"Afficher la source HTML","fontSize":"Taille de police","systemShortcut":"Action \"${0}\" uniquement disponible dans votre navigateur via un raccourci clavier. Utilisez ${1}.","indent":"Retrait","redo":"Rétablir","strikethrough":"Barrer","justifyFull":"Justifier","justifyCenter":"Aligner au centre","hiliteColor":"Couleur arrière-plan","deleteTable":"Supprimer le tableau","outdent":"Retrait négatif","cut":"Couper","plainFormatBlock":"Style de paragraphe","toggleDir":"Changer de sens","bold":"Gras","tabIndent":"Retrait de tabulation","justifyRight":"Aligner à droite","appleKey":"⌘${0}","ctrlKey":"ctrl+${0}"})
\ No newline at end of file
diff --git a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/_editor/nls/he/FontChoice.js b/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/_editor/nls/he/FontChoice.js
deleted file mode 100644
index 9f1b213..0000000
--- a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/_editor/nls/he/FontChoice.js
+++ /dev/null
@@ -1 +0,0 @@
-({"1":"קטן ביות","2":"קטן מאוד","formatBlock":"עיצוב","3":"קטן","4":"בינוני","5":"גדול","6":"גדול מאוד","7":"גדול ביותר","fantasy":"fantasy","serif":"serif","p":"פיסקה","pre":"מעוצב מראש","sans-serif":"sans-serif","fontName":"גופן","h1":"כותרת","h2":"תת-כותרת","h3":"תת-תת-כותרת","monospace":"monospace","fontSize":"גודל","cursive":"cursive"})
\ No newline at end of file
diff --git a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/_editor/nls/he/LinkDialog.js b/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/_editor/nls/he/LinkDialog.js
deleted file mode 100644
index bd36d66..0000000
--- a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/_editor/nls/he/LinkDialog.js
+++ /dev/null
@@ -1 +0,0 @@
-({"set":"הגדרה","text":"תיאור:","insertImageTitle":"תכונות תמונה","url":"URL:","createLinkTitle":"תכונות קישור","newWindow":"New Window","topWindow":"Topmost Window","target":"Target:","parentWindow":"Parent Window","currentWindow":"Current Window"})
\ No newline at end of file
diff --git a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/_editor/nls/he/commands.js b/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/_editor/nls/he/commands.js
deleted file mode 100644
index f599a63..0000000
--- a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/_editor/nls/he/commands.js
+++ /dev/null
@@ -1 +0,0 @@
-({"removeFormat":"סילוק עיצוב","copy":"העתקה","paste":"הדבקה","selectAll":"בחירת הכל","insertOrderedList":"רשימה ממוספרת","insertTable":"הוספת/עריכת טבלה","underline":"קו תחתי","foreColor":"צבע חזית","htmlToggle":"מקור HTML","formatBlock":"סגנון פיסקה","insertHorizontalRule":"קו אופקי","delete":"מחיקה","insertUnorderedList":"רשימה עם תבליטים","tableProp":"תכונת טבלה","insertImage":"הוספת תמונה","superscript":"כתב עילי","subscript":"כתב תחתי","createLink":"יצירת קישור","undo":"ביטול פעולה","italic":"נטוי","fontName":"שם גופן","justifyLeft":"יישור לשמאל","unlink":"סילוק הקישור","toggleTableBorder":"מיתוג גבול טבלה","fontSize":"גופן יחסי","systemShortcut":"הפעולה \"${0}\" זמינה בדפדפן רק באמצעות קיצור דרך במקלדת. השתמשו בקיצור ${1}.","indent":"הגדלת כניסה","redo":"שחזור פעולה","strikethrough":"קו חוצה","justifyFull":"יישור דו-צדדי","justifyCenter":"יישור למרכז","hiliteColor":"צבע רקע","deleteTable":"מחיקת טבלה","outdent":"הקטנת כניסה","cut":"גזירה","plainFormatBlock":"סגנון פיסקה","toggleDir":"מיתוג כיוון","bold":"מודגש","tabIndent":"כניסת טאב","justifyRight":"יישור לימין","print":"Print","newPage":"New Page","appleKey":"⌘${0}","fullScreen":"Toggle Full Screen","viewSource":"View HTML Source","ctrlKey":"ctrl+${0}"})
\ No newline at end of file
diff --git a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/_editor/nls/hu/FontChoice.js b/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/_editor/nls/hu/FontChoice.js
deleted file mode 100644
index 858d77a..0000000
--- a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/_editor/nls/hu/FontChoice.js
+++ /dev/null
@@ -1 +0,0 @@
-({"1":"xx-kicsi","2":"x-kicsi","formatBlock":"Formátum","3":"kicsi","4":"közepes","5":"nagy","6":"x-nagy","7":"xx-nagy","fantasy":"fantázia","serif":"talpas","p":"Bekezdés","pre":"Előformázott","sans-serif":"talpatlan","fontName":"Betűtípus","h1":"Címsor","h2":"Alcím","h3":"Al-alcím","monospace":"rögzített szélességű","fontSize":"Méret","cursive":"kurzív"})
\ No newline at end of file
diff --git a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/_editor/nls/hu/LinkDialog.js b/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/_editor/nls/hu/LinkDialog.js
deleted file mode 100644
index 23f765e..0000000
--- a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/_editor/nls/hu/LinkDialog.js
+++ /dev/null
@@ -1 +0,0 @@
-({"text":"Leírás:","insertImageTitle":"Kép tulajdonságai","set":"Beállítás","newWindow":"Új ablak","topWindow":"Legfelső szintű ablak","target":"Cél:","createLinkTitle":"Hivatkozás tulajdonságai","parentWindow":"Szülő ablak","currentWindow":"Aktuális ablak","url":"URL:"})
\ No newline at end of file
diff --git a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/_editor/nls/hu/commands.js b/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/_editor/nls/hu/commands.js
deleted file mode 100644
index bd016cf..0000000
--- a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/_editor/nls/hu/commands.js
+++ /dev/null
@@ -1 +0,0 @@
-({"removeFormat":"Formázás eltávolítása","copy":"Másolás","paste":"Beillesztés","selectAll":"Összes kijelölése","insertOrderedList":"Számozott lista","insertTable":"Táblázat beszúrása/szerkesztése","print":"Nyomtatás","underline":"Aláhúzott","foreColor":"Előtérszín","htmlToggle":"HTML forrás","formatBlock":"Bekezdés stílusa","newPage":"Új oldal","insertHorizontalRule":"Vízszintes vonalzó","delete":"Törlés","insertUnorderedList":"Felsorolásjeles lista","tableProp":"Táblázat tulajdonságai","insertImage":"Kép beszúrása","superscript":"Felső index","subscript":"Alsó index","createLink":"Hivatkozás létrehozása","undo":"Visszavonás","fullScreen":"Váltás teljes képernyőre","italic":"Dőlt","fontName":"Betűtípus","justifyLeft":"Balra igazítás","unlink":"Hivatkozás eltávolítása","toggleTableBorder":"Táblázatszegély ki-/bekapcsolása","viewSource":"HTML forrás megjelenítése","fontSize":"Betűméret","systemShortcut":"A(z) \"${0}\" művelet a böngészőben csak billentyűparancs használatával érhető el. Használja a következőt: ${1}.","indent":"Behúzás","redo":"Újra","strikethrough":"Áthúzott","justifyFull":"Sorkizárás","justifyCenter":"Középre igazítás","hiliteColor":"Háttérszín","deleteTable":"Táblázat törlése","outdent":"Negatív behúzás","cut":"Kivágás","plainFormatBlock":"Bekezdés stílusa","toggleDir":"Irány váltókapcsoló","bold":"Félkövér","tabIndent":"Tab behúzás","justifyRight":"Jobbra igazítás","appleKey":"⌘${0}","ctrlKey":"ctrl+${0}"})
\ No newline at end of file
diff --git a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/_editor/nls/it/FontChoice.js b/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/_editor/nls/it/FontChoice.js
deleted file mode 100644
index 1a180df..0000000
--- a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/_editor/nls/it/FontChoice.js
+++ /dev/null
@@ -1 +0,0 @@
-({"1":"xx-small","2":"x-small","formatBlock":"Formato","3":"small","4":"medium","5":"large","6":"x-large","7":"xx-large","fantasy":"fantasy","serif":"serif","p":"Paragrafo","pre":"Preformattato","sans-serif":"sans-serif","fontName":"Carattere","h1":"Intestazione","h2":"Sottointestazione","h3":"Sottointestazione secondaria","monospace":"spaziatura fissa","fontSize":"Dimensione","cursive":"corsivo"})
\ No newline at end of file
diff --git a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/_editor/nls/it/LinkDialog.js b/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/_editor/nls/it/LinkDialog.js
deleted file mode 100644
index ad3adef..0000000
--- a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/_editor/nls/it/LinkDialog.js
+++ /dev/null
@@ -1 +0,0 @@
-({"text":"Descrizione:","insertImageTitle":"Proprietà immagine","set":"Imposta","newWindow":"Nuova finestra","topWindow":"Finestra superiore","target":"Destinazione:","createLinkTitle":"Proprietà collegamento","parentWindow":"Finestra padre","currentWindow":"Finestra corrente","url":"URL:"})
\ No newline at end of file
diff --git a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/_editor/nls/it/commands.js b/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/_editor/nls/it/commands.js
deleted file mode 100644
index 4abbd7e..0000000
--- a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/_editor/nls/it/commands.js
+++ /dev/null
@@ -1 +0,0 @@
-({"removeFormat":"Rimuovi formato","copy":"Copia","paste":"Incolla","selectAll":"Seleziona tutto","insertOrderedList":"Elenco numerato","insertTable":"Inserisci/Modifica tabella","print":"Stampa","underline":"Sottolinea","foreColor":"Colore primo piano","htmlToggle":"Origine HTML","formatBlock":"Stile paragrafo","newPage":"Nuova pagina","insertHorizontalRule":"Righello orizzontale","delete":"Elimina","insertUnorderedList":"Elenco puntato","tableProp":"Proprietà tabella","insertImage":"Inserisci immagine","superscript":"Apice","subscript":"Pedice","createLink":"Crea collegamento","undo":"Annulla","fullScreen":"Attiva/Disattiva schermo intero","italic":"Corsivo","fontName":"Nome carattere","justifyLeft":"Allinea a sinistra","unlink":"Rimuovi collegamento","toggleTableBorder":"Attiva/Disattiva bordo tabella","viewSource":"Visualizza origine HTML","fontSize":"Dimensione carattere","systemShortcut":"La azione \"${0}\" è disponibile solo nel browser tramite un tasto di scelta rapida. Utilizzare ${1}.","indent":"Rientro","redo":"Ripristina","strikethrough":"Barrato","justifyFull":"Giustifica","justifyCenter":"Allinea al centro","hiliteColor":"Colore sfondo","deleteTable":"Elimina tabella","outdent":"Annulla rientro","cut":"Taglia","plainFormatBlock":"Stile paragrafo","toggleDir":"Attiva/Disattiva direzione","bold":"Grassetto","tabIndent":"Rientro tabulazione","justifyRight":"Allinea a destra","appleKey":"⌘${0}","ctrlKey":"ctrl+${0}"})
\ No newline at end of file
diff --git a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/_editor/nls/ja/FontChoice.js b/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/_editor/nls/ja/FontChoice.js
deleted file mode 100644
index a938d6b..0000000
--- a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/_editor/nls/ja/FontChoice.js
+++ /dev/null
@@ -1 +0,0 @@
-({"1":"超極小","2":"極小","formatBlock":"フォーマット","3":"小","4":"標準","5":"大","6":"特大","7":"超特大","fantasy":"fantasy","serif":"serif","p":"段落","pre":"事前フォーマット済み","sans-serif":"sans-serif","fontName":"フォント","h1":"見出し","h2":"副見出し","h3":"副見出しの副見出し","monospace":"monospace","fontSize":"サイズ","cursive":"cursive"})
\ No newline at end of file
diff --git a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/_editor/nls/ja/LinkDialog.js b/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/_editor/nls/ja/LinkDialog.js
deleted file mode 100644
index 815f508..0000000
--- a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/_editor/nls/ja/LinkDialog.js
+++ /dev/null
@@ -1 +0,0 @@
-({"text":"説明:","insertImageTitle":"イメージ・プロパティー","set":"設定","newWindow":"新規ウィンドウ","topWindow":"最上位ウィンドウ","target":"ターゲット:","createLinkTitle":"リンク・プロパティー","parentWindow":"親ウィンドウ","currentWindow":"現行ウィンドウ","url":"URL:"})
\ No newline at end of file
diff --git a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/_editor/nls/ja/commands.js b/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/_editor/nls/ja/commands.js
deleted file mode 100644
index 0ca112a..0000000
--- a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/_editor/nls/ja/commands.js
+++ /dev/null
@@ -1 +0,0 @@
-({"removeFormat":"形式の除去","copy":"コピー","paste":"貼り付け","selectAll":"すべて選択","insertOrderedList":"番号付きリスト","insertTable":"テーブルの挿入/編集","print":"印刷","underline":"下線","foreColor":"前景色","htmlToggle":"HTML ソース","formatBlock":"段落スタイル","newPage":"改ページ","insertHorizontalRule":"水平罫線","delete":"削除","insertUnorderedList":"黒丸付きリスト","tableProp":"テーブル・プロパティー","insertImage":"イメージの挿入","superscript":"上付き文字","subscript":"下付き文字","createLink":"リンクの作成","undo":"元に戻す","fullScreen":"フルスクリーンの切り替え","italic":"イタリック","fontName":"フォント名","justifyLeft":"左揃え","unlink":"リンクの除去","toggleTableBorder":"テーブル・ボーダーの切り替え","viewSource":"HTML ソースの表示","fontSize":"フォント・サイズ","systemShortcut":"\"${0}\" アクションは、キーボード・ショートカットを使用して、ブラウザーでのみ使用できます。${1} を使用します。","indent":"インデント","redo":"やり直し","strikethrough":"取り消し線","justifyFull":"両端揃え","justifyCenter":"中央揃え","hiliteColor":"背景色","deleteTable":"テーブルの削除","outdent":"アウトデント","cut":"切り取り","plainFormatBlock":"段落スタイル","toggleDir":"方向の切り替え","bold":"太字","tabIndent":"タブ・インデント","justifyRight":"右揃え","appleKey":"⌘${0}","ctrlKey":"ctrl+${0}"})
\ No newline at end of file
diff --git a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/_editor/nls/ko/FontChoice.js b/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/_editor/nls/ko/FontChoice.js
deleted file mode 100644
index 2603063..0000000
--- a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/_editor/nls/ko/FontChoice.js
+++ /dev/null
@@ -1 +0,0 @@
-({"1":"가장 작게","2":"조금 작게","formatBlock":"서식","3":"작게","4":"중간","5":"크게","6":"조금 크게","7":"가장 크게","fantasy":"fantasy","serif":"serif","p":"단락","pre":"서식이 지정됨","sans-serif":"sans-serif","fontName":"글꼴","h1":"제목","h2":"부제목","h3":"하위 부제목","monospace":"monospace","fontSize":"크기","cursive":"cursive"})
\ No newline at end of file
diff --git a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/_editor/nls/ko/LinkDialog.js b/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/_editor/nls/ko/LinkDialog.js
deleted file mode 100644
index 1f46bd7..0000000
--- a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/_editor/nls/ko/LinkDialog.js
+++ /dev/null
@@ -1 +0,0 @@
-({"text":"설명:","insertImageTitle":"이미지 특성","set":"설정","newWindow":"새 창","topWindow":"최상위 창","target":"대상:","createLinkTitle":"링크 특성","parentWindow":"상위 창","currentWindow":"현재 창","url":"URL:"})
\ No newline at end of file
diff --git a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/_editor/nls/ko/commands.js b/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/_editor/nls/ko/commands.js
deleted file mode 100644
index 4c8f954..0000000
--- a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/_editor/nls/ko/commands.js
+++ /dev/null
@@ -1 +0,0 @@
-({"removeFormat":"형식 제거","copy":"복사","paste":"붙여넣기","selectAll":"모두 선택","insertOrderedList":"번호 목록","insertTable":"테이블 삽입/편집","print":"인쇄","underline":"밑줄","foreColor":"전경색","htmlToggle":"HTML 소스","formatBlock":"단락 스타일","newPage":"새 페이지","insertHorizontalRule":"수평 자","delete":"삭제","insertUnorderedList":"글머리표 목록","tableProp":"테이블 특성","insertImage":"이미지 삽입","superscript":"위첨자","subscript":"아래첨자","createLink":"링크 작성","undo":"실행 취소","fullScreen":"토글 전체 화면","italic":"기울임체","fontName":"글꼴 이름","justifyLeft":"왼쪽 맞춤","unlink":"링크 제거","toggleTableBorder":"토글 테이블 테두리","viewSource":"HTML 소스 보기","fontSize":"글꼴 크기","systemShortcut":"\"${0}\" 조치는 브라우저에서 키보드 단축키를 이용해서만 사용할 수 있습니다. ${1}을(를) 사용하십시오.","indent":"들여쓰기","redo":"다시 실행","strikethrough":"취소선","justifyFull":"양쪽 맞춤","justifyCenter":"가운데 맞춤","hiliteColor":"배경색","deleteTable":"테이블 삭제","outdent":"내어쓰기","cut":"잘라내기","plainFormatBlock":"단락 스타일","toggleDir":"토글 방향","bold":"굵은체","tabIndent":"탭 들여쓰기","justifyRight":"오른쪽 맞춤","appleKey":"⌘${0}","ctrlKey":"ctrl+${0}"})
\ No newline at end of file
diff --git a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/_editor/nls/nb/FontChoice.js b/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/_editor/nls/nb/FontChoice.js
deleted file mode 100644
index f22d972..0000000
--- a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/_editor/nls/nb/FontChoice.js
+++ /dev/null
@@ -1 +0,0 @@
-({"1":"xx-liten","2":"x-liten","formatBlock":"Format","3":"liten","4":"middels","5":"stor","6":"x-stor","7":"xx-stor","fantasy":"fantasi","serif":"serif","p":"Avsnitt","pre":"Forhåndsformatert","sans-serif":"sans-serif","fontName":"Skrift","h1":"Overskrift","h2":"Undertittel","h3":"Under-undertittel","monospace":"monospace","fontSize":"Størrelse","cursive":"kursiv"})
\ No newline at end of file
diff --git a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/_editor/nls/nb/LinkDialog.js b/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/_editor/nls/nb/LinkDialog.js
deleted file mode 100644
index 6349943..0000000
--- a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/_editor/nls/nb/LinkDialog.js
+++ /dev/null
@@ -1 +0,0 @@
-({"set":"Definer","text":"Beskrivelse:","insertImageTitle":"Bildeegenskaper","url":"URL:","createLinkTitle":"Koblingsegenskaper","newWindow":"New Window","topWindow":"Topmost Window","target":"Target:","parentWindow":"Parent Window","currentWindow":"Current Window"})
\ No newline at end of file
diff --git a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/_editor/nls/nb/commands.js b/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/_editor/nls/nb/commands.js
deleted file mode 100644
index 1b3a56f..0000000
--- a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/_editor/nls/nb/commands.js
+++ /dev/null
@@ -1 +0,0 @@
-({"removeFormat":"Fjern format","copy":"Kopier","paste":"Lim inn","selectAll":"Velg alle","insertOrderedList":"Nummerert liste","insertTable":"Sett inn/rediger tabell","underline":"Understreking","foreColor":"Forgrunnsfarge","htmlToggle":"HTML-kilde","formatBlock":"Avsnittsstil","insertHorizontalRule":"Vannrett strek","delete":"Slett","insertUnorderedList":"Punktliste","tableProp":"Tabellegenskap","insertImage":"Sett inn bilde","superscript":"Hevet skrift","subscript":"Senket skrift","createLink":"Opprett kobling","undo":"Angre","italic":"Kursiv","fontName":"Skriftnavn","justifyLeft":"Venstrejuster","unlink":"Fjern kobling","toggleTableBorder":"Bytt tabellkant","fontSize":"Skriftstørrelse","systemShortcut":"Handlingen \"${0}\" er bare tilgjengelig i nettleseren ved hjelp av en tastatursnarvei. Bruk ${1}.","indent":"Innrykk","redo":"Gjør om","strikethrough":"Gjennomstreking","justifyFull":"Juster","justifyCenter":"Midtstill","hiliteColor":"Bakgrunnsfarge","deleteTable":"Slett tabell","outdent":"Fjern innrykk","cut":"Klipp ut","plainFormatBlock":"Avsnittsstil","toggleDir":"Bytt retning","bold":"Fet","tabIndent":"Tabulatorinnrykk","justifyRight":"Høyrejuster","print":"Print","newPage":"New Page","appleKey":"⌘${0}","fullScreen":"Toggle Full Screen","viewSource":"View HTML Source","ctrlKey":"ctrl+${0}"})
\ No newline at end of file
diff --git a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/_editor/nls/nl/FontChoice.js b/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/_editor/nls/nl/FontChoice.js
deleted file mode 100644
index e6811aa..0000000
--- a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/_editor/nls/nl/FontChoice.js
+++ /dev/null
@@ -1 +0,0 @@
-({"1":"xx-klein","2":"x-klein","formatBlock":"Opmaak","3":"klein","4":"gemiddeld","5":"groot","6":"x-groot","7":"xx-groot","fantasy":"fantasy","serif":"serif","p":"Alinea","pre":"Vooraf opgemaakt","sans-serif":"sans-serif","fontName":"Lettertype","h1":"Kop","h2":"Subkop","h3":"Sub-subkop","monospace":"monospace","fontSize":"Grootte","cursive":"cursief"})
\ No newline at end of file
diff --git a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/_editor/nls/nl/LinkDialog.js b/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/_editor/nls/nl/LinkDialog.js
deleted file mode 100644
index ddcd2fd..0000000
--- a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/_editor/nls/nl/LinkDialog.js
+++ /dev/null
@@ -1 +0,0 @@
-({"set":"Instellen","text":"Beschrijving:","insertImageTitle":"Afbeeldingseigenschappen","url":"URL:","createLinkTitle":"Linkeigenschappen","newWindow":"New Window","topWindow":"Topmost Window","target":"Target:","parentWindow":"Parent Window","currentWindow":"Current Window"})
\ No newline at end of file
diff --git a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/_editor/nls/nl/commands.js b/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/_editor/nls/nl/commands.js
deleted file mode 100644
index bae4fe8..0000000
--- a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/_editor/nls/nl/commands.js
+++ /dev/null
@@ -1 +0,0 @@
-({"removeFormat":"Opmaak verwijderen","copy":"Kopiëren","paste":"Plakken","selectAll":"Alles selecteren","insertOrderedList":"Genummerde lijst","insertTable":"Tabel invoegen/bewerken","underline":"Onderstrepen","foreColor":"Voorgrondkleur","htmlToggle":"HTML-bron","formatBlock":"Alineastijl","insertHorizontalRule":"Horizontale liniaal","delete":"Wissen","insertUnorderedList":"Lijst met opsommingstekens","tableProp":"Tabeleigenschap","insertImage":"Afbeelding invoegen","superscript":"Superscript","subscript":"Subscript","createLink":"Link maken","undo":"Ongedaan maken","italic":"Cursief","fontName":"Lettertype","justifyLeft":"Links uitlijnen","unlink":"Link verwijderen","toggleTableBorder":"Tabelkader wijzigen","fontSize":"Lettergrootte","systemShortcut":"De actie \"${0}\" is alleen beschikbaar in uw browser via een sneltoetscombinatie. Gebruik ${1}.","indent":"Inspringen","redo":"Opnieuw","strikethrough":"Doorhalen","justifyFull":"Uitvullen","justifyCenter":"Centreren","hiliteColor":"Achtergrondkleur","deleteTable":"Tabel wissen","outdent":"Uitspringen","cut":"Knippen","plainFormatBlock":"Alineastijl","toggleDir":"Schrijfrichting wijzigen","bold":"Vet","tabIndent":"Inspringen","justifyRight":"Rechts uitlijnen","print":"Print","newPage":"New Page","appleKey":"⌘${0}","fullScreen":"Toggle Full Screen","viewSource":"View HTML Source","ctrlKey":"ctrl+${0}"})
\ No newline at end of file
diff --git a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/_editor/nls/pl/FontChoice.js b/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/_editor/nls/pl/FontChoice.js
deleted file mode 100644
index 3c03893..0000000
--- a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/_editor/nls/pl/FontChoice.js
+++ /dev/null
@@ -1 +0,0 @@
-({"1":"najmniejsza","2":"mniejsza","formatBlock":"Format","3":"mała","4":"średnia","5":"duża","6":"większa","7":"największa","fantasy":"fantazyjna","serif":"szeryfowa","p":"Akapit","pre":"Wstępnie sformatowane","sans-serif":"bezszeryfowa","fontName":"Czcionka","h1":"Nagłówek","h2":"Nagłówek 2-go poziomu","h3":"Nagłówek 3-go poziomu","monospace":"czcionka o stałej szerokości","fontSize":"Wielkość","cursive":"kursywa"})
\ No newline at end of file
diff --git a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/_editor/nls/pl/LinkDialog.js b/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/_editor/nls/pl/LinkDialog.js
deleted file mode 100644
index 86f71e5..0000000
--- a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/_editor/nls/pl/LinkDialog.js
+++ /dev/null
@@ -1 +0,0 @@
-({"text":"Opis:","insertImageTitle":"Właściwości obrazu","set":"Ustaw","newWindow":"Nowe okno","topWindow":"Okno najwyższego poziomu","target":"Cel:","createLinkTitle":"Właściwości odsyłacza","parentWindow":"Okno macierzyste","currentWindow":"Bieżące okno","url":"Adres URL:"})
\ No newline at end of file
diff --git a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/_editor/nls/pl/commands.js b/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/_editor/nls/pl/commands.js
deleted file mode 100644
index 8ee8acf..0000000
--- a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/_editor/nls/pl/commands.js
+++ /dev/null
@@ -1 +0,0 @@
-({"removeFormat":"Usuń formatowanie","copy":"Kopiuj","paste":"Wklej","selectAll":"Wybierz wszystko","insertOrderedList":"Lista numerowana","insertTable":"Wstaw/edytuj tabelę","print":"Drukuj","underline":"Podkreślenie","foreColor":"Kolor pierwszego planu","htmlToggle":"Źródło HTML","formatBlock":"Styl akapitu","newPage":"Nowa strona","insertHorizontalRule":"Linia pozioma","delete":"Usuń","insertUnorderedList":"Lista wypunktowana","tableProp":"Właściwość tabeli","insertImage":"Wstaw obraz","superscript":"Indeks górny","subscript":"Indeks dolny","createLink":"Utwórz odsyłacz","undo":"Cofnij","fullScreen":"Przełącz pełny ekran","italic":"Kursywa","fontName":"Nazwa czcionki","justifyLeft":"Wyrównaj do lewej","unlink":"Usuń odsyłacz","toggleTableBorder":"Przełącz ramkę tabeli","viewSource":"Wyświetl kod źródłowy HTML","ctrlKey":"Ctrl+${0}","fontSize":"Wielkość czcionki","systemShortcut":"Działanie ${0} jest dostępne w tej przeglądarce wyłącznie przy użyciu skrótu klawiaturowego. Należy użyć klawiszy ${1}.","indent":"Wcięcie","redo":"Ponów","strikethrough":"Przekreślenie","justifyFull":"Wyrównaj do lewej i prawej","justifyCenter":"Wyrównaj do środka","hiliteColor":"Kolor tła","deleteTable":"Usuń tabelę","outdent":"Usuń wcięcie","cut":"Wytnij","plainFormatBlock":"Styl akapitu","toggleDir":"Przełącz kierunek","bold":"Pogrubienie","tabIndent":"Wcięcie o tabulator","justifyRight":"Wyrównaj do prawej","appleKey":"⌘${0}"})
\ No newline at end of file
diff --git a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/_editor/nls/pt-pt/FontChoice.js b/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/_editor/nls/pt-pt/FontChoice.js
deleted file mode 100644
index c72a102..0000000
--- a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/_editor/nls/pt-pt/FontChoice.js
+++ /dev/null
@@ -1 +0,0 @@
-({"1":"xxs","2":"xs","formatBlock":"Formato","3":"small","4":"medium","5":"large","6":"xl","7":"xxl","fantasy":"fantasy","serif":"serif","p":"Parágrafo","pre":"Pré-formatado","sans-serif":"sans-serif","fontName":"Tipo de letra","h1":"Título","h2":"Sub-título","h3":"Sub-subtítulo","monospace":"monospace","fontSize":"Tamanho","cursive":"cursive"})
\ No newline at end of file
diff --git a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/_editor/nls/pt-pt/LinkDialog.js b/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/_editor/nls/pt-pt/LinkDialog.js
deleted file mode 100644
index 09da9f6..0000000
--- a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/_editor/nls/pt-pt/LinkDialog.js
+++ /dev/null
@@ -1 +0,0 @@
-({"set":"Definir","text":"Descrição:","insertImageTitle":"Propriedades da imagem","url":"URL:","createLinkTitle":"Propriedades da ligação","newWindow":"Nova Janela","topWindow":"Primeira Janela","target":"Destino:","parentWindow":"Janela Pai","currentWindow":"Janela Atual"})
\ No newline at end of file
diff --git a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/_editor/nls/pt-pt/commands.js b/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/_editor/nls/pt-pt/commands.js
deleted file mode 100644
index 678ba22..0000000
--- a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/_editor/nls/pt-pt/commands.js
+++ /dev/null
@@ -1 +0,0 @@
-({"removeFormat":"Remover formato","copy":"Copiar","paste":"Colar","selectAll":"Seleccionar tudo","insertOrderedList":"Lista numerada","insertTable":"Inserir/Editar tabela","underline":"Sublinhado","foreColor":"Cor de primeiro plano","htmlToggle":"Origem HTML","formatBlock":"Estilo de parágrafo","insertHorizontalRule":"Régua horizontal","delete":"Eliminar","insertUnorderedList":"Lista marcada","tableProp":"Propriedades da tabela","insertImage":"Inserir imagem","superscript":"Superior à linha","subscript":"Inferior à linha","createLink":"Criar ligação","undo":"Anular","italic":"Itálico","fontName":"Nome do tipo de letra","justifyLeft":"Alinhar à esquerda","unlink":"Remover ligação","toggleTableBorder":"Alternar contorno da tabela","fontSize":"Tamanho do tipo de letra","systemShortcut":"A acção \"${0}\" apenas está disponível no navegador utilizando um atalho de teclado. Utilize ${1}.","indent":"Indentar","redo":"Repetir","strikethrough":"Rasurado","justifyFull":"Justificar","justifyCenter":"Alinhar ao centro","hiliteColor":"Cor de segundo plano","deleteTable":"Eliminar tabela","outdent":"Recuar","cut":"Cortar","plainFormatBlock":"Estilo de parágrafo","toggleDir":"Alternar direcção","bold":"Negrito","tabIndent":"Indentar com a tecla Tab","justifyRight":"Alinhar à direita","print":"Impressão","newPage":"Nova Página","fullScreen":"Comutar Tela Cheia","viewSource":"Visualizar Origem HTML","appleKey":"⌘${0}","ctrlKey":"ctrl+${0}"})
\ No newline at end of file
diff --git a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/_editor/nls/pt/FontChoice.js b/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/_editor/nls/pt/FontChoice.js
deleted file mode 100644
index 5919b43..0000000
--- a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/_editor/nls/pt/FontChoice.js
+++ /dev/null
@@ -1 +0,0 @@
-({"1":"extra-extra-pequeno","2":"extra-pequeno","formatBlock":"Formatar","3":"pequena","4":"médio","5":"grande","6":"extra-grande","7":"extra-extra-grande","fantasy":"fantasy","serif":"serif","p":"Parágrafo","pre":"Pré-formatado","sans-serif":"sans-serif","fontName":"Fonte","h1":"Título","h2":"Subtítulo","h3":"Sub-subtítulo","monospace":"espaço simples","fontSize":"Tamanho","cursive":"cursiva"})
\ No newline at end of file
diff --git a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/_editor/nls/pt/LinkDialog.js b/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/_editor/nls/pt/LinkDialog.js
deleted file mode 100644
index 0a55795..0000000
--- a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/_editor/nls/pt/LinkDialog.js
+++ /dev/null
@@ -1 +0,0 @@
-({"text":"Descrição:","insertImageTitle":"Propriedades de Imagem","set":"Definir","newWindow":"Nova Janela","topWindow":"Primeira Janela","target":"Destino:","createLinkTitle":"Propriedades de Link","parentWindow":"Janela Pai","currentWindow":"Janela Atual","url":"URL:"})
\ No newline at end of file
diff --git a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/_editor/nls/pt/commands.js b/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/_editor/nls/pt/commands.js
deleted file mode 100644
index 271c6cf..0000000
--- a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/_editor/nls/pt/commands.js
+++ /dev/null
@@ -1 +0,0 @@
-({"removeFormat":"Remover Formato","copy":"Copiar","paste":"Colar","selectAll":"Selecionar Todos","insertOrderedList":"Lista Numerada","insertTable":"Inserir/Editar Tabela","print":"Impressão","underline":"Sublinhado","foreColor":"Cor do Primeiro Plano","htmlToggle":"Origem HTML","formatBlock":"Estilo de Parágrafo","newPage":"Nova Página","insertHorizontalRule":"Régua Horizontal","delete":"Excluir","insertUnorderedList":"Lista com Marcadores","tableProp":"Propriedade da Tabela","insertImage":"Inserir Imagem","superscript":"Sobrescrito","subscript":"Subscrito","createLink":"Criar Link","undo":"Desfazer","fullScreen":"Comutar Tela Cheia","italic":"Itálico","fontName":"Nome da Fonte","justifyLeft":"Alinhar pela Esquerda","unlink":"Remover Link","toggleTableBorder":"Alternar Moldura da Tabela","viewSource":"Visualizar Origem HTML","fontSize":"Tamanho da Fonte","systemShortcut":"A ação \"${0}\" está disponível em seu navegador apenas usando um atalho do teclado. Use ${1}.","indent":"Recuar","redo":"Refazer","strikethrough":"Tachado","justifyFull":"Justificar","justifyCenter":"Alinhar pelo Centro","hiliteColor":"Cor de segundo plano","deleteTable":"Excluir Tabela","outdent":"Não-chanfrado","cut":"Recortar","plainFormatBlock":"Estilo de Parágrafo","toggleDir":"Comutar Direção","bold":"Negrito","tabIndent":"Recuo de Guia","justifyRight":"Alinhar pela Direita","appleKey":"⌘${0}","ctrlKey":"ctrl+${0}"})
\ No newline at end of file
diff --git a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/_editor/nls/ru/FontChoice.js b/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/_editor/nls/ru/FontChoice.js
deleted file mode 100644
index cebf574..0000000
--- a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/_editor/nls/ru/FontChoice.js
+++ /dev/null
@@ -1 +0,0 @@
-({"1":"самый маленький","2":"очень маленький","formatBlock":"Формат","3":"маленький","4":"средний","5":"большой","6":"очень большой","7":"самый большой","fantasy":"артистический","serif":"с засечками","p":"Абзац","pre":"Заранее отформатированный","sans-serif":"без засечек","fontName":"Шрифт","h1":"Заголовок","h2":"Подзаголовок","h3":"Вложенный подзаголовок","monospace":"непропорциональный","fontSize":"Размер","cursive":"курсив"})
\ No newline at end of file
diff --git a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/_editor/nls/ru/LinkDialog.js b/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/_editor/nls/ru/LinkDialog.js
deleted file mode 100644
index ddc2f7b..0000000
--- a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/_editor/nls/ru/LinkDialog.js
+++ /dev/null
@@ -1 +0,0 @@
-({"text":"Описание:","insertImageTitle":"Свойства изображения","set":"Задать","newWindow":"Новое окно","topWindow":"Окно верхнего уровня","target":"Целевой объект:","createLinkTitle":"Свойства ссылки","parentWindow":"Родительское окно","currentWindow":"Текущее окно","url":"URL:"})
\ No newline at end of file
diff --git a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/_editor/nls/ru/commands.js b/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/_editor/nls/ru/commands.js
deleted file mode 100644
index bbc7617..0000000
--- a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/_editor/nls/ru/commands.js
+++ /dev/null
@@ -1 +0,0 @@
-({"removeFormat":"Удалить формат","copy":"Копировать","paste":"Вставить","selectAll":"Выбрать все","insertOrderedList":"Нумерованный список","insertTable":"Вставить/изменить таблицу","print":"Печать","underline":"Подчеркивание","foreColor":"Цвет текста","htmlToggle":"Код HTML","formatBlock":"Стиль абзаца","newPage":"Создать страницу","insertHorizontalRule":"Горизонтальная линейка","delete":"Удалить","insertUnorderedList":"Список с маркерами","tableProp":"Свойства таблицы","insertImage":"Вставить изображение","superscript":"Верхний индекс","subscript":"Нижний индекс","createLink":"Создать ссылку","undo":"Отменить","fullScreen":"Переключить полноэкранный режим","italic":"Курсив","fontName":"Название шрифта","justifyLeft":"По левому краю","unlink":"Удалить ссылку","toggleTableBorder":"Переключить рамку таблицы","viewSource":"Показать исходный код HTML","fontSize":"Размер шрифта","systemShortcut":"Действие \"${0}\" можно выполнить в браузере только путем нажатия клавиш ${1}.","indent":"Отступ","redo":"Повторить","strikethrough":"Перечеркивание","justifyFull":"По ширине","justifyCenter":"По центру","hiliteColor":"Цвет фона","deleteTable":"Удалить таблицу","outdent":"Втяжка","cut":"Вырезать","plainFormatBlock":"Стиль абзаца","toggleDir":"Изменить направление","bold":"Полужирный","tabIndent":"Табуляция","justifyRight":"По правому краю","appleKey":"⌘${0}","ctrlKey":"ctrl+${0}"})
\ No newline at end of file
diff --git a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/_editor/nls/sk/FontChoice.js b/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/_editor/nls/sk/FontChoice.js
deleted file mode 100644
index 9f8dc09..0000000
--- a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/_editor/nls/sk/FontChoice.js
+++ /dev/null
@@ -1 +0,0 @@
-({"1":"xx-small","2":"x-small","formatBlock":"Formát","3":"small","4":"medium","5":"large","6":"x-large","7":"xx-large","fantasy":"fantasy","serif":"serif","p":"Odsek","pre":"Predformátované","sans-serif":"sans-serif","fontName":"Písmo","h1":"Hlavička","h2":"Podhlavička","h3":"Pod-podhlavička","monospace":"monospace","fontSize":"Veľkosť","cursive":"cursive"})
\ No newline at end of file
diff --git a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/_editor/nls/sk/LinkDialog.js b/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/_editor/nls/sk/LinkDialog.js
deleted file mode 100644
index 3b4d7a8..0000000
--- a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/_editor/nls/sk/LinkDialog.js
+++ /dev/null
@@ -1 +0,0 @@
-({"set":"Nastaviť","text":"Popis:","insertImageTitle":"Vlastnosti obrázku","url":"URL:","createLinkTitle":"Vlastnosti odkazu","newWindow":"New Window","topWindow":"Topmost Window","target":"Target:","parentWindow":"Parent Window","currentWindow":"Current Window"})
\ No newline at end of file
diff --git a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/_editor/nls/sk/commands.js b/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/_editor/nls/sk/commands.js
deleted file mode 100644
index 1118482..0000000
--- a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/_editor/nls/sk/commands.js
+++ /dev/null
@@ -1 +0,0 @@
-({"removeFormat":"Odstrániť formát","copy":"Kopírovať","paste":"Nalepiť","selectAll":"Vybrať všetko","insertOrderedList":"Číslovaný zoznam","insertTable":"Vložiť/upraviť tabuľku","underline":"Podčiarknuť","foreColor":"Farba popredia","htmlToggle":"Zdroj HTML","formatBlock":"Štýl odseku","insertHorizontalRule":"Horizontálna čiara","delete":"Vymazať","insertUnorderedList":"Zoznam s odrážkami","tableProp":"Vlastnosť tabuľky","insertImage":"Vložiť obrázok","superscript":"Horný index","subscript":"Dolný index","createLink":"Vytvoriť prepojenie","undo":"Vrátiť späť","italic":"Kurzíva","fontName":"Názov písma","justifyLeft":"Zarovnať doľava","unlink":"Odstrániť prepojenie","toggleTableBorder":"Prepnúť rámček tabuľky","fontSize":"Veľkosť písma","systemShortcut":"Akcia \"${0}\" je vo vašom prehliadači dostupná len s použitím klávesovej skratky. Použite ${1}.","indent":"Odsadiť","redo":"Znova vykonať","strikethrough":"Prečiarknuť","justifyFull":"Zarovnať podľa okraja","justifyCenter":"Zarovnať na stred","hiliteColor":"Farba pozadia","deleteTable":"Vymazať tabuľku","outdent":"Predsadiť","cut":"Vystrihnúť","plainFormatBlock":"Štýl odseku","toggleDir":"Prepnúť smer","bold":"Tučné písmo","tabIndent":"Odsadenie tabulátora","justifyRight":"Zarovnať doprava","print":"Print","newPage":"New Page","appleKey":"⌘${0}","fullScreen":"Toggle Full Screen","viewSource":"View HTML Source","ctrlKey":"ctrl+${0}"})
\ No newline at end of file
diff --git a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/_editor/nls/sl/FontChoice.js b/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/_editor/nls/sl/FontChoice.js
deleted file mode 100644
index 3a7094c..0000000
--- a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/_editor/nls/sl/FontChoice.js
+++ /dev/null
@@ -1 +0,0 @@
-({"1":"xx-majhno","2":"x-majhno","formatBlock":"Oblika","3":"majhno","4":"srednje","5":"veliko","6":"x-veliko","7":"xx-veliko","fantasy":"fantasy","serif":"serif","p":"Odstavek","pre":"Vnaprej oblikovano","sans-serif":"sans-serif","fontName":"Pisava","h1":"Naslov","h2":"Podnaslov","h3":"Pod podnaslov","monospace":"monospace","fontSize":"Velikost","cursive":"cursive"})
\ No newline at end of file
diff --git a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/_editor/nls/sl/LinkDialog.js b/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/_editor/nls/sl/LinkDialog.js
deleted file mode 100644
index 203a25d..0000000
--- a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/_editor/nls/sl/LinkDialog.js
+++ /dev/null
@@ -1 +0,0 @@
-({"set":"Nastavi","text":"Opis:","insertImageTitle":"Lastnosti slike","url":"URL:","createLinkTitle":"Lastnosti povezave","newWindow":"New Window","topWindow":"Topmost Window","target":"Target:","parentWindow":"Parent Window","currentWindow":"Current Window"})
\ No newline at end of file
diff --git a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/_editor/nls/sl/commands.js b/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/_editor/nls/sl/commands.js
deleted file mode 100644
index 4fb720c..0000000
--- a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/_editor/nls/sl/commands.js
+++ /dev/null
@@ -1 +0,0 @@
-({"removeFormat":"Odstrani obliko zapisa","copy":"Prekopiraj","paste":"Prilepi","selectAll":"Izberi vse","insertOrderedList":"Oštevilčen seznam","insertTable":"Vstavi/Uredi tabelo","underline":"Podčrtano","foreColor":"Barva ospredja","htmlToggle":"Izvor HTML","formatBlock":"Slog odstavka","insertHorizontalRule":"Horizontalno pravilo","delete":"Izbriši","insertUnorderedList":"Naštevni seznam","tableProp":"Lastnost tabele","insertImage":"Vstavi sliko","superscript":"Nadpisano","subscript":"Podpisano","createLink":"Ustvari povezavo","undo":"Razveljavi","italic":"Ležeče","fontName":"Ime pisave","justifyLeft":"Poravnaj levo","unlink":"Odstrani povezavo","toggleTableBorder":"Preklopi obrobo tabele","fontSize":"Velikost pisave","systemShortcut":"Dejanje \"${0}\" lahko v vašem brskalniku uporabite samo z bližnjico na tipkovnici. Uporabite ${1}.","indent":"Zamik","redo":"Znova uveljavi","strikethrough":"Prečrtano","justifyFull":"Obojestranka poravnava","justifyCenter":"Sredinska poravnava","hiliteColor":"Barva ozadja","deleteTable":"Izbriši tabelo","outdent":"Zamik navzven","cut":"Izreži","plainFormatBlock":"Slog odstavka","toggleDir":"Preklopi usmeritev","bold":"Krepko","tabIndent":"Zamik tabulatorja","justifyRight":"Poravnaj desno","print":"Print","newPage":"New Page","appleKey":"⌘${0}","fullScreen":"Toggle Full Screen","viewSource":"View HTML Source","ctrlKey":"ctrl+${0}"})
\ No newline at end of file
diff --git a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/_editor/nls/sv/FontChoice.js b/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/_editor/nls/sv/FontChoice.js
deleted file mode 100644
index 106f020..0000000
--- a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/_editor/nls/sv/FontChoice.js
+++ /dev/null
@@ -1 +0,0 @@
-({"1":"mycket, mycket litet","2":"mycket litet","formatBlock":"Format","3":"litet","4":"medelstort","5":"stort","6":"extra stort","7":"extra extra stort","fantasy":"fantasy","serif":"serif","p":"Stycke","pre":"Förformaterat","sans-serif":"sans-serif","fontName":"Teckensnitt","h1":"Rubrik","h2":"Underrubrik","h3":"Underunderrubrik","monospace":"monospace","fontSize":"Storlek","cursive":"kursivt"})
\ No newline at end of file
diff --git a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/_editor/nls/sv/LinkDialog.js b/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/_editor/nls/sv/LinkDialog.js
deleted file mode 100644
index ed6c3da..0000000
--- a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/_editor/nls/sv/LinkDialog.js
+++ /dev/null
@@ -1 +0,0 @@
-({"set":"Ange","text":"Beskrivning:","insertImageTitle":"Bildegenskaper","url":"URL-adress:","createLinkTitle":"Länkegenskaper","newWindow":"New Window","topWindow":"Topmost Window","target":"Target:","parentWindow":"Parent Window","currentWindow":"Current Window"})
\ No newline at end of file
diff --git a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/_editor/nls/sv/commands.js b/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/_editor/nls/sv/commands.js
deleted file mode 100644
index df5e091..0000000
--- a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/_editor/nls/sv/commands.js
+++ /dev/null
@@ -1 +0,0 @@
-({"removeFormat":"Ta bort format","copy":"Kopiera","paste":"Klistra in","selectAll":"Markera allt","insertOrderedList":"Numrerad lista","insertTable":"Infoga/redigera tabell","underline":"Understrykning","foreColor":"Förgrundsfärg","htmlToggle":"HTML-källkod","formatBlock":"Styckeformat","insertHorizontalRule":"Horisontell linjal","delete":"Ta bort","insertUnorderedList":"Punktlista","tableProp":"Tabellegenskap","insertImage":"Infoga bild","superscript":"Upphöjt","subscript":"Nedsänkt","createLink":"Skapa länk","undo":"Ångra","italic":"Kursiv","fontName":"Teckensnittsnamn","justifyLeft":"Vänsterjustera","unlink":"Ta bort länk","toggleTableBorder":"Aktivera/avaktivera tabellram","ctrlKey":"Ctrl+${0}","fontSize":"Teckenstorlek","systemShortcut":"Åtgärden \"${0}\" är endast tillgänglig i webbläsarenmed hjälp av ett kortkommando. Använd ${1}.","indent":"Indrag","redo":"Gör om","strikethrough":"Genomstruken","justifyFull":"Marginaljustera","justifyCenter":"Centrera","hiliteColor":"Bakgrundsfärg","deleteTable":"Ta bort tabell","outdent":"Utdrag","cut":"Klipp ut","plainFormatBlock":"Styckeformat","toggleDir":"Växla riktning","bold":"Fetstil","tabIndent":"Tabbindrag","justifyRight":"Högerjustera","print":"Print","newPage":"New Page","appleKey":"⌘${0}","fullScreen":"Toggle Full Screen","viewSource":"View HTML Source"})
\ No newline at end of file
diff --git a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/_editor/nls/th/FontChoice.js b/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/_editor/nls/th/FontChoice.js
deleted file mode 100644
index 63613a4..0000000
--- a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/_editor/nls/th/FontChoice.js
+++ /dev/null
@@ -1 +0,0 @@
-({"1":"xx-small","2":"x-small","formatBlock":"รูปแบบ","3":"small","4":"medium","5":"large","6":"x-large","7":"xx-large","fantasy":"fantasy","serif":"serif","p":"ย่อหน้า","pre":"การกำหนดรูปแบบล่วงหน้า","sans-serif":"sans-serif","fontName":"ฟอนต์","h1":"ส่วนหัว","h2":"ส่วนหัวย่อย","h3":"ส่วนย่อยของส่วนหัวย่อย","monospace":"monospace","fontSize":"ขนาด","cursive":"cursive"})
\ No newline at end of file
diff --git a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/_editor/nls/th/LinkDialog.js b/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/_editor/nls/th/LinkDialog.js
deleted file mode 100644
index b5ce3f8..0000000
--- a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/_editor/nls/th/LinkDialog.js
+++ /dev/null
@@ -1 +0,0 @@
-({"set":"ตั้งค่า","text":"รายละเอียด","insertImageTitle":"คุณสมบัติอิมเมจ","url":"URL:","createLinkTitle":"คุณสมบัติลิงก์","newWindow":"New Window","topWindow":"Topmost Window","target":"Target:","parentWindow":"Parent Window","currentWindow":"Current Window"})
\ No newline at end of file
diff --git a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/_editor/nls/th/commands.js b/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/_editor/nls/th/commands.js
deleted file mode 100644
index ec513a5..0000000
--- a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/_editor/nls/th/commands.js
+++ /dev/null
@@ -1 +0,0 @@
-({"removeFormat":"ลบรูปแบบออก","copy":"คัดลอก","paste":"วาง","selectAll":"เลือกทั้งหมด","insertOrderedList":"ลำดับเลข","insertTable":"แทรก/แก้ไข ตาราง","underline":"ขีดเส้นใต้","foreColor":"สีพื้นหน้า","htmlToggle":"ซอร์ส HTML","formatBlock":"ลักษณะย่อหน้า","insertHorizontalRule":"ไม้บรรทัดแนวนอน","delete":"ลบ","insertUnorderedList":"หัวข้อย่อย","tableProp":"คุณสมบัติตาราง","insertImage":"แทรกอิมเมจ","superscript":"ตัวยก","subscript":"ตัวห้อย","createLink":"สร้างลิงก์","undo":"เลิกทำ","italic":"ตัวเอียง","fontName":"ชื่อฟอนต์","justifyLeft":"จัดชิดซ้าย","unlink":"ลบลิงก์ออก","toggleTableBorder":"สลับเส้นขอบตาราง","fontSize":"ขนาดฟอนต์","systemShortcut":"แอ็กชัน \"${0}\" ใช้งานได้เฉพาะกับเบราว์เซอร์ของคุณโดยใช้แป้นพิมพ์ลัด ใช้ ${1}","indent":"เพิ่มการเยื้อง","redo":"ทำซ้ำ","strikethrough":"ขีดทับ","justifyFull":"จัดชิดขอบ","justifyCenter":"จัดกึ่งกลาง","hiliteColor":"สีพื้นหลัง","deleteTable":"ลบตาราง","outdent":"ลดการเยื้อง","cut":"ตัด","plainFormatBlock":"ลักษณะย่อหน้า","toggleDir":"สลับทิศทาง","bold":"ตัวหนา","tabIndent":"เยื้องแท็บ","justifyRight":"จัดชิดขวา","print":"Print","newPage":"New Page","appleKey":"⌘${0}","fullScreen":"Toggle Full Screen","viewSource":"View HTML Source","ctrlKey":"ctrl+${0}"})
\ No newline at end of file
diff --git a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/_editor/nls/tr/FontChoice.js b/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/_editor/nls/tr/FontChoice.js
deleted file mode 100644
index d2ca7c4..0000000
--- a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/_editor/nls/tr/FontChoice.js
+++ /dev/null
@@ -1 +0,0 @@
-({"1":"xx-küçük","2":"x-küçük","formatBlock":"Biçim","3":"küçük","4":"orta","5":"büyük","6":"x-büyük","7":"xx-büyük","fantasy":"fantazi","serif":"serif","p":"Paragraf","pre":"Önceden Biçimlendirilmiş","sans-serif":"sans-serif","fontName":"Yazı Tipi","h1":"Başlık","h2":"Alt Başlık","h3":"Alt Alt Başlık","monospace":"tek aralıklı","fontSize":"Boyut","cursive":"el yazısı"})
\ No newline at end of file
diff --git a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/_editor/nls/tr/LinkDialog.js b/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/_editor/nls/tr/LinkDialog.js
deleted file mode 100644
index 2a2491a..0000000
--- a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/_editor/nls/tr/LinkDialog.js
+++ /dev/null
@@ -1 +0,0 @@
-({"set":"Ayarla","text":"Açıklama:","insertImageTitle":"Resim Özellikleri","url":"URL:","createLinkTitle":"Bağlantı Özellikleri","newWindow":"New Window","topWindow":"Topmost Window","target":"Target:","parentWindow":"Parent Window","currentWindow":"Current Window"})
\ No newline at end of file
diff --git a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/_editor/nls/tr/commands.js b/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/_editor/nls/tr/commands.js
deleted file mode 100644
index 99c966c..0000000
--- a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/_editor/nls/tr/commands.js
+++ /dev/null
@@ -1 +0,0 @@
-({"removeFormat":"Biçimi Kaldır","copy":"Kopyala","paste":"Yapıştır","selectAll":"Tümünü Seç","insertOrderedList":"Numaralı Liste","insertTable":"Tablo Ekle/Düzenle","underline":"Altı Çizili","foreColor":"Ön Plan Rengi","htmlToggle":"HTML Kaynağı","formatBlock":"Paragraf Stili","insertHorizontalRule":"Yatay Kural","delete":"Sil","insertUnorderedList":"Madde İşaretli Liste","tableProp":"Tablo Özelliği","insertImage":"Resim Ekle","superscript":"Üst Simge","subscript":"Alt Simge","createLink":"Bağlantı Oluştur","undo":"Geri Al","italic":"İtalik","fontName":"Yazı Tipi Adı","justifyLeft":"Sola Hizala","unlink":"Bağlantıyı Kaldır","toggleTableBorder":"Tablo Kenarlığını Göster/Gizle","fontSize":"Yazı Tipi Boyutu","systemShortcut":"\"${0}\" işlemi yalnızca tarayıcınızda bir klavye kısayoluyla birlikte kullanılabilir. Şunu kullanın: ${1}.","indent":"Girinti","redo":"Yinele","strikethrough":"Üstü Çizili","justifyFull":"Yasla","justifyCenter":"Ortaya Hizala","hiliteColor":"Arka Plan Rengi","deleteTable":"Tabloyu Sil","outdent":"Çıkıntı","cut":"Kes","plainFormatBlock":"Paragraf Stili","toggleDir":"Yönü Değiştir","bold":"Kalın","tabIndent":"Sekme Girintisi","justifyRight":"Sağa Hizala","print":"Print","newPage":"New Page","appleKey":"⌘${0}","fullScreen":"Toggle Full Screen","viewSource":"View HTML Source","ctrlKey":"ctrl+${0}"})
\ No newline at end of file
diff --git a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/_editor/nls/zh-tw/FontChoice.js b/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/_editor/nls/zh-tw/FontChoice.js
deleted file mode 100644
index d32e163..0000000
--- a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/_editor/nls/zh-tw/FontChoice.js
+++ /dev/null
@@ -1 +0,0 @@
-({"1":"最小","2":"較小","formatBlock":"格式","3":"小","4":"中","5":"大","6":"較大","7":"最大","fantasy":"Fantasy","serif":"新細明體","p":"段落","pre":"預先格式化","sans-serif":"新細明體","fontName":"字型","h1":"標題","h2":"子標題","h3":"次子標題","monospace":"等寬","fontSize":"大小","cursive":"Cursive"})
\ No newline at end of file
diff --git a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/_editor/nls/zh-tw/LinkDialog.js b/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/_editor/nls/zh-tw/LinkDialog.js
deleted file mode 100644
index a639ac7..0000000
--- a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/_editor/nls/zh-tw/LinkDialog.js
+++ /dev/null
@@ -1 +0,0 @@
-({"text":"說明:","insertImageTitle":"影像內容","set":"設定","newWindow":"新視窗","topWindow":"最上層視窗","target":"目標:","createLinkTitle":"鏈結內容","parentWindow":"上層視窗","currentWindow":"現行視窗","url":"URL:"})
\ No newline at end of file
diff --git a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/_editor/nls/zh-tw/commands.js b/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/_editor/nls/zh-tw/commands.js
deleted file mode 100644
index d72dc4e..0000000
--- a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/_editor/nls/zh-tw/commands.js
+++ /dev/null
@@ -1 +0,0 @@
-({"removeFormat":"移除格式","copy":"複製","paste":"貼上","selectAll":"全選","insertOrderedList":"編號清單","insertTable":"插入/編輯表格","print":"列印","underline":"底線","foreColor":"前景顏色","htmlToggle":"HTML 原始檔","formatBlock":"段落樣式","newPage":"新建頁面","insertHorizontalRule":"水平尺規","delete":"刪除","insertUnorderedList":"項目符號清單","tableProp":"表格內容","insertImage":"插入影像","superscript":"上標","subscript":"下標","createLink":"建立鏈結","undo":"復原","fullScreen":"切換全螢幕","italic":"斜體","fontName":"字型名稱","justifyLeft":"靠左對齊","unlink":"移除鏈結","toggleTableBorder":"切換表格邊框","viewSource":"檢視 HTML 原始檔","fontSize":"字型大小","systemShortcut":"\"${0}\" 動作只能在瀏覽器中透過使用鍵盤快速鍵來使用。請使用 ${1}。","indent":"縮排","redo":"重做","strikethrough":"加刪除線","justifyFull":"對齊","justifyCenter":"置中對齊","hiliteColor":"背景顏色","deleteTable":"刪除表格","outdent":"凸排","cut":"剪下","plainFormatBlock":"段落樣式","toggleDir":"切換方向","bold":"粗體","tabIndent":"定位點縮排","justifyRight":"靠右對齊","appleKey":"⌘${0}","ctrlKey":"ctrl+${0}"})
\ No newline at end of file
diff --git a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/_editor/nls/zh/FontChoice.js b/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/_editor/nls/zh/FontChoice.js
deleted file mode 100644
index c5d8510..0000000
--- a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/_editor/nls/zh/FontChoice.js
+++ /dev/null
@@ -1 +0,0 @@
-({"1":"XXS 号","2":"XS 号","formatBlock":"格式","3":"S 号","4":"M 号","5":"L 号","6":"XL 号","7":"XXL 号","fantasy":"虚线","serif":"有衬线","p":"段落","pre":"预设有格式的","sans-serif":"无衬线","fontName":"字体","h1":"标题","h2":"子标题","h3":"二级子标题","monospace":"等宽字体","fontSize":"大小","cursive":"草书"})
\ No newline at end of file
diff --git a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/_editor/nls/zh/LinkDialog.js b/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/_editor/nls/zh/LinkDialog.js
deleted file mode 100644
index da4c500..0000000
--- a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/_editor/nls/zh/LinkDialog.js
+++ /dev/null
@@ -1 +0,0 @@
-({"text":"描述:","insertImageTitle":"图像属性","set":"设置","newWindow":"新窗口","topWindow":"最顶部窗口","target":"目标:","createLinkTitle":"链接属性","parentWindow":"父窗口","currentWindow":"当前窗口","url":"URL:"})
\ No newline at end of file
diff --git a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/_editor/nls/zh/commands.js b/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/_editor/nls/zh/commands.js
deleted file mode 100644
index 43d29c8..0000000
--- a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/_editor/nls/zh/commands.js
+++ /dev/null
@@ -1 +0,0 @@
-({"removeFormat":"除去格式","copy":"复制","paste":"粘贴","selectAll":"全选","insertOrderedList":"编号列表","insertTable":"插入/编辑表","print":"打印","underline":"下划线","foreColor":"前景色","htmlToggle":"HTML 源代码","formatBlock":"段落样式","newPage":"新建页面","insertHorizontalRule":"水平线","delete":"删除","insertUnorderedList":"符号列表","tableProp":"表属性","insertImage":"插入图像","superscript":"上标","subscript":"下标","createLink":"创建链接","undo":"撤销","fullScreen":"切换全屏","italic":"斜体","fontName":"字体名称","justifyLeft":"左对齐","unlink":"除去链接","toggleTableBorder":"切换表边框","viewSource":"查看 HTML 源代码","fontSize":"字体大小","systemShortcut":"只能通过使用键盘快捷键在浏览器中执行 \"${0}\" 操作。请使用 ${1}。","indent":"增加缩进","redo":"重做","strikethrough":"删除线","justifyFull":"对齐","justifyCenter":"居中","hiliteColor":"背景色","deleteTable":"删除表","outdent":"减少缩进","cut":"剪切","plainFormatBlock":"段落样式","toggleDir":"切换方向","bold":"粗体","tabIndent":"制表符缩进","justifyRight":"右对齐","appleKey":"⌘${0}","ctrlKey":"ctrl+${0}"})
\ No newline at end of file
diff --git a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/_editor/plugins/AlwaysShowToolbar.js b/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/_editor/plugins/AlwaysShowToolbar.js
deleted file mode 100644
index d60427e..0000000
--- a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/_editor/plugins/AlwaysShowToolbar.js
+++ /dev/null
@@ -1,188 +0,0 @@
-/*
- Copyright (c) 2004-2009, The Dojo Foundation All Rights Reserved.
- Available via Academic Free License >= 2.1 OR the modified BSD license.
- see: http://dojotoolkit.org/license for details
-*/
-
-
-if(!dojo._hasResource["dijit._editor.plugins.AlwaysShowToolbar"]){ //_hasResource checks added by build. Do not use _hasResource directly in your code.
-dojo._hasResource["dijit._editor.plugins.AlwaysShowToolbar"] = true;
-dojo.provide("dijit._editor.plugins.AlwaysShowToolbar");
-
-dojo.declare("dijit._editor.plugins.AlwaysShowToolbar", dijit._editor._Plugin,
- {
- // summary:
- // This plugin is required for Editors in auto-expand mode.
- // It handles the auto-expansion as the user adds/deletes text,
- // and keeps the editor's toolbar visible even when the top of the editor
- // has scrolled off the top of the viewport (usually when editing a long
- // document).
- // description:
- // Specify this in extraPlugins (or plugins) parameter and also set
- // height to "".
- // example:
- // | <div dojoType="dijit.Editor" height=""
- // | extraPlugins="['dijit._editor.plugins.AlwaysShowToolbar']">
-
- // _handleScroll: Boolean
- // Enables/disables the handler for scroll events
- _handleScroll: true,
-
- setEditor: function(e){
- // Overrides _Plugin.setEditor().
- if(!e.iframe){
- console.log('Port AlwaysShowToolbar plugin to work with Editor without iframe');
- return;
- }
-
- this.editor = e;
-
- e.onLoadDeferred.addCallback(dojo.hitch(this, this.enable));
- },
-
- enable: function(d){
- // summary:
- // Enable plugin. Called when Editor has finished initializing.
- // tags:
- // private
-
- this._updateHeight();
- this.connect(window, 'onscroll', "globalOnScrollHandler");
- this.connect(this.editor, 'onNormalizedDisplayChanged', "_updateHeight");
- return d;
- },
-
- _updateHeight: function(){
- // summary:
- // Updates the height of the editor area to fit the contents.
- var e = this.editor;
- if(!e.isLoaded){ return; }
- if(e.height){ return; }
-
- var height = dojo.marginBox(e.editNode).h;
- if(dojo.isOpera){
- height = e.editNode.scrollHeight;
- }
- // console.debug('height',height);
- // alert(this.editNode);
-
- //height maybe zero in some cases even though the content is not empty,
- //we try the height of body instead
- if(!height){
- height = dojo.marginBox(e.document.body).h;
- }
-
- if(height == 0){
- console.debug("Can not figure out the height of the editing area!");
- return; //prevent setting height to 0
- }
- if(dojo.isIE <= 7 && this.editor.minHeight){
- var min = parseInt(this.editor.minHeight);
- if(height < min){ height = min; }
- }
- if(height != this._lastHeight){
- this._lastHeight = height;
- // this.editorObject.style.height = this._lastHeight + "px";
- dojo.marginBox(e.iframe, { h: this._lastHeight });
- }
- },
-
- // _lastHeight: Integer
- // Height in px of the editor at the last time we did sizing
- _lastHeight: 0,
-
- globalOnScrollHandler: function(){
- // summary:
- // Handler for scroll events that bubbled up to <html>
- // tags:
- // private
-
- var isIE6 = dojo.isIE < 7;
- if(!this._handleScroll){ return; }
- var tdn = this.editor.toolbar.domNode;
- var db = dojo.body;
-
- if(!this._scrollSetUp){
- this._scrollSetUp = true;
- this._scrollThreshold = dojo.position(tdn, true).y;
-// console.log("threshold:", this._scrollThreshold);
- //what's this for?? comment out for now
-// if((isIE6)&&(db)&&(dojo.style(db, "backgroundIimage")=="none")){
-// db.style.backgroundImage = "url(" + dojo.uri.moduleUri("dijit", "templates/blank.gif") + ")";
-// db.style.backgroundAttachment = "fixed";
-// }
- }
-
- var scrollPos = dojo._docScroll().y;
- var s = tdn.style;
-
- if(scrollPos > this._scrollThreshold && scrollPos < this._scrollThreshold+this._lastHeight){
- // dojo.debug(scrollPos);
- if(!this._fixEnabled){
- var tdnbox = dojo.marginBox(tdn);
- this.editor.iframe.style.marginTop = tdnbox.h+"px";
-
- if(isIE6){
- s.left = dojo.position(tdn).x;
- if(tdn.previousSibling){
- this._IEOriginalPos = ['after',tdn.previousSibling];
- }else if(tdn.nextSibling){
- this._IEOriginalPos = ['before',tdn.nextSibling];
- }else{
- this._IEOriginalPos = ['last',tdn.parentNode];
- }
- dojo.body().appendChild(tdn);
- dojo.addClass(tdn,'dijitIEFixedToolbar');
- }else{
- s.position = "fixed";
- s.top = "0px";
- }
-
- dojo.marginBox(tdn, { w: tdnbox.w });
- s.zIndex = 2000;
- this._fixEnabled = true;
- }
- // if we're showing the floating toolbar, make sure that if
- // we've scrolled past the bottom of the editor that we hide
- // the toolbar for this instance of the editor.
-
- // TODO: when we get multiple editor toolbar support working
- // correctly, ensure that we check this against the scroll
- // position of the bottom-most editor instance.
- var eHeight = (this.height) ? parseInt(this.editor.height) : this.editor._lastHeight;
- s.display = (scrollPos > this._scrollThreshold+eHeight) ? "none" : "";
- }else if(this._fixEnabled){
- this.editor.iframe.style.marginTop = '';
- s.position = "";
- s.top = "";
- s.zIndex = "";
- s.display = "";
- if(isIE6){
- s.left = "";
- dojo.removeClass(tdn,'dijitIEFixedToolbar');
- if(this._IEOriginalPos){
- dojo.place(tdn, this._IEOriginalPos[1], this._IEOriginalPos[0]);
- this._IEOriginalPos = null;
- }else{
- dojo.place(tdn, this.editor.iframe, 'before');
- }
- }
- s.width = "";
- this._fixEnabled = false;
- }
- },
-
- destroy: function(){
- // Overrides _Plugin.destroy(). TODO: call this.inherited() rather than repeating code.
- this._IEOriginalPos = null;
- this._handleScroll = false;
- dojo.forEach(this._connects, dojo.disconnect);
-// clearInterval(this.scrollInterval);
-
- if(dojo.isIE < 7){
- dojo.removeClass(this.editor.toolbar.domNode, 'dijitIEFixedToolbar');
- }
- }
-});
-
-}
diff --git a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/_editor/plugins/EnterKeyHandling.js b/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/_editor/plugins/EnterKeyHandling.js
deleted file mode 100644
index 1c051e8..0000000
--- a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/_editor/plugins/EnterKeyHandling.js
+++ /dev/null
@@ -1,602 +0,0 @@
-/*
- Copyright (c) 2004-2009, The Dojo Foundation All Rights Reserved.
- Available via Academic Free License >= 2.1 OR the modified BSD license.
- see: http://dojotoolkit.org/license for details
-*/
-
-
-if(!dojo._hasResource["dijit._editor.plugins.EnterKeyHandling"]){ //_hasResource checks added by build. Do not use _hasResource directly in your code.
-dojo._hasResource["dijit._editor.plugins.EnterKeyHandling"] = true;
-dojo.provide("dijit._editor.plugins.EnterKeyHandling");
-
-dojo.require("dijit._base.scroll");
-
-dojo.declare("dijit._editor.plugins.EnterKeyHandling", dijit._editor._Plugin, {
- // summary:
- // This plugin tries to make all browsers behave consistently w.r.t
- // displaying paragraphs, specifically dealing with when the user presses
- // the ENTER key.
- //
- // It deals mainly with how the text appears on the screen (specifically
- // address the double-spaced line problem on IE), but also has some code
- // to normalize what attr('value') returns.
- //
- // description:
- // This plugin has three modes:
- //
- // * blockModeForEnter=BR
- // * blockModeForEnter=DIV
- // * blockModeForEnter=P
- //
- // In blockModeForEnter=P, the ENTER key semantically means "start a new
- // paragraph", whereas shift-ENTER means "new line in the current paragraph".
- // For example:
- //
- // | first paragraph <shift-ENTER>
- // | second line of first paragraph <ENTER>
- // |
- // | second paragraph
- //
- // In the other two modes, the ENTER key means to go to a new line in the
- // current paragraph, and users [visually] create a new paragraph by pressing ENTER twice.
- // For example, if the user enters text into an editor like this:
- //
- // | one <ENTER>
- // | two <ENTER>
- // | three <ENTER>
- // | <ENTER>
- // | four <ENTER>
- // | five <ENTER>
- // | six <ENTER>
- //
- // It will appear on the screen as two paragraphs of three lines each.
- //
- // blockNodeForEnter=BR
- // --------------------
- // On IE, typing the above keystrokes in the editor will internally produce DOM of:
- //
- // | <p>one</p>
- // | <p>two</p>
- // | <p>three</p>
- // | <p></p>
- // | <p>four</p>
- // | <p>five</p>
- // | <p>six</p>
- //
- // However, blockNodeForEnter=BR makes the Editor on IE display like other browsers, by
- // changing the CSS for the <p> node to not have top/bottom margins,
- // thus eliminating the double-spaced appearance.
- //
- // Also, attr('value') when used w/blockNodeForEnter=br on IE will return:
- //
- // | <p> one <br> two <br> three </p>
- // | <p> four <br> five <br> six </p>
- //
- // This output normalization implemented by a filter when the
- // editor writes out it's data, to convert consecutive <p>
- // nodes into a single <p> node with internal <br> separators.
- //
- // There's also a pre-filter to mirror the post-filter.
- // It converts a single <p> with <br> line breaks
- // into separate <p> nodes, and creates empty <p> nodes for spacing
- // between paragraphs.
- //
- // On FF typing the above keystrokes will internally generate:
- //
- // | one <br> two <br> three <br> <br> four <br> five <br> six <br>
- //
- // And on Safari it will generate:
- //
- // | "one"
- // | <div>two</div>
- // | <div>three</div>
- // | <div><br></div>
- // | <div>four</div>
- // | <div>five</div>
- // | <div>six</div>
- //
- // Thus, Safari and FF already look correct although semantically their content is a bit strange.
- // On Safari or Firefox blockNodeForEnter=BR uses the builtin editor command "insertBrOnReturn",
- // but that doesn't seem to do anything.
- // Thus, attr('value') on safari/FF returns the browser-specific HTML listed above,
- // rather than the semantically meaningful value that IE returns: <p>one<br>two</p> <p>three<br>four</p>.
- //
- // (Note: originally based on http://bugs.dojotoolkit.org/ticket/2859)
- //
- // blockNodeForEnter=P
- // -------------------
- // Plugin will monitor keystrokes and update the editor's content on the fly,
- // so that the ENTER key will create a new <p> on FF and Safari (it already
- // works that way by default on IE).
- //
- // blockNodeForEnter=DIV
- // ---------------------
- // Follows the same code path as blockNodeForEnter=P but inserting a <div>
- // on ENTER key. Although it produces strange internal DOM, like this:
- //
- // | <div>paragraph one</div>
- // | <div>paragraph one, line 2</div>
- // | <div> </div>
- // | <div>paragraph two</div>
- //
- // it does provide a consistent look on all browsers, and the on-the-fly DOM updating
- // can be useful for collaborative editing.
-
- // blockNodeForEnter: String
- // This property decides the behavior of Enter key. It can be either P,
- // DIV, BR, or empty (which means disable this feature). Anything else
- // will trigger errors.
- //
- // See class description for more details.
- blockNodeForEnter: 'BR',
-
- constructor: function(args){
- if(args){
- dojo.mixin(this,args);
- }
- },
-
- setEditor: function(editor){
- // Overrides _Plugin.setEditor().
- this.editor = editor;
- if(this.blockNodeForEnter == 'BR'){
- if(dojo.isIE){
- editor.contentDomPreFilters.push(dojo.hitch(this, "regularPsToSingleLinePs"));
- editor.contentDomPostFilters.push(dojo.hitch(this, "singleLinePsToRegularPs"));
- editor.onLoadDeferred.addCallback(dojo.hitch(this, "_fixNewLineBehaviorForIE"));
- }else{
- editor.onLoadDeferred.addCallback(dojo.hitch(this,function(d){
- try{
- this.editor.document.execCommand("insertBrOnReturn", false, true);
- }catch(e){}
- return d;
- }));
- }
- }else if(this.blockNodeForEnter){
- // add enter key handler
- // FIXME: need to port to the new event code!!
- dojo['require']('dijit._editor.range');
- var h = dojo.hitch(this,this.handleEnterKey);
- editor.addKeyHandler(13, 0, 0, h); //enter
- editor.addKeyHandler(13, 0, 1, h); //shift+enter
- this.connect(this.editor,'onKeyPressed','onKeyPressed');
- }
- },
- onKeyPressed: function(e){
- // summary:
- // Handler for keypress events.
- // tags:
- // private
- if(this._checkListLater){
- if(dojo.withGlobal(this.editor.window, 'isCollapsed', dijit)){
- var liparent=dojo.withGlobal(this.editor.window, 'getAncestorElement', dijit._editor.selection, ['LI']);
- if(!liparent){
- // circulate the undo detection code by calling RichText::execCommand directly
- dijit._editor.RichText.prototype.execCommand.call(this.editor, 'formatblock',this.blockNodeForEnter);
- // set the innerHTML of the new block node
- var block = dojo.withGlobal(this.editor.window, 'getAncestorElement', dijit._editor.selection, [this.blockNodeForEnter]);
- if(block){
- block.innerHTML=this.bogusHtmlContent;
- if(dojo.isIE){
- // move to the start by moving backwards one char
- var r = this.editor.document.selection.createRange();
- r.move('character',-1);
- r.select();
- }
- }else{
- console.error('onKeyPressed: Cannot find the new block node'); // FIXME
- }
- }else{
- if(dojo.isMoz){
- if(liparent.parentNode.parentNode.nodeName == 'LI'){
- liparent=liparent.parentNode.parentNode;
- }
- }
- var fc=liparent.firstChild;
- if(fc && fc.nodeType == 1 && (fc.nodeName == 'UL' || fc.nodeName == 'OL')){
- liparent.insertBefore(fc.ownerDocument.createTextNode('\xA0'),fc);
- var newrange = dijit.range.create(this.editor.window);
- newrange.setStart(liparent.firstChild,0);
- var selection = dijit.range.getSelection(this.editor.window, true);
- selection.removeAllRanges();
- selection.addRange(newrange);
- }
- }
- }
- this._checkListLater = false;
- }
- if(this._pressedEnterInBlock){
- // the new created is the original current P, so we have previousSibling below
- if(this._pressedEnterInBlock.previousSibling){
- this.removeTrailingBr(this._pressedEnterInBlock.previousSibling);
- }
- delete this._pressedEnterInBlock;
- }
- },
-
- // bogusHtmlContent: [private] String
- // HTML to stick into a new empty block
- bogusHtmlContent: ' ',
-
- // blockNodes: [private] Regex
- // Regex for testing if a given tag is a block level (display:block) tag
- blockNodes: /^(?:P|H1|H2|H3|H4|H5|H6|LI)$/,
-
- handleEnterKey: function(e){
- // summary:
- // Handler for enter key events when blockModeForEnter is DIV or P.
- // description:
- // Manually handle enter key event to make the behavior consistent across
- // all supported browsers. See class description for details.
- // tags:
- // private
-
- var selection, range, newrange, doc=this.editor.document,br;
- if(e.shiftKey){ // shift+enter always generates <br>
- var parent = dojo.withGlobal(this.editor.window, "getParentElement", dijit._editor.selection);
- var header = dijit.range.getAncestor(parent,this.blockNodes);
- if(header){
- if(!e.shiftKey && header.tagName == 'LI'){
- return true; // let browser handle
- }
- selection = dijit.range.getSelection(this.editor.window);
- range = selection.getRangeAt(0);
- if(!range.collapsed){
- range.deleteContents();
- selection = dijit.range.getSelection(this.editor.window);
- range = selection.getRangeAt(0);
- }
- if(dijit.range.atBeginningOfContainer(header, range.startContainer, range.startOffset)){
- if(e.shiftKey){
- br=doc.createElement('br');
- newrange = dijit.range.create(this.editor.window);
- header.insertBefore(br,header.firstChild);
- newrange.setStartBefore(br.nextSibling);
- selection.removeAllRanges();
- selection.addRange(newrange);
- }else{
- dojo.place(br, header, "before");
- }
- }else if(dijit.range.atEndOfContainer(header, range.startContainer, range.startOffset)){
- newrange = dijit.range.create(this.editor.window);
- br=doc.createElement('br');
- if(e.shiftKey){
- header.appendChild(br);
- header.appendChild(doc.createTextNode('\xA0'));
- newrange.setStart(header.lastChild,0);
- }else{
- dojo.place(br, header, "after");
- newrange.setStartAfter(header);
- }
-
- selection.removeAllRanges();
- selection.addRange(newrange);
- }else{
- return true; // let browser handle
- }
- }else{
- // don't change this: do not call this.execCommand, as that may have other logic in subclass
- dijit._editor.RichText.prototype.execCommand.call(this.editor, 'inserthtml', '<br>');
- }
- return false;
- }
- var _letBrowserHandle = true;
-
- // first remove selection
- selection = dijit.range.getSelection(this.editor.window);
- range = selection.getRangeAt(0);
- if(!range.collapsed){
- range.deleteContents();
- selection = dijit.range.getSelection(this.editor.window);
- range = selection.getRangeAt(0);
- }
-
- var block = dijit.range.getBlockAncestor(range.endContainer, null, this.editor.editNode);
- var blockNode = block.blockNode;
-
- // if this is under a LI or the parent of the blockNode is LI, just let browser to handle it
- if((this._checkListLater = (blockNode && (blockNode.nodeName == 'LI' || blockNode.parentNode.nodeName == 'LI')))){
- if(dojo.isMoz){
- // press enter in middle of P may leave a trailing <br/>, let's remove it later
- this._pressedEnterInBlock = blockNode;
- }
- // if this li only contains spaces, set the content to empty so the browser will outdent this item
- if(/^(\s| |\xA0|<span\b[^>]*\bclass=['"]Apple-style-span['"][^>]*>(\s| |\xA0)<\/span>)?(<br>)?$/.test(blockNode.innerHTML)){
- // empty LI node
- blockNode.innerHTML = '';
- if(dojo.isWebKit){ // WebKit tosses the range when innerHTML is reset
- newrange = dijit.range.create(this.editor.window);
- newrange.setStart(blockNode, 0);
- selection.removeAllRanges();
- selection.addRange(newrange);
- }
- this._checkListLater = false; // nothing to check since the browser handles outdent
- }
- return true;
- }
-
- // text node directly under body, let's wrap them in a node
- if(!block.blockNode || block.blockNode===this.editor.editNode){
- try{
- dijit._editor.RichText.prototype.execCommand.call(this.editor, 'formatblock',this.blockNodeForEnter);
- }catch(e2){ /*squelch FF3 exception bug when editor content is a single BR*/ }
- // get the newly created block node
- // FIXME
- block = {blockNode:dojo.withGlobal(this.editor.window, "getAncestorElement", dijit._editor.selection, [this.blockNodeForEnter]),
- blockContainer: this.editor.editNode};
- if(block.blockNode){
- if(block.blockNode != this.editor.editNode &&
- (!(block.blockNode.textContent || block.blockNode.innerHTML).replace(/^\s+|\s+$/g, "").length)){
- this.removeTrailingBr(block.blockNode);
- return false;
- }
- }else{ // we shouldn't be here if formatblock worked
- block.blockNode = this.editor.editNode;
- }
- selection = dijit.range.getSelection(this.editor.window);
- range = selection.getRangeAt(0);
- }
-
- var newblock = doc.createElement(this.blockNodeForEnter);
- newblock.innerHTML=this.bogusHtmlContent;
- this.removeTrailingBr(block.blockNode);
- if(dijit.range.atEndOfContainer(block.blockNode, range.endContainer, range.endOffset)){
- if(block.blockNode === block.blockContainer){
- block.blockNode.appendChild(newblock);
- }else{
- dojo.place(newblock, block.blockNode, "after");
- }
- _letBrowserHandle = false;
- // lets move caret to the newly created block
- newrange = dijit.range.create(this.editor.window);
- newrange.setStart(newblock, 0);
- selection.removeAllRanges();
- selection.addRange(newrange);
- if(this.editor.height){
- dijit.scrollIntoView(newblock);
- }
- }else if(dijit.range.atBeginningOfContainer(block.blockNode,
- range.startContainer, range.startOffset)){
- dojo.place(newblock, block.blockNode, block.blockNode === block.blockContainer ? "first" : "before");
- if(newblock.nextSibling && this.editor.height){
- // position input caret - mostly WebKit needs this
- newrange = dijit.range.create(this.editor.window);
- newrange.setStart(newblock.nextSibling, 0);
- selection.removeAllRanges();
- selection.addRange(newrange);
- // browser does not scroll the caret position into view, do it manually
- dijit.scrollIntoView(newblock.nextSibling);
- }
- _letBrowserHandle = false;
- }else{ // press enter in the middle of P
- if(dojo.isMoz){
- // press enter in middle of P may leave a trailing <br/>, let's remove it later
- this._pressedEnterInBlock = block.blockNode;
- }
- }
- return _letBrowserHandle;
- },
-
- removeTrailingBr: function(container){
- // summary:
- // If last child of container is a <br>, then remove it.
- // tags:
- // private
- var para = /P|DIV|LI/i.test(container.tagName) ?
- container : dijit._editor.selection.getParentOfType(container,['P','DIV','LI']);
-
- if(!para){ return; }
- if(para.lastChild){
- if((para.childNodes.length > 1 && para.lastChild.nodeType == 3 && /^[\s\xAD]*$/.test(para.lastChild.nodeValue)) ||
- para.lastChild.tagName=='BR'){
-
- dojo.destroy(para.lastChild);
- }
- }
- if(!para.childNodes.length){
- para.innerHTML=this.bogusHtmlContent;
- }
- },
- _fixNewLineBehaviorForIE: function(d){
- // summary:
- // Insert CSS so <p> nodes don't have spacing around them,
- // thus hiding the fact that ENTER key on IE is creating new
- // paragraphs
-
- // cannot use !important since there may be custom user styling;
- var doc = this.editor.document;
- if(doc.__INSERTED_EDITIOR_NEWLINE_CSS === undefined){
- var style = dojo.create("style", {type: "text/css"}, doc.getElementsByTagName("head")[0]);
- style.styleSheet.cssText = "p{margin:0;}"; // cannot use !important since there may be custom user styling;
- this.editor.document.__INSERTED_EDITIOR_NEWLINE_CSS = true;
- }
- return d;
- },
- regularPsToSingleLinePs: function(element, noWhiteSpaceInEmptyP){
- // summary:
- // Converts a <p> node containing <br>'s into multiple <p> nodes.
- // description:
- // See singleLinePsToRegularPs(). This method does the
- // opposite thing, and is used as a pre-filter when loading the
- // editor, to mirror the effects of the post-filter at end of edit.
- // tags:
- // private
- function wrapLinesInPs(el){
- // move "lines" of top-level text nodes into ps
- function wrapNodes(nodes){
- // nodes are assumed to all be siblings
- var newP = nodes[0].ownerDocument.createElement('p'); // FIXME: not very idiomatic
- nodes[0].parentNode.insertBefore(newP, nodes[0]);
- dojo.forEach(nodes, function(node){
- newP.appendChild(node);
- });
- }
-
- var currentNodeIndex = 0;
- var nodesInLine = [];
- var currentNode;
- while(currentNodeIndex < el.childNodes.length){
- currentNode = el.childNodes[currentNodeIndex];
- if( currentNode.nodeType==3 || // text node
- (currentNode.nodeType==1 && currentNode.nodeName!='BR' && dojo.style(currentNode, "display")!="block")
- ){
- nodesInLine.push(currentNode);
- }else{
- // hit line delimiter; process nodesInLine if there are any
- var nextCurrentNode = currentNode.nextSibling;
- if(nodesInLine.length){
- wrapNodes(nodesInLine);
- currentNodeIndex = (currentNodeIndex+1)-nodesInLine.length;
- if(currentNode.nodeName=="BR"){
- dojo.destroy(currentNode);
- }
- }
- nodesInLine = [];
- }
- currentNodeIndex++;
- }
- if(nodesInLine.length){ wrapNodes(nodesInLine); }
- }
-
- function splitP(el){
- // split a paragraph into seperate paragraphs at BRs
- var currentNode = null;
- var trailingNodes = [];
- var lastNodeIndex = el.childNodes.length-1;
- for(var i=lastNodeIndex; i>=0; i--){
- currentNode = el.childNodes[i];
- if(currentNode.nodeName=="BR"){
- var newP = currentNode.ownerDocument.createElement('p');
- dojo.place(newP, el, "after");
- if(trailingNodes.length==0 && i != lastNodeIndex){
- newP.innerHTML = " "
- }
- dojo.forEach(trailingNodes, function(node){
- newP.appendChild(node);
- });
- dojo.destroy(currentNode);
- trailingNodes = [];
- }else{
- trailingNodes.unshift(currentNode);
- }
- }
- }
-
- var pList = [];
- var ps = element.getElementsByTagName('p');
- dojo.forEach(ps, function(p){ pList.push(p); });
- dojo.forEach(pList, function(p){
- var prevSib = p.previousSibling;
- if( (prevSib) && (prevSib.nodeType == 1) &&
- (prevSib.nodeName == 'P' || dojo.style(prevSib, 'display') != 'block')
- ){
- var newP = p.parentNode.insertBefore(this.document.createElement('p'), p);
- // this is essential to prevent IE from losing the P.
- // if it's going to be innerHTML'd later we need
- // to add the to _really_ force the issue
- newP.innerHTML = noWhiteSpaceInEmptyP ? "" : " ";
- }
- splitP(p);
- },this.editor);
- wrapLinesInPs(element);
- return element;
- },
-
- singleLinePsToRegularPs: function(element){
- // summary:
- // Called as post-filter.
- // Apparently collapses adjacent <p> nodes into a single <p>
- // nodes with <br> separating each line.
- //
- // example:
- // Given this input:
- // | <p>line 1</p>
- // | <p>line 2</p>
- // | <ol>
- // | <li>item 1
- // | <li>item 2
- // | </ol>
- // | <p>line 3</p>
- // | <p>line 4</p>
- //
- // Will convert to:
- // | <p>line 1<br>line 2</p>
- // | <ol>
- // | <li>item 1
- // | <li>item 2
- // | </ol>
- // | <p>line 3<br>line 4</p>
- //
- // Not sure why this situation would even come up after the pre-filter and
- // the enter-key-handling code.
- //
- // tags:
- // private
-
- function getParagraphParents(node){
- // summary:
- // Used to get list of all nodes that contain paragraphs.
- // Seems like that would just be the very top node itself, but apparently not.
- var ps = node.getElementsByTagName('p');
- var parents = [];
- for(var i=0; i<ps.length; i++){
- var p = ps[i];
- var knownParent = false;
- for(var k=0; k < parents.length; k++){
- if(parents[k] === p.parentNode){
- knownParent = true;
- break;
- }
- }
- if(!knownParent){
- parents.push(p.parentNode);
- }
- }
- return parents;
- }
-
- function isParagraphDelimiter(node){
- return (!node.childNodes.length || node.innerHTML==" ");
- }
-
- var paragraphContainers = getParagraphParents(element);
- for(var i=0; i<paragraphContainers.length; i++){
- var container = paragraphContainers[i];
- var firstPInBlock = null;
- var node = container.firstChild;
- var deleteNode = null;
- while(node){
- if(node.nodeType != 1 || node.tagName != 'P' ||
- (node.getAttributeNode('style') || {/*no style*/}).specified){
- firstPInBlock = null;
- }else if(isParagraphDelimiter(node)){
- deleteNode = node;
- firstPInBlock = null;
- }else{
- if(firstPInBlock == null){
- firstPInBlock = node;
- }else{
- if( (!firstPInBlock.lastChild || firstPInBlock.lastChild.nodeName != 'BR') &&
- (node.firstChild) &&
- (node.firstChild.nodeName != 'BR')
- ){
- firstPInBlock.appendChild(this.editor.document.createElement('br'));
- }
- while(node.firstChild){
- firstPInBlock.appendChild(node.firstChild);
- }
- deleteNode = node;
- }
- }
- node = node.nextSibling;
- if(deleteNode){
- dojo.destroy(deleteNode);
- deleteNode = null;
- }
- }
- }
- return element;
- }
-});
-
-}
diff --git a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/_editor/plugins/FontChoice.js b/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/_editor/plugins/FontChoice.js
deleted file mode 100644
index 25ab7b7..0000000
--- a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/_editor/plugins/FontChoice.js
+++ /dev/null
@@ -1,422 +0,0 @@
-/*
- Copyright (c) 2004-2009, The Dojo Foundation All Rights Reserved.
- Available via Academic Free License >= 2.1 OR the modified BSD license.
- see: http://dojotoolkit.org/license for details
-*/
-
-
-if(!dojo._hasResource["dijit._editor.plugins.FontChoice"]){ //_hasResource checks added by build. Do not use _hasResource directly in your code.
-dojo._hasResource["dijit._editor.plugins.FontChoice"] = true;
-dojo.provide("dijit._editor.plugins.FontChoice");
-
-dojo.require("dijit._editor._Plugin");
-dojo.require("dijit._editor.range");
-dojo.require("dijit.form.FilteringSelect");
-dojo.require("dojo.data.ItemFileReadStore");
-dojo.require("dojo.i18n");
-
-dojo.requireLocalization("dijit._editor", "FontChoice", null, "ROOT,ar,ca,cs,da,de,el,es,fi,fr,he,hu,it,ja,ko,nb,nl,pl,pt,pt-pt,ru,sk,sl,sv,th,tr,zh,zh-tw");
-
-dojo.declare("dijit._editor.plugins._FontDropDown",
- [dijit._Widget, dijit._Templated],{
- // summary:
- // Base class for widgets that contains a label (like "Font:")
- // and a FilteringSelect drop down to pick a value.
- // Used as Toolbar entry.
-
- // label: [public] String
- // The label to apply to this particular FontDropDown.
- label: "",
-
- // widgetsInTemplate: [public] boolean
- // Over-ride denoting the template has widgets to parse.
- widgetsInTemplate: true,
-
- // plainText: [public] boolean
- // Flag to indicate that the returned label should be plain text
- // instead of an example.
- plainText: false,
-
- // templateString: [public] String
- // The template used to construct the labeled dropdown.
- templateString:
- "<span style='white-space: nowrap' class='dijit dijitReset dijitInline'>" +
- "<label class='dijitLeft dijitInline' for='${selectId}'>${label}</label>" +
- "<input dojoType='dijit.form.FilteringSelect' required=false labelType=html labelAttr=label searchAttr=name " +
- "tabIndex='-1' id='${selectId}' dojoAttachPoint='select' value=''/>" +
- "</span>",
-
- postMixInProperties: function(){
- // summary:
- // Over-ride to misin specific properties.
- this.inherited(arguments);
-
- this.strings = dojo.i18n.getLocalization("dijit._editor", "FontChoice");
-
- // Set some substitution variables used in the template
- this.label = this.strings[this.command];
- this.id = dijit.getUniqueId(this.declaredClass.replace(/\./g,"_"));
- this.selectId = this.id + "_select";
-
- this.inherited(arguments);
- },
-
- postCreate: function(){
- // summary:
- // Over-ride for the default postCreate action
- // This establishes the filtering selects and the like.
-
- // Initialize the list of items in the drop down by creating data store with items like:
- // {value: 1, name: "xx-small", label: "<font size=1>xx-small</font-size>" }
- var items = dojo.map(this.values, function(value){
- var name = this.strings[value] || value;
- return {
- label: this.getLabel(value, name),
- name: name,
- value: value
- };
- }, this);
-
- this.select.store = new dojo.data.ItemFileReadStore({
- data: {
- identifier: "value",
- items: items
- }
- });
-
- this.select.attr("value", "", false);
- this.disabled = this.select.attr("disabled");
- },
-
- _setValueAttr: function(value, priorityChange){
- // summary:
- // Over-ride for the default action of setting the
- // widget value, maps the input to known values
- // value: Object|String
- // The value to set in the select.
- // priorityChange:
- // Optional parameter used to tell the select whether or not to fire
- // onChange event.
-
- //if the value is not a permitted value, just set empty string to prevent showing the warning icon
- priorityChange = priorityChange !== false?true:false;
- this.select.attr('value', dojo.indexOf(this.values,value) < 0 ? "" : value, priorityChange);
- if(!priorityChange){
- // Clear the last state in case of updateState calls. Ref: #10466
- this.select._lastValueReported=null;
- }
- },
-
- _getValueAttr: function(){
- // summary:
- // Allow retreving the value from the composite select on
- // call to button.attr("value");
- return this.select.attr('value');
- },
-
- focus: function(){
- // summary:
- // Over-ride for focus control of this widget. Delegates focus down to the
- // filtering select.
- this.select.focus();
- },
-
- _setDisabledAttr: function(value){
- // summary:
- // Over-ride for the button's 'disabled' attribute so that it can be
- // disabled programmatically.
-
- // Save off ths disabled state so the get retrieves it correctly
- //without needing to have a function proxy it.
- this.disabled = value;
- this.select.attr("disabled", value);
- }
-});
-
-
-dojo.declare("dijit._editor.plugins._FontNameDropDown", dijit._editor.plugins._FontDropDown, {
- // summary:
- // Dropdown to select a font; goes in editor toolbar.
-
- // generic: Boolean
- // Use generic (web standard) font names
- generic: false,
-
- // command: [public] String
- // The editor 'command' implemented by this plugin.
- command: "fontName",
-
- postMixInProperties: function(){
- // summary:
- // Over-ride for the default posr mixin control
- if(!this.values){
- this.values = this.generic ?
- ["serif", "sans-serif", "monospace", "cursive", "fantasy"] : // CSS font-family generics
- ["Arial", "Times New Roman", "Comic Sans MS", "Courier New"];
- }
- this.inherited(arguments);
- },
-
- getLabel: function(value, name){
- // summary:
- // Function used to generate the labels of the format dropdown
- // will return a formatted, or plain label based on the value
- // of the plainText option.
- // value: String
- // The 'insert value' associated with a name
- // name: String
- // The text name of the value
- if(this.plainText){
- return name;
- }else{
- return "<div style='font-family: "+value+"'>" + name + "</div>";
- }
- },
-
- _setValueAttr: function(value, priorityChange){
- // summary:
- // Over-ride for the default action of setting the
- // widget value, maps the input to known values
-
- priorityChange = priorityChange !== false?true:false;
- if(this.generic){
- var map = {
- "Arial": "sans-serif",
- "Helvetica": "sans-serif",
- "Myriad": "sans-serif",
- "Times": "serif",
- "Times New Roman": "serif",
- "Comic Sans MS": "cursive",
- "Apple Chancery": "cursive",
- "Courier": "monospace",
- "Courier New": "monospace",
- "Papyrus": "fantasy"
-// ,"????": "fantasy" TODO: IE doesn't map fantasy font-family?
- };
- value = map[value] || value;
- }
- this.inherited(arguments, [value, priorityChange]);
- }
-});
-
-dojo.declare("dijit._editor.plugins._FontSizeDropDown", dijit._editor.plugins._FontDropDown, {
- // summary:
- // Dropdown to select a font size; goes in editor toolbar.
-
- // command: [public] String
- // The editor 'command' implemented by this plugin.
- command: "fontSize",
-
- // values: [public] Number[]
- // The HTML font size values supported by this plugin
- values: [1,2,3,4,5,6,7], // sizes according to the old HTML FONT SIZE
-
- getLabel: function(value, name){
- // summary:
- // Function used to generate the labels of the format dropdown
- // will return a formatted, or plain label based on the value
- // of the plainText option.
- // We're stuck using the deprecated FONT tag to correspond
- // with the size measurements used by the editor
- // value: String
- // The 'insert value' associated with a name
- // name: String
- // The text name of the value
- if(this.plainText){
- return name;
- }else{
- return "<font size=" + value + "'>" + name + "</font>";
- }
- },
-
- _setValueAttr: function(value, priorityChange){
- // summary:
- // Over-ride for the default action of setting the
- // widget value, maps the input to known values
- priorityChange = priorityChange !== false?true:false;
- if(value.indexOf && value.indexOf("px") != -1){
- var pixels = parseInt(value, 10);
- value = {10:1, 13:2, 16:3, 18:4, 24:5, 32:6, 48:7}[pixels] || value;
- }
-
- this.inherited(arguments, [value, priorityChange]);
- }
-});
-
-
-dojo.declare("dijit._editor.plugins._FormatBlockDropDown", dijit._editor.plugins._FontDropDown, {
- // summary:
- // Dropdown to select a format (like paragraph or heading); goes in editor toolbar.
-
- // command: [public] String
- // The editor 'command' implemented by this plugin.
- command: "formatBlock",
-
- // values: [public] Array
- // The HTML format tags supported by this plugin
- values: ["p", "h1", "h2", "h3", "pre"],
-
- getLabel: function(value, name){
- // summary:
- // Function used to generate the labels of the format dropdown
- // will return a formatted, or plain label based on the value
- // of the plainText option.
- // value: String
- // The 'insert value' associated with a name
- // name: String
- // The text name of the value
- if(this.plainText){
- return name;
- }else{
- return "<" + value + ">" + name + "</" + value + ">";
- }
- }
-});
-
-// TODO: for 2.0, split into FontChoice plugin into three separate classes,
-// one for each command (and change registry below)
-dojo.declare("dijit._editor.plugins.FontChoice", dijit._editor._Plugin,{
- // summary:
- // This plugin provides three drop downs for setting style in the editor
- // (font, font size, and format block), as controlled by command.
- //
- // description:
- // The commands provided by this plugin are:
- //
- // * fontName
- // | Provides a drop down to select from a list of font names
- // * fontSize
- // | Provides a drop down to select from a list of font sizes
- // * formatBlock
- // | Provides a drop down to select from a list of block styles
- // |
- //
- // which can easily be added to an editor by including one or more of the above commands
- // in the `plugins` attribute as follows:
- //
- // | plugins="['fontName','fontSize',...]"
- //
- // It is possible to override the default dropdown list by providing an Array for the `custom` property when
- // instantiating this plugin, e.g.
- //
- // | plugins="[{name:'dijit._editor.plugins.FontChoice', command:'fontName', custom:['Verdana','Myriad','Garamond']},...]"
- //
- // Alternatively, for `fontName` only, `generic:true` may be specified to provide a dropdown with
- // [CSS generic font families](http://www.w3.org/TR/REC-CSS2/fonts.html#generic-font-families)
- //
- // Note that the editor is often unable to properly handle font styling information defined outside
- // the context of the current editor instance, such as pre-populated HTML.
-
- // useDefaultCommand: [protected] booleam
- // Override _Plugin.useDefaultCommand...
- // processing is handled by this plugin, not by dijit.Editor.
- useDefaultCommand: false,
-
- _initButton: function(){
- // summary:
- // Overrides _Plugin._initButton(), to initialize the FilteringSelect+label in toolbar,
- // rather than a simple button.
- // tags:
- // protected
-
- // Create the widget to go into the toolbar (the so-called "button")
- var clazz = {
- fontName: dijit._editor.plugins._FontNameDropDown,
- fontSize: dijit._editor.plugins._FontSizeDropDown,
- formatBlock: dijit._editor.plugins._FormatBlockDropDown
- }[this.command],
- params = this.params;
-
- // For back-compat reasons support setting custom values via "custom" parameter
- // rather than "values" parameter
- if(this.params.custom){
- params.values = this.params.custom;
- }
-
- this.button = new clazz(params);
-
- // Reflect changes to the drop down in the editor
- this.connect(this.button.select, "onChange", function(choice){
- // User invoked change, since all internal updates set priorityChange to false and will
- // not trigger an onChange event.
- this.editor.focus();
-
- if(this.command == "fontName" && choice.indexOf(" ") != -1){ choice = "'" + choice + "'"; }
-
- // Invoke, the editor already normalizes commands called through its
- // execCommand.
- this.editor.execCommand(this.command, choice);
- });
- },
-
- updateState: function(){
- // summary:
- // Overrides _Plugin.updateState(). This controls updating the menu
- // options to the right values on state changes in the document (that trigger a
- // test of the actions.)
- // It set value of drop down in toolbar to reflect font/font size/format block
- // of text at current caret position.
- // tags:
- // protected
- var _e = this.editor;
- var _c = this.command;
- if(!_e || !_e.isLoaded || !_c.length){ return; }
- if(this.button){
- var value;
- try{
- value = _e.queryCommandValue(_c) || "";
- }catch(e){
- //Firefox may throw error above if the editor is just loaded, ignore it
- value = "";
- }
-
- // strip off single quotes, if any
- var quoted = dojo.isString(value) && value.match(/'([^']*)'/);
- if(quoted){ value = quoted[1]; }
-
- if(!value && _c === "formatBlock"){
- // Some browsers (WebKit) doesn't actually get the tag info right.
- // So ... lets double-check it.
- var elem;
- // Try to find the current element where the caret is.
- var sel = dijit.range.getSelection(this.editor.window);
- if(sel && sel.rangeCount > 0){
- var range = sel.getRangeAt(0);
- if(range){
- elem = range.endContainer;
- }
- }
-
- // Okay, now see if we can find one of the formatting types we're in.
- while(elem && elem !== _e.editNode && elem !== _e.document){
- var tg = elem.tagName?elem.tagName.toLowerCase():"";
- if(tg && dojo.indexOf(this.button.values, tg) > -1){
- value = tg;
- break;
- }
- elem = elem.parentNode;
- }
- }
-
- if(value !== this.button.attr("value")){
- // Set the value, but denote it is not a priority change, so no
- // onchange fires.
- this.button.attr('value', value, false);
- }
- }
- }
-});
-
-// Register this plugin.
-dojo.subscribe(dijit._scopeName + ".Editor.getPlugin",null,function(o){
- if(o.plugin){ return; }
- switch(o.args.name){
- case "fontName": case "fontSize": case "formatBlock":
- o.plugin = new dijit._editor.plugins.FontChoice({
- command: o.args.name,
- plainText: o.args.plainText?o.args.plainText:false
- });
- }
-});
-
-}
diff --git a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/_editor/plugins/FullScreen.js b/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/_editor/plugins/FullScreen.js
deleted file mode 100644
index 137cd4f..0000000
--- a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/_editor/plugins/FullScreen.js
+++ /dev/null
@@ -1,393 +0,0 @@
-/*
- Copyright (c) 2004-2009, The Dojo Foundation All Rights Reserved.
- Available via Academic Free License >= 2.1 OR the modified BSD license.
- see: http://dojotoolkit.org/license for details
-*/
-
-
-if(!dojo._hasResource["dijit._editor.plugins.FullScreen"]){ //_hasResource checks added by build. Do not use _hasResource directly in your code.
-dojo._hasResource["dijit._editor.plugins.FullScreen"] = true;
-dojo.provide("dijit._editor.plugins.FullScreen");
-
-dojo.require("dijit._editor._Plugin");
-dojo.require("dijit.form.Button");
-dojo.require("dojo.i18n");
-
-dojo.requireLocalization("dijit._editor", "commands", null, "ROOT,ar,ca,cs,da,de,el,es,fi,fr,he,hu,it,ja,ko,nb,nl,pl,pt,pt-pt,ru,sk,sl,sv,th,tr,zh,zh-tw");
-
-dojo.declare("dijit._editor.plugins.FullScreen",dijit._editor._Plugin,{
- // summary:
- // This plugin provides FullScreen cabability to the editor. When
- // toggled on, it will render the editor into the full window and
- // overlay everything. It also binds to the hotkey: CTRL-SHIFT-F11
- // for toggling fullscreen mode.
-
- // zIndex: [public] Number
- // zIndex value used for overlaying the full page.
- // default is 500.
- zIndex: 500,
-
- // _origState: [private] Object
- // The original view state of the editor.
- _origState: null,
-
- // _origiFrameState: [private] Object
- // The original view state of the iframe of the editor.
- _origiFrameState: null,
-
- // _resizeHandle: [private] Object
- // Connection point used for handling resize when window resizes.
- _resizeHandle: null,
-
- // isFullscreen: [const] boolean
- // Read-Only variable used to denote of the editor is in fullscreen mode or not.
- isFullscreen: false,
-
- toggle: function(){
- // summary:
- // Function to allow programmatic toggling of the view.
- this.button.attr("checked", !this.button.attr("checked"));
- },
-
- _initButton: function(){
- // summary:
- // Over-ride for creation of the resize button.
- var strings = dojo.i18n.getLocalization("dijit._editor", "commands");
- this.button = new dijit.form.ToggleButton({
- label: strings["fullScreen"],
- showLabel: false,
- iconClass: this.iconClassPrefix + " " + this.iconClassPrefix + "FullScreen",
- tabIndex: "-1",
- onChange: dojo.hitch(this, "_setFullScreen")
- });
- },
-
- setEditor: function(editor){
- // summary:
- // Over-ride for the setting of the editor.
- // editor: Object
- // The editor to configure for this plugin to use.
- this.editor = editor;
- this._initButton();
-
- this.editor.addKeyHandler(dojo.keys.F11, true, true, dojo.hitch(this, function(e){
- // Enable the CTRL-SHIFT-F11 hotkey for fullscreen mode.
- this.toggle();
- dojo.stopEvent(e);
- setTimeout(dojo.hitch(this, function(){this.editor.focus();}), 250);
- return true;
- }));
- this.connect(this.editor.domNode, "onkeydown", "_containFocus");
- },
-
- _containFocus: function(e){
- // summary:
- // When in Full Screen mode, it's good to try and retain focus in the editor
- // so this function is intended to try and constrain the TAB key.
- // e: Event
- // The key event.
- // tags:
- // private
- if(this.isFullscreen){
- var ed = this.editor;
- if(!ed.isTabIndent &&
- ed._fullscreen_oldOnKeyDown &&
- e.keyCode === dojo.keys.TAB){
- // If we're in fullscreen mode, we want to take over how tab moves focus a bit.
- // to keep it within the editor since it's hiding the rest of the page.
- // IE hates changing focus IN the event handler, so need to put calls
- // in a timeout. Gotta love IE.
- // Also need to check for alternate view nodes if present and active.
- var f = dijit.getFocus();
- var avn = this._getAltViewNode();
- if(f.node == ed.iframe ||
- (avn && f.node === avn)){
- setTimeout(dojo.hitch(this, function(){
- ed.toolbar.focus();
- }), 10);
- }else{
- if(avn && dojo.style(ed.iframe, "display") === "none"){
- setTimeout(dojo.hitch(this, function(){
- dijit.focus(avn);
- }), 10);
- }else{
- setTimeout(dojo.hitch(this, function(){
- ed.focus();
- }), 10);
- }
- }
- dojo.stopEvent(e);
- }else if(ed._fullscreen_oldOnKeyDown){
- // Only call up when it's a different function. Traps corner case event issue
- // on IE which caused stack overflow on handler cleanup.
- ed._fullscreen_oldOnKeyDown(e);
- }
- }
- },
-
- _resizeEditor: function(){
- // summary:
- // Function to handle resizing the editor as the viewport
- // resizes (window scaled)
- // tags:
- // private
- var vp = dijit.getViewport();
- dojo.marginBox(this.editor.domNode, {
- w: vp.w,
- h: vp.h
- });
-
- //Adjust the inernal heights too, as they can be a bit off.
- var tBox = dojo.marginBox(this.editor.toolbar.domNode);
- var extents = dojo._getPadBorderExtents(this.editor.domNode);
-
- //AQdjust it.
- var cHeight = vp.h - (tBox.h + extents.h);
- dojo.marginBox(this.editor.iframe.parentNode, {
- h: cHeight
- });
- dojo.marginBox(this.editor.iframe, {
- h: cHeight
- });
- },
-
- _getAltViewNode: function(){
- // summary:
- // This function is intended as a hook point for setting an
- // alternate view node for when in full screen mode and the
- // editable iframe is hidden.
- // tags:
- // protected.
- },
-
- _setFullScreen: function(full){
- // summary:
- // Function to handle toggling between full screen and
- // regular view.
- // tags:
- // private
- var vp = dijit.getViewport();
-
- //Alias this for shorter code.
- var ed = this.editor;
- var body = dojo.body();
- var editorParent = ed.domNode.parentNode;
-
- this.isFullscreen = full;
-
- if(full){
- //Parent classes can royally screw up this plugin, so we
- //have to set eveything to position static.
- while(editorParent && editorParent !== dojo.body()){
- dojo.addClass(editorParent, "dijitForceStatic");
- editorParent = editorParent.parentNode;
- }
-
- // Save off the resize function. We want to kill its behavior.
- this._editorResizeHolder = this.editor.resize;
- ed.resize = function() {} ;
-
- // Try to constrain focus control.
- ed._fullscreen_oldOnKeyDown = ed.onKeyDown;
- ed.onKeyDown = dojo.hitch(this, this._containFocus);
-
- this._origState = {};
- this._origiFrameState = {};
-
- // Store the basic editor state we have to restore later.
- // Not using dojo.style here, had problems, didn't
- // give me stuff like 100%, gave me pixel calculated values.
- // Need the exact original values.
- var domNode = ed.domNode,
- domStyle = domNode && domNode.style || {};
- this._origState = {
- width: domStyle.width || "",
- height: domStyle.height || "",
- top: dojo.style(domNode, "top") || "",
- left: dojo.style(domNode, "left") || "",
- position: dojo.style(domNode, "position") || "static"
- };
-
- // Store the iframe state we have to restore later.
- // Not using dojo.style here, had problems, didn't
- // give me stuff like 100%, gave me pixel calculated values.
- // Need the exact original values.
- var iframe = ed.iframe,
- iframeStyle = iframe && iframe.style || {};
-
- var bc = dojo.style(ed.iframe, "backgroundColor");
- this._origiFrameState = {
- backgroundColor: bc || "transparent",
- width: iframeStyle.width || "auto",
- height: iframeStyle.height || "auto",
- zIndex: iframeStyle.zIndex || ""
- };
-
- // Okay, size everything.
- dojo.style(ed.domNode, {
- position: "absolute",
- top: "0px",
- left: "0px",
- zIndex: this.zIndex,
- width: vp.w + "px",
- height: vp.h + "px"
- });
-
- dojo.style(ed.iframe, {
- height: "100%",
- width: "100%",
- zIndex: this.zIndex,
- backgroundColor: bc !== "transparent" &&
- bc !== "rgba(0, 0, 0, 0)"?bc:"white"
- });
-
- dojo.style(ed.iframe.parentNode, {
- height: "95%",
- width: "100%"
- });
-
- // Store the overflow state we have to restore later.
- // IE had issues, so have to check that it's defined. Ugh.
- if(body.style && body.style.overflow){
- this._oldOverflow = dojo.style(body, "overflow");
- }else{
- this._oldOverflow = "";
- }
-
- if(dojo.isIE && !dojo.isQuirks){
- // IE will put scrollbars in anyway, html (parent of body)
- // also controls them in standards mode, so we have to
- // remove them, argh.
- if(body.parentNode &&
- body.parentNode.style &&
- body.parentNode.style.overflow){
- this._oldBodyParentOverflow = body.parentNode.style.overflow;
- }else{
- this._oldBodyParentOverflow = "scroll";
- }
- dojo.style(body.parentNode, "overflow", "hidden");
- }
- dojo.style(body, "overflow", "hidden");
-
- var resizer = function(){
- // function to handle resize events.
- // Will check current VP and only resize if
- // different.
- var vp = dijit.getViewport();
- if("_prevW" in this && "_prevH" in this){
- // No actual size change, ignore.
- if(vp.w === this._prevW && vp.h === this._prevH){
- return;
- }
- }else{
- this._prevW = vp.w;
- this._prevH = vp.h;
- }
- if(this._resizer){
- clearTimeout(this._resizer);
- delete this._resizer;
- }
- // Timeout it to help avoid spamming resize on IE.
- // Works for all browsers.
- this._resizer = setTimeout(dojo.hitch(this, function(){
- delete this._resizer;
- this._resizeEditor();
- }), 10);
- };
- this._resizeHandle = dojo.connect(window, "onresize", this, resizer);
-
- // Call it once to work around IE glitchiness. Safe for other browsers too.
- this._resizeEditor();
- var dn = this.editor.toolbar.domNode;
- setTimeout(function(){dijit.scrollIntoView(dn);}, 250);
- }else{
- // Restore resize function
- if(this._editorResizeHolder){
- this.editor.resize = this._editorResizeHolder;
- }
-
- if(!this._origState && !this._origiFrameState){
- // If we actually didn't toggle, then don't do anything.
- return;
- }
- if(ed._fullscreen_oldOnKeyDown){
- ed.onKeyDown = ed._fullscreen_oldOnKeyDown;
- delete ed._fullscreen_oldOnKeyDown;
- }
- if(this._resizeHandle){
- // Cleanup resizing listeners
- dojo.disconnect(this._resizeHandle);
- this._resizeHandle = null;
- }
- if(this._rst){
- clearTimeout(this._rst);
- this._rst = null;
- }
-
- //Remove all position static class assigns.
- while(editorParent && editorParent !== dojo.body()){
- dojo.removeClass(editorParent, "dijitForceStatic");
- editorParent = editorParent.parentNode;
- }
-
- // Add a timeout to make sure we don't have a resize firing in the
- // background at the time of minimize.
- var self = this;
- setTimeout(function(){
- // Restore all the editor state.
- if(dojo.isIE && !dojo.isQuirks){
- body.parentNode.style.overflow = self._oldBodyParentOverflow;
- delete self._oldBodyParentOverflow;
- }
- dojo.style(body, "overflow", self._oldOverflow);
- delete self._oldOverflow;
-
- dojo.style(ed.domNode, self._origState);
- dojo.style(ed.iframe.parentNode, {
- height: "",
- width: ""
- });
- dojo.style(ed.iframe, self._origiFrameState);
- delete self._origState;
- delete self._origiFrameState;
- // In case it is contained in a layout and the layout changed size,
- // go ahead and call resize.
- ed.resize();
- var pWidget = dijit.getEnclosingWidget(ed.domNode.parentNode);
- if(pWidget && pWidget.resize){
- pWidget.resize();
- }
- dijit.scrollIntoView(self.editor.toolbar.domNode);
- }, 100);
- }
- },
-
- destroy: function(){
- // summary:
- // Over-ride to ensure the resize handle gets cleaned up.
- if(this._resizeHandle){
- // Cleanup resizing listeners
- dojo.disconnect(this._resizeHandle);
- this._resizeHandle = null;
- }
- if(this._resizer){
- clearTimeout(this._resizer);
- this._resizer = null;
- }
- this.inherited(arguments);
- }
-});
-
-
-// Register this plugin.
-dojo.subscribe(dijit._scopeName + ".Editor.getPlugin",null,function(o){
- if(o.plugin){ return; }
- var name = o.args.name.toLowerCase();
- if(name === "fullscreen"){
- o.plugin = new dijit._editor.plugins.FullScreen({
- zIndex: ("zIndex" in o.args)?o.args.zIndex:500
- });
- }
-});
-
-}
diff --git a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/_editor/plugins/LinkDialog.js b/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/_editor/plugins/LinkDialog.js
deleted file mode 100644
index 54c4ab9..0000000
--- a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/_editor/plugins/LinkDialog.js
+++ /dev/null
@@ -1,456 +0,0 @@
-/*
- Copyright (c) 2004-2009, The Dojo Foundation All Rights Reserved.
- Available via Academic Free License >= 2.1 OR the modified BSD license.
- see: http://dojotoolkit.org/license for details
-*/
-
-
-if(!dojo._hasResource["dijit._editor.plugins.LinkDialog"]){ //_hasResource checks added by build. Do not use _hasResource directly in your code.
-dojo._hasResource["dijit._editor.plugins.LinkDialog"] = true;
-dojo.provide("dijit._editor.plugins.LinkDialog");
-
-dojo.require("dijit._Widget");
-dojo.require("dijit._Templated");
-dojo.require("dijit._editor._Plugin");
-dojo.require("dijit.TooltipDialog");
-dojo.require("dijit.form.Button");
-dojo.require("dijit.form.ValidationTextBox");
-dojo.require("dijit.form.Select");
-dojo.require("dijit._editor.range");
-dojo.require("dojo.i18n");
-dojo.require("dojo.string");
-dojo.requireLocalization("dijit", "common", null, "ROOT,ar,ca,cs,da,de,el,es,fi,fr,he,hu,it,ja,ko,nb,nl,pl,pt,pt-pt,ru,sk,sl,sv,th,tr,zh,zh-tw");
-dojo.requireLocalization("dijit._editor", "LinkDialog", null, "ROOT,ar,ca,cs,da,de,el,es,fi,fr,he,hu,it,ja,ko,nb,nl,pl,pt,pt-pt,ru,sk,sl,sv,th,tr,zh,zh-tw");
-
-dojo.declare("dijit._editor.plugins.LinkDialog", dijit._editor._Plugin, {
- // summary:
- // This plugin provides the basis for an 'anchor' (link) dialog and an extension of it
- // provides the image link dialog.
- //
- // description:
- // The command provided by this plugin is:
- // * createLink
-
- // Override _Plugin.buttonClass. This plugin is controlled by a DropDownButton
- // (which triggers a TooltipDialog).
- buttonClass: dijit.form.DropDownButton,
-
- // Override _Plugin.useDefaultCommand... processing is handled by this plugin, not by dijit.Editor.
- useDefaultCommand: false,
-
- // urlRegExp: [protected] String
- // Used for validating input as correct URL. While file:// urls are not terribly
- // useful, they are technically valid.
- urlRegExp: "((https?|ftps?|file)\\://|\./|/|)(/[a-zA-Z]{1,1}:/|)(((?:(?:[\\da-zA-Z](?:[-\\da-zA-Z]{0,61}[\\da-zA-Z])?)\\.)*(?:[a-zA-Z](?:[-\\da-zA-Z]{0,80}[\\da-zA-Z])?)\\.?)|(((\\d|[1-9]\\d|1\\d\\d|2[0-4]\\d|25[0-5])\\.){3}(\\d|[1-9]\\d|1\\d\\d|2[0-4]\\d|25[0-5])|(0[xX]0*[\\da-fA-F]?[\\da-fA-F]\\.){3}0[xX]0*[\\da-fA-F]?[\\da-fA-F]|(0+[0-3][0-7][0-7]\\.){3}0+[0-3][0-7][0-7]|(0|[1-9]\\d{0,8}|[1-3]\\d{9}|4[01]\\d{8}|42[0-8]\\d{7}|429[0-3]\\d{6}|4294[0-8]\\d{5}|42949[0-5]\\d{4}|429496[0-6]\\d{3}|4294967[01]\\d{2}|42949672[0-8]\\d|429496729[0-5])|0[xX]0*[\\da-fA-F]{1,8}|([\\da-fA-F]{1,4}\\:){7}[\\da-fA-F]{1,4}|([\\da-fA-F]{1,4}\\:){6}((\\d|[1-9]\\d|1\\d\\d|2[0-4]\\d|25[0-5])\\.){3}(\\d|[1-9]\\d|1\\d\\d|2[0-4]\\d|25[0-5])))(\\:\\d+)?(/(?:[^?#\\s/]+/)*(?:[^?#\\s/]+(?:\\?[^?#\\s/]*)?(?:#.*)?)?)?",
-
- // htmlTemplate: [protected] String
- // String used for templating the HTML to insert at the desired point.
- htmlTemplate: "<a href=\"${urlInput}\" _djrealurl=\"${urlInput}\"" +
- " target=\"${targetSelect}\"" +
- ">${textInput}</a>",
-
- // tag: [protected] String
- // Tag used for the link type.
- tag: "a",
-
- // _hostRxp [private] RegExp
- // Regular expression used to validate url fragments (ip address, hostname, etc)
- _hostRxp: new RegExp("^((([^\\[:]+):)?([^@]+)@)?(\\[([^\\]]+)\\]|([^\\[:]*))(:([0-9]+))?$"),
-
- // linkDialogTemplate: [protected] String
- // Template for contents of TooltipDialog to pick URL
- linkDialogTemplate: [
- "<table><tr><td>",
- "<label for='${id}_urlInput'>${url}</label>",
- "</td><td>",
- "<input dojoType='dijit.form.ValidationTextBox' regExp='${urlRegExp}' required='true' " +
- "id='${id}_urlInput' name='urlInput' intermediateChanges='true'>",
- "</td></tr><tr><td>",
- "<label for='${id}_textInput'>${text}</label>",
- "</td><td>",
- "<input dojoType='dijit.form.ValidationTextBox' required='true' id='${id}_textInput' " +
- "name='textInput' intermediateChanges='true'>",
- "</td></tr><tr><td>",
- "<label for='${id}_targetSelect'>${target}</label>",
- "</td><td>",
- "<select id='${id}_targetSelect' name='targetSelect' dojoType='dijit.form.Select'>",
- "<option selected='selected' value='_self'>${currentWindow}</option>",
- "<option value='_blank'>${newWindow}</option>",
- "<option value='_top'>${topWindow}</option>",
- "<option value='_parent'>${parentWindow}</option>",
- "</select>",
- "</td></tr><tr><td colspan='2'>",
- "<button dojoType='dijit.form.Button' type='submit' id='${id}_setButton'>${set}</button>",
- "<button dojoType='dijit.form.Button' type='button' id='${id}_cancelButton'>${buttonCancel}</button>",
- "</td></tr></table>"
- ].join(""),
-
- _initButton: function(){
- // Override _Plugin._initButton() to initialize DropDownButton and TooltipDialog.
- var _this = this;
- this.tag = this.command == 'insertImage' ? 'img' : 'a';
- var messages = dojo.mixin(dojo.i18n.getLocalization("dijit", "common", this.lang),
- dojo.i18n.getLocalization("dijit._editor", "LinkDialog", this.lang));
- var dropDown = (this.dropDown = new dijit.TooltipDialog({
- title: messages[this.command + "Title"],
- execute: dojo.hitch(this, "setValue"),
- onOpen: function(){
- _this._onOpenDialog();
- dijit.TooltipDialog.prototype.onOpen.apply(this, arguments);
- },
- onCancel: function(){
- setTimeout(dojo.hitch(_this, "_onCloseDialog"),0);
- }
- }));
- messages.urlRegExp = this.urlRegExp;
- messages.id = dijit.getUniqueId(this.editor.id);
- this._uniqueId = messages.id;
- this._setContent(dropDown.title +
- "<div style='border-bottom: 1px black solid;padding-bottom:2pt;margin-bottom:4pt'></div>" +
- dojo.string.substitute(this.linkDialogTemplate, messages));
- dropDown.startup();
- this._urlInput = dijit.byId(this._uniqueId + "_urlInput");
- this._textInput = dijit.byId(this._uniqueId + "_textInput");
- this._setButton = dijit.byId(this._uniqueId + "_setButton");
- this.connect(dijit.byId(this._uniqueId + "_cancelButton"), "onClick", function(){
- this.dropDown.onCancel();
- });
- if(this._urlInput){
- this.connect(this._urlInput, "onChange", "_checkAndFixInput");
- }
- if(this._textInput){
- this.connect(this._textInput, "onChange", "_checkAndFixInput");
- }
- this._connectTagEvents();
- this.inherited(arguments);
- },
-
- _checkAndFixInput: function(){
- // summary:
- // A function to listen for onChange events and test the input contents
- // for valid information, such as valid urls with http/https/ftp and if
- // not present, try and guess if the input url is relative or not, and if
- // not, append http:// to it. Also validates other fields as determined by
- // the internal _isValid function.
- var self = this;
- var url = this._urlInput.attr("value");
- var fixupUrl = function(url){
- var appendHttp = false;
- if(url && url.length > 7){
- url = dojo.trim(url);
- if(url.indexOf("/") > 0){
- if(url.indexOf("://") === -1){
- // Check that it doesn't start with / or ./, which would
- // imply 'target server relativeness'
- if(url.charAt(0) !== '/' && url.indexOf("./") !== 0){
- if(self._hostRxp.test(url)){
- appendHttp = true;
- }
- }
- }
- }
- }
- if(appendHttp){
- self._urlInput.attr("value", "http://" + url);
- }
- self._setButton.attr("disabled", !self._isValid());
- };
- if(this._delayedCheck){
- clearTimeout(this._delayedCheck);
- this._delayedCheck = null;
- }
- this._delayedCheck = setTimeout(function(){
- fixupUrl(url);
- }, 250);
- },
-
- _connectTagEvents: function(){
- // summary:
- // Over-ridable function that connects tag specific events.
- this.editor.onLoadDeferred.addCallback(dojo.hitch(this, function(){
- this.connect(this.editor.editNode, "ondblclick", this._onDblClick);
- }));
- },
-
- _isValid: function(){
- // summary:
- // Internal function to allow validating of the inputs
- // for a link to determine if set should be disabled or not
- // tags:
- // protected
- return this._urlInput.isValid() && this._textInput.isValid();
- },
-
- _setContent: function(staticPanel){
- // summary:
- // Helper for _initButton above. Not sure why it's a separate method.
- this.dropDown.attr('content', staticPanel);
- },
-
- _checkValues: function(args){
- // summary:
- // Function to check the values in args and 'fix' them up as needed.
- // args: Object
- // Content being set.
- // tags:
- // protected
- if(args && args.urlInput){
- args.urlInput = args.urlInput.replace(/"/g, """);
- }
- return args;
- },
-
- setValue: function(args){
- // summary:
- // Callback from the dialog when user presses "set" button.
- // tags:
- // private
- //TODO: prevent closing popup if the text is empty
- this._onCloseDialog();
- if(dojo.isIE){ //see #4151
- var sel = dijit.range.getSelection(this.editor.window);
- var range = sel.getRangeAt(0);
- var a = range.endContainer;
- if(a.nodeType === 3){
- // Text node, may be the link contents, so check parent.
- // This plugin doesn't really support nested HTML elements
- // in the link, it assumes all link content is text.
- a = a.parentNode;
- }
- if(a && (a.nodeName && a.nodeName.toLowerCase() !== this.tag)){
- // Stll nothing, one last thing to try on IE, as it might be 'img'
- // and thus considered a control.
- a = dojo.withGlobal(this.editor.window,
- "getSelectedElement", dijit._editor.selection, [this.tag]);
- }
- if(a && (a.nodeName && a.nodeName.toLowerCase() === this.tag)){
- // Okay, we do have a match. IE, for some reason, sometimes pastes before
- // instead of removing the targetted paste-over element, so we unlink the
- // old one first. If we do not the <a> tag remains, but it has no content,
- // so isn't readily visible (but is wrong for the action).
- if(this.editor.queryCommandEnabled("unlink")){
- // Select all the link childent, then unlink. The following insert will
- // then replace the selected text.
- dojo.withGlobal(this.editor.window,
- "selectElementChildren", dijit._editor.selection, [a]);
- this.editor.execCommand("unlink");
- }
- }
- }
- // make sure values are properly escaped, etc.
- args = this._checkValues(args);
- this.editor.execCommand('inserthtml',
- dojo.string.substitute(this.htmlTemplate, args));
- },
-
- _onCloseDialog: function(){
- // summary:
- // Handler for close event on the dialog
- this.editor.focus();
- },
-
- _getCurrentValues: function(a){
- // summary:
- // Over-ride for getting the values to set in the dropdown.
- // a:
- // The anchor/link to process for data for the dropdown.
- // tags:
- // protected
- var url, text, target;
- if(a && a.tagName.toLowerCase() === this.tag){
- url = a.getAttribute('_djrealurl');
- target = a.getAttribute('target') || "_self";
- text = a.textContent || a.innerText;
- dojo.withGlobal(this.editor.window, "selectElement", dijit._editor.selection, [a, true]);
- }else{
- text = dojo.withGlobal(this.editor.window, dijit._editor.selection.getSelectedText);
- }
- return {urlInput: url || '', textInput: text || '', targetSelect: target || ''}; //Object;
- },
-
- _onOpenDialog: function(){
- // summary:
- // Handler for when the dialog is opened.
- // If the caret is currently in a URL then populate the URL's info into the dialog.
- var a;
- if(dojo.isIE){
- // IE is difficult to select the element in, using the range unified
- // API seems to work reasonably well.
- var sel = dijit.range.getSelection(this.editor.window);
- var range = sel.getRangeAt(0);
- a = range.endContainer;
- if(a.nodeType === 3){
- // Text node, may be the link contents, so check parent.
- // This plugin doesn't really support nested HTML elements
- // in the link, it assumes all link content is text.
- a = a.parentNode;
- }
- if(a && (a.nodeName && a.nodeName.toLowerCase() !== this.tag)){
- // Stll nothing, one last thing to try on IE, as it might be 'img'
- // and thus considered a control.
- a = dojo.withGlobal(this.editor.window,
- "getSelectedElement", dijit._editor.selection, [this.tag]);
- }
- }else{
- a = dojo.withGlobal(this.editor.window,
- "getAncestorElement", dijit._editor.selection, [this.tag]);
- }
- this.dropDown.reset();
- this._setButton.attr("disabled", true);
- this.dropDown.attr("value", this._getCurrentValues(a));
- },
-
- _onDblClick: function(e){
- // summary:
- // Function to define a behavior on double clicks on the element
- // type this dialog edits to select it and pop up the editor
- // dialog.
- // e: Object
- // The double-click event.
- // tags:
- // protected.
- if(e && e.target){
- var t = e.target;
- var tg = t.tagName? t.tagName.toLowerCase() : "";
- if(tg === this.tag){
- this.editor.onDisplayChanged();
- dojo.withGlobal(this.editor.window,
- "selectElement",
- dijit._editor.selection, [t]);
- setTimeout(dojo.hitch(this, function(){
- // Focus shift outside the event handler.
- // IE doesn't like focus changes in event handles.
- this.button.attr("disabled", false);
- this.button.openDropDown();
- }), 10);
- }
- }
- }
-});
-
-dojo.declare("dijit._editor.plugins.ImgLinkDialog", [dijit._editor.plugins.LinkDialog], {
- // summary:
- // This plugin extends LinkDialog and adds in a plugin for handling image links.
- // provides the image link dialog.
- //
- // description:
- // The command provided by this plugin is:
- // * insertImage
-
- // linkDialogTemplate: [protected] String
- // Over-ride for template since img dialog doesn't need target that anchor tags may.
- linkDialogTemplate: [
- "<table><tr><td>",
- "<label for='${id}_urlInput'>${url}</label>",
- "</td><td>",
- "<input dojoType='dijit.form.ValidationTextBox' regExp='${urlRegExp}' " +
- "required='true' id='${id}_urlInput' name='urlInput' intermediateChanges='true'>",
- "</td></tr><tr><td>",
- "<label for='${id}_textInput'>${text}</label>",
- "</td><td>",
- "<input dojoType='dijit.form.ValidationTextBox' required='false' id='${id}_textInput' " +
- "name='textInput' intermediateChanges='true'>",
- "</td></tr><tr><td>",
- "</td><td>",
- "</td></tr><tr><td colspan='2'>",
- "<button dojoType='dijit.form.Button' type='submit' id='${id}_setButton'>${set}</button>",
- "<button dojoType='dijit.form.Button' type='button' id='${id}_cancelButton'>${buttonCancel}</button>",
- "</td></tr></table>"
- ].join(""),
-
- // htmlTemplate: [protected] String
- // String used for templating the <img> HTML to insert at the desired point.
- htmlTemplate: "<img src=\"${urlInput}\" _djrealurl=\"${urlInput}\" alt=\"${textInput}\" />",
-
- // tag: [protected] String
- // Tag used for the link type (img).
- tag: "img",
-
- _getCurrentValues: function(img){
- // summary:
- // Over-ride for getting the values to set in the dropdown.
- // a:
- // The anchor/link to process for data for the dropdown.
- // tags:
- // protected
- var url, text;
- if(img && img.tagName.toLowerCase() === this.tag){
- url = img.getAttribute('_djrealurl');
- text = img.getAttribute('alt');
- dojo.withGlobal(this.editor.window,
- "selectElement", dijit._editor.selection, [img, true]);
- }else{
- text = dojo.withGlobal(this.editor.window, dijit._editor.selection.getSelectedText);
- }
- return {urlInput: url || '', textInput: text || ''}; //Object;
- },
-
- _isValid: function(){
- // summary:
- // Over-ride for images. You can have alt text of blank, it is valid.
- // tags:
- // protected
- return this._urlInput.isValid();
- },
-
- _connectTagEvents: function(){
- // summary:
- // Over-ridable function that connects tag specific events.
- this.inherited(arguments);
- this.editor.onLoadDeferred.addCallback(dojo.hitch(this, function(){
- this.connect(this.editor.editNode, "onclick", this._selectTag);
- }));
- },
-
- _selectTag: function(e){
- // summary:
- // A simple event handler that lets me select an image if it is clicked on.
- // makes it easier to select images in a standard way across browsers. Otherwise
- // selecting an image for edit becomes difficult.
- // e: Event
- // The click event.
- // tags:
- // private
- if(e && e.target){
- var t = e.target;
- var tg = t.tagName? t.tagName.toLowerCase() : "";
- if(tg === this.tag){
- dojo.withGlobal(this.editor.window,
- "selectElement",
- dijit._editor.selection, [t]);
- }
- }
- },
-
- _checkValues: function(args){
- // summary:
- // Function to check the values in args and 'fix' them up as needed
- // (special characters in the url or alt text)
- // args: Object
- // Content being set.
- // tags:
- // protected
- if(args && args.urlInput){
- args.urlInput = args.urlInput.replace(/"/g, """);
- }
- if(args && args.textInput){
- args.textInput = args.textInput.replace(/"/g, """);
- }
- return args;
- }
-});
-
-// Register this plugin.
-dojo.subscribe(dijit._scopeName + ".Editor.getPlugin",null,function(o){
- if(o.plugin){ return; }
- switch(o.args.name){
- case "createLink":
- o.plugin = new dijit._editor.plugins.LinkDialog({command: o.args.name});
- break;
- case "insertImage":
- o.plugin = new dijit._editor.plugins.ImgLinkDialog({command: o.args.name});
- break;
- }
-});
-
-}
diff --git a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/_editor/plugins/NewPage.js b/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/_editor/plugins/NewPage.js
deleted file mode 100644
index cec37f4..0000000
--- a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/_editor/plugins/NewPage.js
+++ /dev/null
@@ -1,71 +0,0 @@
-/*
- Copyright (c) 2004-2009, The Dojo Foundation All Rights Reserved.
- Available via Academic Free License >= 2.1 OR the modified BSD license.
- see: http://dojotoolkit.org/license for details
-*/
-
-
-if(!dojo._hasResource["dijit._editor.plugins.NewPage"]){ //_hasResource checks added by build. Do not use _hasResource directly in your code.
-dojo._hasResource["dijit._editor.plugins.NewPage"] = true;
-dojo.provide("dijit._editor.plugins.NewPage");
-
-dojo.require("dijit._editor._Plugin");
-dojo.require("dijit.form.Button");
-dojo.require("dojo.i18n");
-
-dojo.requireLocalization("dijit._editor", "commands", null, "ROOT,ar,ca,cs,da,de,el,es,fi,fr,he,hu,it,ja,ko,nb,nl,pl,pt,pt-pt,ru,sk,sl,sv,th,tr,zh,zh-tw");
-
-dojo.declare("dijit._editor.plugins.NewPage",dijit._editor._Plugin,{
- // summary:
- // This plugin provides a simple 'new page' calability. In other
- // words, set content to some default user defined string.
-
- // content: [public] String
- // The default content to insert into the editor as the new page.
- // The default is the <br> tag, a single blank line.
- content: "<br>",
-
- _initButton: function(){
- // summary:
- // Over-ride for creation of the Print button.
- var strings = dojo.i18n.getLocalization("dijit._editor", "commands");
- this.button = new dijit.form.Button({
- label: strings["newPage"],
- showLabel: false,
- iconClass: this.iconClassPrefix + " " + this.iconClassPrefix + "NewPage",
- tabIndex: "-1",
- onClick: dojo.hitch(this, "_newPage")
- });
- },
-
- setEditor: function(/*dijit.Editor*/ editor){
- // summary:
- // Tell the plugin which Editor it is associated with.
- // editor: Object
- // The editor object to attach the newPage capability to.
- this.editor = editor;
- this._initButton();
- },
-
- _newPage: function(){
- // summary:
- // Function to set the content to blank.
- // tags:
- // private
- this.editor.attr("value", this.content);
- this.editor.focus();
- }
-});
-
-// Register this plugin.
-dojo.subscribe(dijit._scopeName + ".Editor.getPlugin",null,function(o){
- if(o.plugin){ return; }
- var name = o.args.name.toLowerCase();
- if(name === "newpage"){
- o.plugin = new dijit._editor.plugins.NewPage({
- content: ("content" in o.args)?o.args.content:"<br>"
- });
- }
-});
-
-}
diff --git a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/_editor/plugins/Print.js b/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/_editor/plugins/Print.js
deleted file mode 100644
index 3e6870a..0000000
--- a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/_editor/plugins/Print.js
+++ /dev/null
@@ -1,114 +0,0 @@
-/*
- Copyright (c) 2004-2009, The Dojo Foundation All Rights Reserved.
- Available via Academic Free License >= 2.1 OR the modified BSD license.
- see: http://dojotoolkit.org/license for details
-*/
-
-
-if(!dojo._hasResource["dijit._editor.plugins.Print"]){ //_hasResource checks added by build. Do not use _hasResource directly in your code.
-dojo._hasResource["dijit._editor.plugins.Print"] = true;
-dojo.provide("dijit._editor.plugins.Print");
-
-dojo.require("dijit._editor._Plugin");
-dojo.require("dijit.form.Button");
-dojo.require("dojo.i18n");
-
-dojo.requireLocalization("dijit._editor", "commands", null, "ROOT,ar,ca,cs,da,de,el,es,fi,fr,he,hu,it,ja,ko,nb,nl,pl,pt,pt-pt,ru,sk,sl,sv,th,tr,zh,zh-tw");
-
-dojo.declare("dijit._editor.plugins.Print",dijit._editor._Plugin,{
- // summary:
- // This plugin provides Print cabability to the editor. When
- // clicked, the document in the editor frame will be printed.
-
- _initButton: function(){
- // summary:
- // Over-ride for creation of the Print button.
- var strings = dojo.i18n.getLocalization("dijit._editor", "commands");
- this.button = new dijit.form.Button({
- label: strings["print"],
- showLabel: false,
- iconClass: this.iconClassPrefix + " " + this.iconClassPrefix + "Print",
- tabIndex: "-1",
- onClick: dojo.hitch(this, "_print")
- });
- },
-
- setEditor: function(/*dijit.Editor*/ editor){
- // summary:
- // Tell the plugin which Editor it is associated with.
- // editor: Object
- // The editor object to attach the print capability to.
- this.editor = editor;
- this._initButton();
-
- // Set up a check that we have a print function
- // and disable button if we do not.
- this.editor.onLoadDeferred.addCallback(
- dojo.hitch(this, function(){
- if(!this.editor.iframe.contentWindow["print"]){
- this.button.attr("disabled", true);
- }
- })
- );
- },
-
- _print: function(){
- // summary:
- // Function to trigger printing of the editor document
- // tags:
- // private
- var edFrame = this.editor.iframe;
- if(edFrame.contentWindow["print"]){
- // IE requires the frame to be focused for
- // print to work, but since this is okay for all
- // no special casing.
- if(!dojo.isOpera && !dojo.isChrome){
- dijit.focus(edFrame);
- edFrame.contentWindow.print();
- }else{
- // Neither Opera nor Chrome 3 et you print single frames.
- // So, open a new 'window', print it, and close it.
- // Also, can't use size 0x0, have to use 1x1
- var edDoc = this.editor.document;
- var content = this.editor.attr("value");
- content = "<html><head><meta http-equiv='Content-Type' " +
- "content='text/html; charset='UTF-8'></head><body>" +
- content + "</body></html>";
- var win = window.open("javascript: ''",
- "",
- "status=0,menubar=0,location=0,toolbar=0," +
- "width=1,height=1,resizable=0,scrollbars=0");
- win.document.open();
- win.document.write(content);
- win.document.close();
- var styles = [];
- var styleNodes = edDoc.getElementsByTagName("style");
- if(styleNodes){
- // Clone over any editor view styles, since we can't print the iframe
- // directly.
- var i;
- for(i = 0; i < styleNodes.length; i++){
- var style = styleNodes[i].innerHTML;
- var sNode = win.document.createElement("style");
- sNode.appendChild(win.document.createTextNode(style));
- win.document.getElementsByTagName("head")[0].appendChild(sNode);
- }
- }
- win.print();
- win.close();
- }
- }
- }
-});
-
-// Register this plugin.
-dojo.subscribe(dijit._scopeName + ".Editor.getPlugin",null,function(o){
- if(o.plugin){ return; }
- var name = o.args.name.toLowerCase();
- if(name === "print"){
- o.plugin = new dijit._editor.plugins.Print({command: "print"});
- }
-});
-
-
-}
diff --git a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/_editor/plugins/TabIndent.js b/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/_editor/plugins/TabIndent.js
deleted file mode 100644
index 03f2472..0000000
--- a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/_editor/plugins/TabIndent.js
+++ /dev/null
@@ -1,63 +0,0 @@
-/*
- Copyright (c) 2004-2009, The Dojo Foundation All Rights Reserved.
- Available via Academic Free License >= 2.1 OR the modified BSD license.
- see: http://dojotoolkit.org/license for details
-*/
-
-
-if(!dojo._hasResource["dijit._editor.plugins.TabIndent"]){ //_hasResource checks added by build. Do not use _hasResource directly in your code.
-dojo._hasResource["dijit._editor.plugins.TabIndent"] = true;
-dojo.provide("dijit._editor.plugins.TabIndent");
-dojo.experimental("dijit._editor.plugins.TabIndent");
-
-dojo.require("dijit._editor._Plugin");
-dojo.require("dijit.form.ToggleButton");
-
-dojo.declare("dijit._editor.plugins.TabIndent",
- dijit._editor._Plugin,
- {
- // summary:
- // This plugin is used to allow the use of the tab and shift-tab keys
- // to indent/outdent list items. This overrides the default behavior
- // of moving focus from/to the toolbar
-
- // Override _Plugin.useDefaultCommand... processing is handled by this plugin, not by dijit.Editor.
- useDefaultCommand: false,
-
- // Override _Plugin.buttonClass to use a ToggleButton for this plugin rather than a vanilla Button
- buttonClass: dijit.form.ToggleButton,
-
- command: "tabIndent",
-
- _initButton: function(){
- // Override _Plugin._initButton() to setup listener on button click
- this.inherited(arguments);
-
- var e = this.editor;
- this.connect(this.button, "onChange", function(val){
- e.attr("isTabIndent", val);
- });
-
- // Set initial checked state of button based on Editor.isTabIndent
- this.updateState();
- },
-
- updateState: function(){
- // Overrides _Plugin.updateState().
- // Ctrl-m in the editor will switch tabIndent mode on/off, so we need to react to that.
-
- this.button.attr('checked', this.editor.isTabIndent, false);
- }
- }
-);
-
-// Register this plugin.
-dojo.subscribe(dijit._scopeName + ".Editor.getPlugin",null,function(o){
- if(o.plugin){ return; }
- switch(o.args.name){
- case "tabIndent":
- o.plugin = new dijit._editor.plugins.TabIndent({command: o.args.name});
- }
-});
-
-}
diff --git a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/_editor/plugins/TextColor.js b/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/_editor/plugins/TextColor.js
deleted file mode 100644
index 0040792..0000000
--- a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/_editor/plugins/TextColor.js
+++ /dev/null
@@ -1,49 +0,0 @@
-/*
- Copyright (c) 2004-2009, The Dojo Foundation All Rights Reserved.
- Available via Academic Free License >= 2.1 OR the modified BSD license.
- see: http://dojotoolkit.org/license for details
-*/
-
-
-if(!dojo._hasResource["dijit._editor.plugins.TextColor"]){ //_hasResource checks added by build. Do not use _hasResource directly in your code.
-dojo._hasResource["dijit._editor.plugins.TextColor"] = true;
-dojo.provide("dijit._editor.plugins.TextColor");
-
-dojo.require("dijit._editor._Plugin");
-dojo.require("dijit.ColorPalette");
-
-dojo.declare("dijit._editor.plugins.TextColor",
- dijit._editor._Plugin,
- {
- // summary:
- // This plugin provides dropdown color pickers for setting text color and background color
- //
- // description:
- // The commands provided by this plugin are:
- // * foreColor - sets the text color
- // * hiliteColor - sets the background color
-
- // Override _Plugin.buttonClass to use DropDownButton (with ColorPalette) to control this plugin
- buttonClass: dijit.form.DropDownButton,
-
-//TODO: set initial focus/selection state?
-
- constructor: function(){
- this.dropDown = new dijit.ColorPalette();
- this.connect(this.dropDown, "onChange", function(color){
- this.editor.execCommand(this.command, color);
- });
- }
- }
-);
-
-// Register this plugin.
-dojo.subscribe(dijit._scopeName + ".Editor.getPlugin",null,function(o){
- if(o.plugin){ return; }
- switch(o.args.name){
- case "foreColor": case "hiliteColor":
- o.plugin = new dijit._editor.plugins.TextColor({command: o.args.name});
- }
-});
-
-}
diff --git a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/_editor/plugins/ToggleDir.js b/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/_editor/plugins/ToggleDir.js
deleted file mode 100644
index a1f9e7e..0000000
--- a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/_editor/plugins/ToggleDir.js
+++ /dev/null
@@ -1,75 +0,0 @@
-/*
- Copyright (c) 2004-2009, The Dojo Foundation All Rights Reserved.
- Available via Academic Free License >= 2.1 OR the modified BSD license.
- see: http://dojotoolkit.org/license for details
-*/
-
-
-if(!dojo._hasResource["dijit._editor.plugins.ToggleDir"]){ //_hasResource checks added by build. Do not use _hasResource directly in your code.
-dojo._hasResource["dijit._editor.plugins.ToggleDir"] = true;
-dojo.provide("dijit._editor.plugins.ToggleDir");
-dojo.experimental("dijit._editor.plugins.ToggleDir");
-
-dojo.require("dijit._editor._Plugin");
-dojo.require("dijit.form.ToggleButton");
-
-dojo.declare("dijit._editor.plugins.ToggleDir",
- dijit._editor._Plugin,
- {
- // summary:
- // This plugin is used to toggle direction of the edited document,
- // independent of what direction the whole page is.
-
- // Override _Plugin.useDefaultCommand: processing is done in this plugin
- // rather than by sending commands to the Editor
- useDefaultCommand: false,
-
- command: "toggleDir",
-
- // Override _Plugin.buttonClass to use a ToggleButton for this plugin rather than a vanilla Button
- buttonClass: dijit.form.ToggleButton,
-
- _initButton: function(){
- // Override _Plugin._initButton() to setup handler for button click events.
- this.inherited(arguments);
- this.editor.onLoadDeferred.addCallback(dojo.hitch(this, function(){
- var editDoc = this.editor.editorObject.contentWindow.document.documentElement;
- //IE direction has to toggle on the body, not document itself.
- //If you toggle just the document, things get very strange in the
- //view. But, the nice thing is this works for all supported browsers.
- editDoc = editDoc.getElementsByTagName("body")[0];
- var isLtr = dojo.getComputedStyle(editDoc).direction == "ltr";
- this.button.attr("checked", !isLtr);
- this.connect(this.button, "onChange", "_setRtl");
- }));
- },
-
- updateState: function(){
- // Override _Plugin.updateState() to do nothing, since we don't need to react to changes in the
- // editor like arrow keys etc.
- },
-
- _setRtl: function(rtl){
- // summary:
- // Handler for button click events, to switch the text direction of the editor
- var dir = "ltr";
- if(rtl){
- dir = "rtl";
- }
- var editDoc = this.editor.editorObject.contentWindow.document.documentElement;
- editDoc = editDoc.getElementsByTagName("body")[0];
- editDoc.dir/*html node*/ = dir;
- }
- }
-);
-
-// Register this plugin.
-dojo.subscribe(dijit._scopeName + ".Editor.getPlugin",null,function(o){
- if(o.plugin){ return; }
- switch(o.args.name){
- case "toggleDir":
- o.plugin = new dijit._editor.plugins.ToggleDir({command: o.args.name});
- }
-});
-
-}
diff --git a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/_editor/plugins/ViewSource.js b/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/_editor/plugins/ViewSource.js
deleted file mode 100644
index 56332a1..0000000
--- a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/_editor/plugins/ViewSource.js
+++ /dev/null
@@ -1,543 +0,0 @@
-/*
- Copyright (c) 2004-2009, The Dojo Foundation All Rights Reserved.
- Available via Academic Free License >= 2.1 OR the modified BSD license.
- see: http://dojotoolkit.org/license for details
-*/
-
-
-if(!dojo._hasResource["dijit._editor.plugins.ViewSource"]){ //_hasResource checks added by build. Do not use _hasResource directly in your code.
-dojo._hasResource["dijit._editor.plugins.ViewSource"] = true;
-dojo.provide("dijit._editor.plugins.ViewSource");
-
-dojo.require("dijit._editor._Plugin");
-dojo.require("dijit.form.Button");
-dojo.require("dojo.i18n");
-
-dojo.requireLocalization("dijit._editor", "commands", null, "ROOT,ar,ca,cs,da,de,el,es,fi,fr,he,hu,it,ja,ko,nb,nl,pl,pt,pt-pt,ru,sk,sl,sv,th,tr,zh,zh-tw");
-
-dojo.declare("dijit._editor.plugins.ViewSource",dijit._editor._Plugin,{
- // summary:
- // This plugin provides a simple view source capability. When view
- // source mode is enabled, it disables all other buttons/plugins on the RTE.
- // It also binds to the hotkey: CTRL-SHIFT-F11 for toggling ViewSource mode.
-
- // stripScripts: [public] Boolean
- // Boolean flag used to indicate if script tags should be stripped from the document.
- // Defaults to true.
- stripScripts: true,
-
- // stripComments: [public] Boolean
- // Boolean flag used to indicate if comment tags should be stripped from the document.
- // Defaults to true.
- stripComments: true,
-
- // stripComments: [public] Boolean
- // Boolean flag used to indicate if iframe tags should be stripped from the document.
- // Defaults to true.
- stripIFrames: true,
-
- // readOnly: [const] Boolean
- // Boolean flag used to indicate if the source view should be readonly or not.
- // Cannot be changed after initialization of the plugin.
- // Defaults to false.
- readOnly: false,
-
- // _fsPlugin: [private] Object
- // Reference to a registered fullscreen plugin so that viewSource knows
- // how to scale.
- _fsPlugin: null,
-
- toggle: function(){
- // summary:
- // Function to allow programmatic toggling of the view.
-
- // For Webkit, we have to focus a very particular way.
- // when swapping views, otherwise focus doesn't shift right
- // but can't focus this way all the time, only for VS changes.
- // If we did it all the time, buttons like bold, italic, etc
- // break.
- if(dojo.isWebKit){this._vsFocused = true;}
- this.button.attr("checked", !this.button.attr("checked"));
-
- },
-
- _initButton: function(){
- // summary:
- // Over-ride for creation of the resize button.
- var strings = dojo.i18n.getLocalization("dijit._editor", "commands");
- this.button = new dijit.form.ToggleButton({
- label: strings["viewSource"],
- showLabel: false,
- iconClass: this.iconClassPrefix + " " + this.iconClassPrefix + "ViewSource",
- tabIndex: "-1",
- onChange: dojo.hitch(this, "_showSource")
- });
-
- // IE 7 has a horrible bug with zoom, so we have to create this node
- // to cross-check later. Sigh.
- if(dojo.isIE == 7){
- this._ieFixNode = dojo.create("div", {
- style: {
- opacity: "0",
- zIndex: "-1000",
- position: "absolute",
- top: "-1000px"
- }
- }, dojo.body());
- }
- // Make sure readonly mode doesn't make the wrong cursor appear over the button.
- this.button.attr("readOnly", false);
- },
-
-
- setEditor: function(/*dijit.Editor*/ editor){
- // summary:
- // Tell the plugin which Editor it is associated with.
- // editor: Object
- // The editor object to attach the print capability to.
- this.editor = editor;
- this._initButton();
-
- this.editor.addKeyHandler(dojo.keys.F12, true, true, dojo.hitch(this, function(e){
- // Move the focus before switching
- // It'll focus back. Hiding a focused
- // node causes issues.
- this.button.focus();
- this.toggle();
- dojo.stopEvent(e);
-
- // Call the focus shift outside of the handler.
- setTimeout(dojo.hitch(this, function(){
- // We over-ride focus, so we just need to call.
- this.editor.focus();
- }), 100);
- }));
- },
-
- _showSource: function(source){
- // summary:
- // Function to toggle between the source and RTE views.
- // source: boolean
- // Boolean value indicating if it should be in source mode or not.
- // tags:
- // private
- var ed = this.editor;
- var edPlugins = ed._plugins;
- var html;
- this._sourceShown = source;
- var self = this;
- try{
- if(!this.sourceArea){
- this._createSourceView();
- }
- if(source){
- // Update the QueryCommandEnabled function to disable everything but
- // the source view mode. Have to over-ride a function, then kick all
- // plugins to check their state.
- ed._sourceQueryCommandEnabled = ed.queryCommandEnabled;
- ed.queryCommandEnabled = function(cmd){
- var lcmd = cmd.toLowerCase();
- if(lcmd === "viewsource"){
- return true;
- }else{
- return false;
- }
- };
- this.editor.onDisplayChanged();
- html = ed.attr("value");
- html = this._filter(html);
- ed.attr("value", html);
- this._pluginList = [];
- this._disabledPlugins = dojo.filter(edPlugins, function(p){
- // Turn off any plugins not controlled by queryCommandenabled.
- if(p && p.button && !p.button.attr("disabled") &&
- !(p instanceof dijit._editor.plugins.ViewSource)){
- p._vs_updateState = p.updateState;
- p.updateState = function(){
- return false;
- };
- p.button.attr("disabled", true);
- if(p.command){
- // FF has a weird behavior when spellcheck is off,
- // queryCommandValue() returns true on the doc, and as such
- // toggles 'on' some actions. So, we need to explictly
- // toggle them off. TODO: Add a disable API to _Plugin.js
- // It would aleviate the need for this.
- switch(p.command){
- case "bold":
- case "italic":
- case "underline":
- case "strikethrough":
- case "superscript":
- case "subscript":
- p.button.attr("checked", false);
- break;
- default:
- break;
- }
- }
- return true;
- }
- });
-
- // We actually do need to trap this plugin and adjust how we
- // display the textarea.
- if(this._fsPlugin){
- this._fsPlugin._getAltViewNode = function(){
- return self.sourceArea;
- };
- }
-
- this.sourceArea.value = html;
- var is = dojo.marginBox(ed.iframe.parentNode);
- dojo.marginBox(this.sourceArea, {
- w: is.w,
- h: is.h
- });
-
- dojo.style(ed.iframe, "display", "none");
- dojo.style(this.sourceArea, {
- display: "block"
- });
-
- var resizer = function(){
- // function to handle resize events.
- // Will check current VP and only resize if
- // different.
- var vp = dijit.getViewport();
-
- if("_prevW" in this && "_prevH" in this){
- // No actual size change, ignore.
- if(vp.w === this._prevW && vp.h === this._prevH){
- return;
- }else{
- this._prevW = vp.w;
- this._prevH = vp.h;
- }
- }else{
- this._prevW = vp.w;
- this._prevH = vp.h;
- }
- if(this._resizer){
- clearTimeout(this._resizer);
- delete this._resizer;
- }
- // Timeout it to help avoid spamming resize on IE.
- // Works for all browsers.
- this._resizer = setTimeout(dojo.hitch(this, function(){
- delete this._resizer;
- this._resize();
- }), 10);
- };
- this._resizeHandle = dojo.connect(window, "onresize", this, resizer);
-
- //Call this on a delay once to deal with IE glitchiness on initial size.
- setTimeout(dojo.hitch(this, this._resize), 100);
-
- //Trigger a check for command enablement/disablement.
- this.editor.onNormalizedDisplayChanged();
- }else{
- // First check that we were in source view before doing anything.
- // corner case for being called with a value of false and we hadn't
- // actually been in source display mode.
- if(!ed._sourceQueryCommandEnabled){
- return;
- }
- dojo.disconnect(this._resizeHandle);
- delete this._resizeHandle;
-
- // Restore all the plugin buttons state.
- ed.queryCommandEnabled = ed._sourceQueryCommandEnabled;
- if(!this._readOnly){
- html = this.sourceArea.value;
- html = this._filter(html);
- ed.attr("value", html);
- }
-
- dojo.forEach(this._disabledPlugins, function(p){
- // Turn back on any plugins we turned off.
- p.button.attr("disabled", false);
- if(p._vs_updateState){
- p.updateState = p._vs_updateState;
- }
- });
-
- this._disabledPlugins = null;
- dojo.style(this.sourceArea, "display", "none");
- dojo.style(ed.iframe, "display", "block");
- delete ed._sourceQueryCommandEnabled;
-
- //Trigger a check for command enablement/disablement.
- this.editor.onDisplayChanged();
- }
- }catch(e){
- console.log(e);
- }
- },
-
- _resize: function(){
- // summary:
- // Internal function to resize the source view
- // tags:
- // private
- var ed = this.editor;
- var tb = dojo.position(ed.toolbar.domNode);
- var eb = dojo.position(ed.domNode);
-
- var extents = dojo._getPadBorderExtents(ed.domNode);
- var edb = {
- w: eb.w - extents.w,
- h: eb.h - (tb.h + extents.h)
- };
-
- // Fullscreen gets odd, so we need to check for the FS plugin and
- // adapt.
- if(this._fsPlugin && this._fsPlugin.isFullscreen){
- //Okay, probably in FS, adjust.
- var vp = dijit.getViewport();
- edb.w = (vp.w - extents.w);
- edb.h = (vp.h - (tb.h + extents.h));
- }
-
- if(dojo.isIE){
- // IE is always off by 2px, so we have to adjust here
- // Note that IE ZOOM is broken here. I can't get
- //it to scale right.
- edb.h -= 2;
- }
-
- // IE has a horrible zoom bug. So, we have to try and account for
- // it and fix up the scaling.
- if(this._ieFixNode){
- var _ie7zoom = -this._ieFixNode.offsetTop / 1000;
- edb.w = Math.floor((edb.w + 0.9) / _ie7zoom);
- edb.h = Math.floor((edb.h + 0.9) / _ie7zoom);
- }
-
-
- dojo.marginBox(this.sourceArea, {
- w: edb.w,
- h: edb.h
- });
- },
-
- _createSourceView: function(){
- // summary:
- // Internal function for creating the source view area.
- // tags:
- // private
- var ed = this.editor;
- var edPlugins = ed._plugins;
- this.sourceArea = dojo.create("textarea");
- if(this.readOnly){
- dojo.attr(this.sourceArea, "readOnly", true);
- this._readOnly = true;
- }
- dojo.style(this.sourceArea, {
- padding: "0px",
- margin: "0px",
- borderWidth: "0px",
- borderStyle: "none"
- });
- dojo.place(this.sourceArea, ed.iframe, "before");
- dojo.style(this.sourceArea.parentNode, {
- padding: "0px",
- margin: "0px",
- borderWidth: "0px",
- borderStyle: "none"
- });
-
- if(dojo.isIE && ed.iframe.parentNode.lastChild !== ed.iframe){
- // There's some weirdo div in IE used for focus control
- // But is messed up scaling the textarea if we don't config
- // it some so it doesn't have a varying height.
- dojo.style(ed.iframe.parentNode.lastChild,{
- width: "0px",
- height: "0px",
- padding: "0px",
- margin: "0px",
- borderWidth: "0px",
- borderStyle: "none"
- });
- }
-
- // We also need to take over editor focus a bit here, so that focus calls to
- // focus the editor will focus to the right node when VS is active.
- ed._viewsource_oldFocus = ed.focus;
- var self = this;
- ed.focus = function(){
- if(self._sourceShown){
- self.setSourceAreaCaret();
- }else{
- try{
- if(this._vsFocused){
- delete this._vsFocused;
- // Must focus edit node in this case (webkit only) or
- // focus doesn't shift right, but in normal
- // cases we focus with the regular function.
- dijit.focus(ed.editNode);
- }else{
- ed._viewsource_oldFocus();
- }
- }catch(e){
- console.log(e);
- }
- }
- };
-
- var i, p;
- for(i = 0; i < edPlugins.length; i++){
- // We actually do need to trap this plugin and adjust how we
- // display the textarea.
- p = edPlugins[i];
- if(p && (p.declaredClass === "dijit._editor.plugins.FullScreen" ||
- p.declaredClass === (dijit._scopeName +
- "._editor.plugins.FullScreen"))){
- this._fsPlugin = p;
- break;
- }
- }
- if(this._fsPlugin){
- // Found, we need to over-ride the alt-view node function
- // on FullScreen with our own, chain up to parent call when appropriate.
- this._fsPlugin._viewsource_getAltViewNode = this._fsPlugin._getAltViewNode;
- this._fsPlugin._getAltViewNode = function(){
- return self._sourceShown?self.sourceArea:this._viewsource_getAltViewNode();
- };
- }
-
- // Listen to the source area for key events as well, as we need to be able to hotkey toggle
- // it from there too.
- this.connect(this.sourceArea, "onkeydown", dojo.hitch(this, function(e){
- if(this._sourceShown && e.keyCode == dojo.keys.F12 && e.ctrlKey && e.shiftKey){
- this.button.focus();
- this.button.attr("checked", false);
- setTimeout(dojo.hitch(this, function(){ed.focus();}), 100);
- dojo.stopEvent(e);
- }
- }));
- },
-
- _stripScripts: function(html){
- // summary:
- // Strips out script tags from the HTML used in editor.
- // html: String
- // The HTML to filter
- // tags:
- // private
- if(html){
- // Look for closed and unclosed (malformed) script attacks.
- html = html.replace(/<\s*script[^>]*>((.|\s)*?)<\\?\/\s*script\s*>/ig, "");
- html = html.replace(/<\s*script\b([^<>]|\s)*>?/ig, "")
- html = html.replace(/<[^>]*=(\s|)*[("|')]javascript:[^$1][(\s|.)]*[$1][^>]*>/ig, "");
- }
- return html;
- },
-
- _stripComments: function(html){
- // summary:
- // Strips out comments from the HTML used in editor.
- // html: String
- // The HTML to filter
- // tags:
- // private
- if(html){
- html = html.replace(/<!--(.|\s){1,}?-->/g, "");
- }
- return html;
- },
-
- _stripIFrames: function(html){
- // summary:
- // Strips out iframe tags from the content, to avoid iframe script
- // style injection attacks.
- // html: String
- // The HTML to filter
- // tags:
- // private
- if(html){
- html = html.replace(/<\s*iframe[^>]*>((.|\s)*?)<\\?\/\s*iframe\s*>/ig, "");
- }
- return html;
- },
-
- _filter: function(html){
- // summary:
- // Internal function to perform some filtering on the HTML.
- // html: String
- // The HTML to filter
- // tags:
- // private
- if(html){
- if(this.stripScripts){
- html = this._stripScripts(html);
- }
- if(this.stripComments){
- html = this._stripComments(html);
- }
- if(this.stripIFrames){
- html = this._stripIFrames(html);
- }
- }
- return html;
- },
-
- setSourceAreaCaret: function(){
- // summary:
- // Internal function to set the caret in the sourceArea
- // to 0x0
- var win = dojo.global;
- var elem = this.sourceArea;
- dijit.focus(elem);
- if(this._sourceShown && !this.readOnly){
- if(dojo.isIE){
- if(this.sourceArea.createTextRange){
- var range = elem.createTextRange();
- range.collapse(true);
- range.moveStart("character", -99999); // move to 0
- range.moveStart("character", 0); // delta from 0 is the correct position
- range.moveEnd("character", 0);
- range.select();
- }
- }else if(win.getSelection){
- if(elem.setSelectionRange){
- elem.setSelectionRange(0,0);
- }
- }
- }
- },
-
- destroy: function(){
- // summary:
- // Over-ride to remove the node used to correct for IE's
- // zoom bug.
- if(this._ieFixNode){
- dojo.body().removeChild(this._ieFixNode);
- }
- if(this._resizer){
- clearTimeout(this._resizer);
- delete this._resizer;
- }
- if(this._resizeHandle){
- dojo.disconnect(this._resizeHandle);
- delete this._resizeHandle;
- }
- this.inherited(arguments);
- }
-});
-
-// Register this plugin.
-dojo.subscribe(dijit._scopeName + ".Editor.getPlugin",null,function(o){
- if(o.plugin){ return; }
- var name = o.args.name.toLowerCase();
- if(name === "viewsource"){
- o.plugin = new dijit._editor.plugins.ViewSource({
- readOnly: ("readOnly" in o.args)?o.args.readOnly:false,
- stripComments: ("stripComments" in o.args)?o.args.stripComments:true,
- stripScripts: ("stripScripts" in o.args)?o.args.stripScripts:true,
- stripIFrames: ("stripIFrames" in o.args)?o.args.stripIFrames:true
- });
- }
-});
-
-}
diff --git a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/_editor/range.js b/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/_editor/range.js
deleted file mode 100644
index 789b6dc..0000000
--- a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/_editor/range.js
+++ /dev/null
@@ -1,537 +0,0 @@
-/*
- Copyright (c) 2004-2009, The Dojo Foundation All Rights Reserved.
- Available via Academic Free License >= 2.1 OR the modified BSD license.
- see: http://dojotoolkit.org/license for details
-*/
-
-
-if(!dojo._hasResource["dijit._editor.range"]){ //_hasResource checks added by build. Do not use _hasResource directly in your code.
-dojo._hasResource["dijit._editor.range"] = true;
-dojo.provide("dijit._editor.range");
-
-dijit.range={};
-
-dijit.range.getIndex=function(/*DomNode*/node, /*DomNode*/parent){
-// dojo.profile.start("dijit.range.getIndex");
- var ret=[], retR=[];
- var stop = parent;
- var onode = node;
-
- var pnode, n;
- while(node != stop){
- var i = 0;
- pnode = node.parentNode;
- while((n=pnode.childNodes[i++])){
- if(n === node){
- --i;
- break;
- }
- }
- if(i>=pnode.childNodes.length){
- dojo.debug("Error finding index of a node in dijit.range.getIndex");
- }
- ret.unshift(i);
- retR.unshift(i-pnode.childNodes.length);
- node = pnode;
- }
-
- //normalized() can not be called so often to prevent
- //invalidating selection/range, so we have to detect
- //here that any text nodes in a row
- if(ret.length > 0 && onode.nodeType == 3){
- n = onode.previousSibling;
- while(n && n.nodeType == 3){
- ret[ret.length-1]--;
- n = n.previousSibling;
- }
- n = onode.nextSibling;
- while(n && n.nodeType == 3){
- retR[retR.length-1]++;
- n = n.nextSibling;
- }
- }
-// dojo.profile.end("dijit.range.getIndex");
- return {o: ret, r:retR};
-}
-
-dijit.range.getNode = function(/*Array*/index, /*DomNode*/parent){
- if(!dojo.isArray(index) || index.length == 0){
- return parent;
- }
- var node = parent;
-// if(!node)debugger
- dojo.every(index, function(i){
- if(i >= 0 && i < node.childNodes.length){
- node = node.childNodes[i];
- }else{
- node = null;
- console.debug('Error: can not find node with index',index,'under parent node',parent );
- return false; //terminate dojo.every
- }
- return true; //carry on the every loop
- });
-
- return node;
-}
-
-dijit.range.getCommonAncestor = function(n1,n2){
- var getAncestors = function(n){
- var as=[];
- while(n){
- as.unshift(n);
- if(n.nodeName!='BODY'){
- n = n.parentNode;
- }else{
- break;
- }
- }
- return as;
- };
- var n1as = getAncestors(n1);
- var n2as = getAncestors(n2);
-
- var m = Math.min(n1as.length,n2as.length);
- var com = n1as[0]; //at least, one element should be in the array: the root (BODY by default)
- for(var i=1;i<m;i++){
- if(n1as[i] === n2as[i]){
- com = n1as[i]
- }else{
- break;
- }
- }
- return com;
-}
-
-dijit.range.getAncestor = function(/*DomNode*/node, /*RegEx?*/regex, /*DomNode?*/root){
- root = root || node.ownerDocument.body;
- while(node && node !== root){
- var name = node.nodeName.toUpperCase() ;
- if(regex.test(name)){
- return node;
- }
-
- node = node.parentNode;
- }
- return null;
-}
-
-dijit.range.BlockTagNames = /^(?:P|DIV|H1|H2|H3|H4|H5|H6|ADDRESS|PRE|OL|UL|LI|DT|DE)$/;
-dijit.range.getBlockAncestor = function(/*DomNode*/node, /*RegEx?*/regex, /*DomNode?*/root){
- root = root || node.ownerDocument.body;
- regex = regex || dijit.range.BlockTagNames;
- var block=null, blockContainer;
- while(node && node !== root){
- var name = node.nodeName.toUpperCase() ;
- if(!block && regex.test(name)){
- block = node;
- }
- if(!blockContainer && (/^(?:BODY|TD|TH|CAPTION)$/).test(name)){
- blockContainer = node;
- }
-
- node = node.parentNode;
- }
- return {blockNode:block, blockContainer:blockContainer || node.ownerDocument.body};
-}
-
-dijit.range.atBeginningOfContainer = function(/*DomNode*/container, /*DomNode*/node, /*Int*/offset){
- var atBeginning = false;
- var offsetAtBeginning = (offset == 0);
- if(!offsetAtBeginning && node.nodeType == 3){ //if this is a text node, check whether the left part is all space
- if(/^[\s\xA0]+$/.test(node.nodeValue.substr(0,offset))){
- offsetAtBeginning = true;
- }
- }
- if(offsetAtBeginning){
- var cnode = node;
- atBeginning = true;
- while(cnode && cnode !== container){
- if(cnode.previousSibling){
- atBeginning = false;
- break;
- }
- cnode = cnode.parentNode;
- }
- }
- return atBeginning;
-}
-
-dijit.range.atEndOfContainer = function(/*DomNode*/container, /*DomNode*/node, /*Int*/offset){
- var atEnd = false;
- var offsetAtEnd = (offset == (node.length || node.childNodes.length));
- if(!offsetAtEnd && node.nodeType == 3){ //if this is a text node, check whether the right part is all space
- if(/^[\s\xA0]+$/.test(node.nodeValue.substr(offset))){
- offsetAtEnd = true;
- }
- }
- if(offsetAtEnd){
- var cnode = node;
- atEnd = true;
- while(cnode && cnode !== container){
- if(cnode.nextSibling){
- atEnd = false;
- break;
- }
- cnode = cnode.parentNode;
- }
- }
- return atEnd;
-}
-
-dijit.range.adjacentNoneTextNode=function(startnode, next){
- var node = startnode;
- var len = (0-startnode.length) || 0;
- var prop = next?'nextSibling':'previousSibling';
- while(node){
- if(node.nodeType!=3){
- break;
- }
- len += node.length
- node = node[prop];
- }
- return [node,len];
-}
-
-dijit.range._w3c = Boolean(window['getSelection']);
-dijit.range.create = function(/*Window?*/win){
- if(dijit.range._w3c){
- return (win || dojo.global).document.createRange();
- }else{//IE
- return new dijit.range.W3CRange;
- }
-}
-
-dijit.range.getSelection = function(/*Window*/win, /*Boolean?*/ignoreUpdate){
- if(dijit.range._w3c){
- return win.getSelection();
- }else{//IE
- var s = new dijit.range.ie.selection(win);
- if(!ignoreUpdate){
- s._getCurrentSelection();
- }
- return s;
- }
-}
-
-if(!dijit.range._w3c){
- dijit.range.ie={
- cachedSelection: {},
- selection: function(win){
- this._ranges = [];
- this.addRange = function(r, /*boolean*/internal){
- this._ranges.push(r);
- if(!internal){
- r._select();
- }
- this.rangeCount = this._ranges.length;
- };
- this.removeAllRanges = function(){
- //don't detach, the range may be used later
-// for(var i=0;i<this._ranges.length;i++){
-// this._ranges[i].detach();
-// }
- this._ranges = [];
- this.rangeCount = 0;
- };
- var _initCurrentRange = function(){
- var r = win.document.selection.createRange();
- var type=win.document.selection.type.toUpperCase();
- if(type == "CONTROL"){
- //TODO: multiple range selection(?)
- return new dijit.range.W3CRange(dijit.range.ie.decomposeControlRange(r));
- }else{
- return new dijit.range.W3CRange(dijit.range.ie.decomposeTextRange(r));
- }
- };
- this.getRangeAt = function(i){
- return this._ranges[i];
- };
- this._getCurrentSelection = function(){
- this.removeAllRanges();
- var r=_initCurrentRange();
- if(r){
- this.addRange(r, true);
- }
- };
- },
- decomposeControlRange: function(range){
- var firstnode = range.item(0), lastnode = range.item(range.length-1);
- var startContainer = firstnode.parentNode, endContainer = lastnode.parentNode;
- var startOffset = dijit.range.getIndex(firstnode, startContainer).o;
- var endOffset = dijit.range.getIndex(lastnode, endContainer).o+1;
- return [startContainer, startOffset,endContainer, endOffset];
- },
- getEndPoint: function(range, end){
- var atmrange = range.duplicate();
- atmrange.collapse(!end);
- var cmpstr = 'EndTo' + (end?'End':'Start');
- var parentNode = atmrange.parentElement();
-
- var startnode, startOffset, lastNode;
- if(parentNode.childNodes.length>0){
- dojo.every(parentNode.childNodes, function(node,i){
- var calOffset;
- if(node.nodeType != 3){
- atmrange.moveToElementText(node);
-
- if(atmrange.compareEndPoints(cmpstr,range) > 0){
- //startnode = node.previousSibling;
- if(lastNode && lastNode.nodeType == 3){
- //where shall we put the start? in the text node or after?
- startnode = lastNode;
- calOffset = true;
- }else{
- startnode = parentNode;
- startOffset = i;
- return false;
- }
- }else{
- if(i == parentNode.childNodes.length-1){
- startnode = parentNode;
- startOffset = parentNode.childNodes.length;
- return false;
- }
- }
- }else{
- if(i == parentNode.childNodes.length-1){//at the end of this node
- startnode = node;
- calOffset = true;
- }
- }
- // try{
- if(calOffset && startnode){
- var prevnode = dijit.range.adjacentNoneTextNode(startnode)[0];
- if(prevnode){
- startnode = prevnode.nextSibling;
- }else{
- startnode = parentNode.firstChild; //firstChild must be a text node
- }
- var prevnodeobj = dijit.range.adjacentNoneTextNode(startnode);
- prevnode = prevnodeobj[0];
- var lenoffset = prevnodeobj[1];
- if(prevnode){
- atmrange.moveToElementText(prevnode);
- atmrange.collapse(false);
- }else{
- atmrange.moveToElementText(parentNode);
- }
- atmrange.setEndPoint(cmpstr, range);
- startOffset = atmrange.text.length-lenoffset;
-
- return false;
- }
- // }catch(e){ debugger }
- lastNode = node;
- return true;
- });
- }else{
- startnode = parentNode;
- startOffset = 0;
- }
-
- //if at the end of startnode and we are dealing with start container, then
- //move the startnode to nextSibling if it is a text node
- //TODO: do this for end container?
- if(!end && startnode.nodeType == 1 && startOffset == startnode.childNodes.length){
- var nextnode=startnode.nextSibling;
- if(nextnode && nextnode.nodeType == 3){
- startnode = nextnode;
- startOffset = 0;
- }
- }
- return [startnode, startOffset];
- },
- setEndPoint: function(range, container, offset){
- //text node
- var atmrange = range.duplicate(), node, len;
- if(container.nodeType!=3){ //normal node
- if(offset > 0){
- node = container.childNodes[offset-1];
- if(node.nodeType == 3){
- container = node;
- offset = node.length;
- //pass through
- }else{
- if(node.nextSibling && node.nextSibling.nodeType == 3){
- container=node.nextSibling;
- offset=0;
- //pass through
- }else{
- atmrange.moveToElementText(node.nextSibling?node:container);
- var parent = node.parentNode;
- var tempNode = parent.insertBefore(node.ownerDocument.createTextNode(' '), node.nextSibling);
- atmrange.collapse(false);
- parent.removeChild(tempNode);
- }
- }
- }else{
- atmrange.moveToElementText(container);
- atmrange.collapse(true);
- }
- }
- if(container.nodeType == 3){
- var prevnodeobj = dijit.range.adjacentNoneTextNode(container);
- var prevnode = prevnodeobj[0];
- len = prevnodeobj[1];
- if(prevnode){
- atmrange.moveToElementText(prevnode);
- atmrange.collapse(false);
- //if contentEditable is not inherit, the above collapse won't make the end point
- //in the correctly position: it always has a -1 offset, so compensate it
- if(prevnode.contentEditable!='inherit'){
- len++;
- }
- }else{
- atmrange.moveToElementText(container.parentNode);
- atmrange.collapse(true);
- }
-
- offset += len;
- if(offset>0){
- if(atmrange.move('character',offset) != offset){
- console.error('Error when moving!');
- }
- }
- }
-
- return atmrange;
- },
- decomposeTextRange: function(range){
- var tmpary = dijit.range.ie.getEndPoint(range);
- var startContainer = tmpary[0], startOffset = tmpary[1];
- var endContainer = tmpary[0], endOffset = tmpary[1];
-
- if(range.htmlText.length){
- if(range.htmlText == range.text){ //in the same text node
- endOffset = startOffset+range.text.length;
- }else{
- tmpary = dijit.range.ie.getEndPoint(range,true);
- endContainer = tmpary[0], endOffset = tmpary[1];
-// if(startContainer.tagName == "BODY"){
-// startContainer = startContainer.firstChild;
-// }
- }
- }
- return [startContainer, startOffset, endContainer, endOffset];
- },
- setRange: function(range, startContainer,
- startOffset, endContainer, endOffset, collapsed){
- var start=dijit.range.ie.setEndPoint(range, startContainer, startOffset);
-
- range.setEndPoint('StartToStart',start);
- if(!collapsed){
- var end=dijit.range.ie.setEndPoint(range, endContainer, endOffset);
- }
- range.setEndPoint('EndToEnd',end || start);
-
- return range;
- }
- }
-
-dojo.declare("dijit.range.W3CRange",null, {
- constructor: function(){
- if(arguments.length>0){
- this.setStart(arguments[0][0],arguments[0][1]);
- this.setEnd(arguments[0][2],arguments[0][3]);
- }else{
- this.commonAncestorContainer = null;
- this.startContainer = null;
- this.startOffset = 0;
- this.endContainer = null;
- this.endOffset = 0;
- this.collapsed = true;
- }
- },
- _updateInternal: function(){
- if(this.startContainer !== this.endContainer){
- this.commonAncestorContainer = dijit.range.getCommonAncestor(this.startContainer, this.endContainer);
- }else{
- this.commonAncestorContainer = this.startContainer;
- }
- this.collapsed = (this.startContainer === this.endContainer) && (this.startOffset == this.endOffset);
- },
- setStart: function(node, offset){
- offset=parseInt(offset);
- if(this.startContainer === node && this.startOffset == offset){
- return;
- }
- delete this._cachedBookmark;
-
- this.startContainer = node;
- this.startOffset = offset;
- if(!this.endContainer){
- this.setEnd(node, offset);
- }else{
- this._updateInternal();
- }
- },
- setEnd: function(node, offset){
- offset=parseInt(offset);
- if(this.endContainer === node && this.endOffset == offset){
- return;
- }
- delete this._cachedBookmark;
-
- this.endContainer = node;
- this.endOffset = offset;
- if(!this.startContainer){
- this.setStart(node, offset);
- }else{
- this._updateInternal();
- }
- },
- setStartAfter: function(node, offset){
- this._setPoint('setStart', node, offset, 1);
- },
- setStartBefore: function(node, offset){
- this._setPoint('setStart', node, offset, 0);
- },
- setEndAfter: function(node, offset){
- this._setPoint('setEnd', node, offset, 1);
- },
- setEndBefore: function(node, offset){
- this._setPoint('setEnd', node, offset, 0);
- },
- _setPoint: function(what, node, offset, ext){
- var index = dijit.range.getIndex(node, node.parentNode).o;
- this[what](node.parentNode, index.pop()+ext);
- },
- _getIERange: function(){
- var r = (this._body || this.endContainer.ownerDocument.body).createTextRange();
- dijit.range.ie.setRange(r, this.startContainer, this.startOffset, this.endContainer, this.endOffset, this.collapsed);
- return r;
- },
- getBookmark: function(body){
- this._getIERange();
- return this._cachedBookmark;
- },
- _select: function(){
- var r = this._getIERange();
- r.select();
- },
- deleteContents: function(){
- var r = this._getIERange();
- r.pasteHTML('');
- this.endContainer = this.startContainer;
- this.endOffset = this.startOffset;
- this.collapsed = true;
- },
- cloneRange: function(){
- var r = new dijit.range.W3CRange([this.startContainer,this.startOffset,
- this.endContainer,this.endOffset]);
- r._body = this._body;
- return r;
- },
- detach: function(){
- this._body = null;
- this.commonAncestorContainer = null;
- this.startContainer = null;
- this.startOffset = 0;
- this.endContainer = null;
- this.endOffset = 0;
- this.collapsed = true;
-}
-});
-} //if(!dijit.range._w3c)
-
-}
diff --git a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/_editor/selection.js b/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/_editor/selection.js
deleted file mode 100644
index 1f360f8..0000000
--- a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/_editor/selection.js
+++ /dev/null
@@ -1,309 +0,0 @@
-/*
- Copyright (c) 2004-2009, The Dojo Foundation All Rights Reserved.
- Available via Academic Free License >= 2.1 OR the modified BSD license.
- see: http://dojotoolkit.org/license for details
-*/
-
-
-if(!dojo._hasResource["dijit._editor.selection"]){ //_hasResource checks added by build. Do not use _hasResource directly in your code.
-dojo._hasResource["dijit._editor.selection"] = true;
-dojo.provide("dijit._editor.selection");
-
-// FIXME:
-// all of these methods branch internally for IE. This is probably
-// sub-optimal in terms of runtime performance. We should investigate the
-// size difference for differentiating at definition time.
-
-dojo.mixin(dijit._editor.selection, {
- getType: function(){
- // summary:
- // Get the selection type (like dojo.doc.select.type in IE).
- if(dojo.isIE){
- return dojo.doc.selection.type.toLowerCase();
- }else{
- var stype = "text";
-
- // Check if the actual selection is a CONTROL (IMG, TABLE, HR, etc...).
- var oSel;
- try{
- oSel = dojo.global.getSelection();
- }catch(e){ /*squelch*/ }
-
- if(oSel && oSel.rangeCount == 1){
- var oRange = oSel.getRangeAt(0);
- if( (oRange.startContainer == oRange.endContainer) &&
- ((oRange.endOffset - oRange.startOffset) == 1) &&
- (oRange.startContainer.nodeType != 3 /* text node*/)
- ){
- stype = "control";
- }
- }
- return stype; //String
- }
- },
-
- getSelectedText: function(){
- // summary:
- // Return the text (no html tags) included in the current selection or null if no text is selected
- if(dojo.isIE){
- if(dijit._editor.selection.getType() == 'control'){
- return null;
- }
- return dojo.doc.selection.createRange().text;
- }else{
- var selection = dojo.global.getSelection();
- if(selection){
- return selection.toString(); //String
- }
- }
- return '';
- },
-
- getSelectedHtml: function(){
- // summary:
- // Return the html text of the current selection or null if unavailable
- if(dojo.isIE){
- if(dijit._editor.selection.getType() == 'control'){
- return null;
- }
- return dojo.doc.selection.createRange().htmlText;
- }else{
- var selection = dojo.global.getSelection();
- if(selection && selection.rangeCount){
- var i;
- var html = "";
- for(i = 0; i < selection.rangeCount; i++){
- //Handle selections spanning ranges, such as Opera
- var frag = selection.getRangeAt(i).cloneContents();
- var div = dojo.doc.createElement("div");
- div.appendChild(frag);
- html += div.innerHTML;
- }
- return html; //String
- }
- return null;
- }
- },
-
- getSelectedElement: function(){
- // summary:
- // Retrieves the selected element (if any), just in the case that
- // a single element (object like and image or a table) is
- // selected.
- if(dijit._editor.selection.getType() == "control"){
- if(dojo.isIE){
- var range = dojo.doc.selection.createRange();
- if(range && range.item){
- return dojo.doc.selection.createRange().item(0);
- }
- }else{
- var selection = dojo.global.getSelection();
- return selection.anchorNode.childNodes[ selection.anchorOffset ];
- }
- }
- return null;
- },
-
- getParentElement: function(){
- // summary:
- // Get the parent element of the current selection
- if(dijit._editor.selection.getType() == "control"){
- var p = this.getSelectedElement();
- if(p){ return p.parentNode; }
- }else{
- if(dojo.isIE){
- var r = dojo.doc.selection.createRange();
- r.collapse(true);
- return r.parentElement();
- }else{
- var selection = dojo.global.getSelection();
- if(selection){
- var node = selection.anchorNode;
- while(node && (node.nodeType != 1)){ // not an element
- node = node.parentNode;
- }
- return node;
- }
- }
- }
- return null;
- },
-
- hasAncestorElement: function(/*String*/tagName /* ... */){
- // summary:
- // Check whether current selection has a parent element which is
- // of type tagName (or one of the other specified tagName)
- // tagName: String
- // The tag name to determine if it has an ancestor of.
- return this.getAncestorElement.apply(this, arguments) != null; //Boolean
- },
-
- getAncestorElement: function(/*String*/tagName /* ... */){
- // summary:
- // Return the parent element of the current selection which is of
- // type tagName (or one of the other specified tagName)
- // tagName: String
- // The tag name to determine if it has an ancestor of.
- var node = this.getSelectedElement() || this.getParentElement();
- return this.getParentOfType(node, arguments); //DOMNode
- },
-
- isTag: function(/*DomNode*/ node, /*String[]*/ tags){
- // summary:
- // Function to determine if a node is one of an array of tags.
- // node:
- // The node to inspect.
- // tags:
- // An array of tag name strings to check to see if the node matches.
- if(node && node.tagName){
- var _nlc = node.tagName.toLowerCase();
- for(var i=0; i<tags.length; i++){
- var _tlc = String(tags[i]).toLowerCase();
- if(_nlc == _tlc){
- return _tlc; // String
- }
- }
- }
- return "";
- },
-
- getParentOfType: function(/*DomNode*/ node, /*String[]*/ tags){
- // summary:
- // Function to locate a parent node that matches one of a set of tags
- // node:
- // The node to inspect.
- // tags:
- // An array of tag name strings to check to see if the node matches.
- while(node){
- if(this.isTag(node, tags).length){
- return node; // DOMNode
- }
- node = node.parentNode;
- }
- return null;
- },
-
- collapse: function(/*Boolean*/beginning){
- // summary:
- // Function to collapse (clear), the current selection
- // beginning: Boolean
- // Boolean to indicate whether to collapse the cursor to the beginning of the selection or end.
- if(window.getSelection){
- var selection = dojo.global.getSelection();
- if(selection.removeAllRanges){ // Mozilla
- if(beginning){
- selection.collapseToStart();
- }else{
- selection.collapseToEnd();
- }
- }else{ // Safari
- // pulled from WebCore/ecma/kjs_window.cpp, line 2536
- selection.collapse(beginning);
- }
- }else if(dojo.isIE){ // IE
- var range = dojo.doc.selection.createRange();
- range.collapse(beginning);
- range.select();
- }
- },
-
- remove: function(){
- // summary:
- // Function to delete the currently selected content from the document.
- var sel = dojo.doc.selection;
- if(dojo.isIE){
- if(sel.type.toLowerCase() != "none"){
- sel.clear();
- }
- return sel; //Selection
- }else{
- sel = dojo.global.getSelection();
- sel.deleteFromDocument();
- return sel; //Selection
- }
- },
-
- selectElementChildren: function(/*DomNode*/element,/*Boolean?*/nochangefocus){
- // summary:
- // clear previous selection and select the content of the node
- // (excluding the node itself)
- // element: DOMNode
- // The element you wish to select the children content of.
- // nochangefocus: Boolean
- // Boolean to indicate if the foxus should change or not.
- var win = dojo.global;
- var doc = dojo.doc;
- var range;
- element = dojo.byId(element);
- if(doc.selection && dojo.isIE && dojo.body().createTextRange){ // IE
- range = element.ownerDocument.body.createTextRange();
- range.moveToElementText(element);
- if(!nochangefocus){
- try{
- range.select(); // IE throws an exception here if the widget is hidden. See #5439
- }catch(e){ /* squelch */}
- }
- }else if(win.getSelection){
- var selection = dojo.global.getSelection();
- if(selection.setBaseAndExtent){ // Safari
- selection.setBaseAndExtent(element, 0, element, element.innerText.length - 1);
- }else if(dojo.isOpera){
- //Opera's selectAllChildren doesn't seem to work right
- //against <body> nodes and possibly others ... so
- //we use the W3C range API
- if(selection.rangeCount){
- range = selection.getRangeAt(0);
- }else{
- range = doc.createRange();
- }
- range.setStart(element, 0);
- range.setEnd(element,(element.nodeType == 3)?element.length:element.childNodes.length);
- selection.addRange(range);
- }else if(selection.selectAllChildren){ // Mozilla
- selection.selectAllChildren(element);
- }
- }
- },
-
- selectElement: function(/*DomNode*/element,/*Boolean?*/nochangefocus){
- // summary:
- // clear previous selection and select element (including all its children)
- // element: DOMNode
- // The element to select.
- // nochangefocus: Boolean
- // Boolean indicating if the focus should be changed. IE only.
- var range;
- var doc = dojo.doc;
- var win = dojo.global;
- element = dojo.byId(element);
- if(dojo.isIE && dojo.body().createTextRange){
- try{
- range = dojo.body().createControlRange();
- range.addElement(element);
- if(!nochangefocus){
- range.select();
- }
- }catch(e){
- this.selectElementChildren(element,nochangefocus);
- }
- }else if(dojo.global.getSelection){
- var selection = win.getSelection();
- range = doc.createRange();
- if(selection.removeAllRanges){ // Mozilla
- // FIXME: does this work on Safari?
- if(dojo.isOpera){
- //Opera works if you use the current range on
- //the selection if present.
- if(selection.getRangeAt(0)){
- range = selection.getRangeAt(0);
- }
- }
- range.selectNode(element);
- selection.removeAllRanges();
- selection.addRange(range);
- }
- }
- }
-});
-
-}
diff --git a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/_tree/dndSource.js b/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/_tree/dndSource.js
deleted file mode 100644
index 6b2daa6..0000000
--- a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/_tree/dndSource.js
+++ /dev/null
@@ -1,18 +0,0 @@
-/*
- Copyright (c) 2004-2009, The Dojo Foundation All Rights Reserved.
- Available via Academic Free License >= 2.1 OR the modified BSD license.
- see: http://dojotoolkit.org/license for details
-*/
-
-
-if(!dojo._hasResource["dijit._tree.dndSource"]){ //_hasResource checks added by build. Do not use _hasResource directly in your code.
-dojo._hasResource["dijit._tree.dndSource"] = true;
-dojo.provide("dijit._tree.dndSource");
-dojo.require("dijit.tree.dndSource");
-
-// TODO: remove this file in 2.0
-dojo.deprecated("dijit._tree.dndSource has been moved to dijit.tree.dndSource, use that instead", "", "2.0");
-
-dijit._tree.dndSource = dijit.tree.dndSource;
-
-}
diff --git a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/dijit-all.js b/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/dijit-all.js
deleted file mode 100644
index b481792..0000000
--- a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/dijit-all.js
+++ /dev/null
@@ -1,92 +0,0 @@
-/*
- Copyright (c) 2004-2009, The Dojo Foundation All Rights Reserved.
- Available via Academic Free License >= 2.1 OR the modified BSD license.
- see: http://dojotoolkit.org/license for details
-*/
-
-
-if(!dojo._hasResource["dijit.dijit-all"]){ //_hasResource checks added by build. Do not use _hasResource directly in your code.
-dojo._hasResource["dijit.dijit-all"] = true;
-console.warn("dijit-all may include much more code than your application actually requires. We strongly recommend that you investigate a custom build or the web build tool");
-dojo.provide("dijit.dijit-all");
-
-/*=====
-dijit["dijit-all"] = {
- // summary:
- // A rollup that includes every dijit. You probably don't need this.
-};
-=====*/
-
-dojo.require("dijit.dijit");
-
-dojo.require("dijit.ColorPalette");
-dojo.require("dijit.Declaration");
-
-dojo.require("dijit.Dialog");
-dojo.require("dijit.DialogUnderlay");
-dojo.require("dijit.TooltipDialog");
-
-dojo.require("dijit.Editor");
-
-dojo.require("dijit.Menu");
-dojo.require("dijit.MenuItem");
-dojo.require("dijit.PopupMenuItem");
-dojo.require("dijit.MenuBar");
-dojo.require("dijit.MenuBarItem");
-dojo.require("dijit.PopupMenuBarItem");
-dojo.require("dijit.MenuSeparator");
-
-dojo.require("dijit.ProgressBar");
-dojo.require("dijit.TitlePane");
-dojo.require("dijit.Toolbar");
-dojo.require("dijit.Tooltip");
-dojo.require("dijit.Tree");
-dojo.require("dijit.InlineEditBox");
-
-// Form widgets
-dojo.require("dijit.form.Form");
-
-// Button widgets
-dojo.require("dijit.form.Button");
-dojo.require("dijit.form.DropDownButton");
-dojo.require("dijit.form.ComboButton");
-dojo.require("dijit.form.ToggleButton");
-dojo.require("dijit.form.CheckBox");
-dojo.require("dijit.form.RadioButton");
-
-// Textbox widgets
-dojo.require("dijit.form.TextBox");
-dojo.require("dijit.form.ValidationTextBox");
-dojo.require("dijit.form.CurrencyTextBox");
-dojo.require("dijit.form.DateTextBox");
-dojo.require("dijit.form.NumberSpinner");
-dojo.require("dijit.form.NumberTextBox");
-
-// Select widgets
-dojo.require("dijit.form.ComboBox");
-dojo.require("dijit.form.FilteringSelect");
-dojo.require("dijit.form.MultiSelect");
-
-// Slider widgets
-dojo.require("dijit.form.HorizontalSlider");
-dojo.require("dijit.form.VerticalSlider");
-dojo.require("dijit.form.HorizontalRule");
-dojo.require("dijit.form.VerticalRule");
-dojo.require("dijit.form.HorizontalRuleLabels");
-dojo.require("dijit.form.VerticalRuleLabels");
-
-// Textarea widgets
-dojo.require("dijit.form.SimpleTextarea");
-dojo.require("dijit.form.Textarea");
-
-// Layout widgets
-dojo.require("dijit.layout.AccordionContainer");
-dojo.require("dijit.layout.ContentPane");
-dojo.require("dijit.layout.BorderContainer");
-dojo.require("dijit.layout.LayoutContainer"); //deprecated
-dojo.require("dijit.layout.LinkPane");
-dojo.require("dijit.layout.SplitContainer"); //deprecated
-dojo.require("dijit.layout.StackContainer");
-dojo.require("dijit.layout.TabContainer");
-
-}
diff --git a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/dijit.js b/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/dijit.js
deleted file mode 100644
index c56bfc2..0000000
--- a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/dijit.js
+++ /dev/null
@@ -1,37 +0,0 @@
-/*
- Copyright (c) 2004-2009, The Dojo Foundation All Rights Reserved.
- Available via Academic Free License >= 2.1 OR the modified BSD license.
- see: http://dojotoolkit.org/license for details
-*/
-
-
-if(!dojo._hasResource["dijit.dijit"]){ //_hasResource checks added by build. Do not use _hasResource directly in your code.
-dojo._hasResource["dijit.dijit"] = true;
-dojo.provide("dijit.dijit");
-
-/*=====
-dijit.dijit = {
- // summary:
- // A roll-up for common dijit methods
- // description:
- // A rollup file for the build system including the core and common
- // dijit files.
- //
- // example:
- // | <script type="text/javascript" src="js/dojo/dijit/dijit.js"></script>
- //
-};
-=====*/
-
-// All the stuff in _base (these are the function that are guaranteed available without an explicit dojo.require)
-dojo.require("dijit._base");
-
-// And some other stuff that we tend to pull in all the time anyway
-dojo.require("dojo.parser");
-dojo.require("dijit._Widget");
-dojo.require("dijit._Templated");
-dojo.require("dijit._Container");
-dojo.require("dijit.layout._LayoutWidget");
-dojo.require("dijit.form._FormWidget");
-
-}
diff --git a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/form/Button.js b/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/form/Button.js
deleted file mode 100644
index d31fb24..0000000
--- a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/form/Button.js
+++ /dev/null
@@ -1,381 +0,0 @@
-/*
- Copyright (c) 2004-2009, The Dojo Foundation All Rights Reserved.
- Available via Academic Free License >= 2.1 OR the modified BSD license.
- see: http://dojotoolkit.org/license for details
-*/
-
-
-if(!dojo._hasResource["dijit.form.Button"]){ //_hasResource checks added by build. Do not use _hasResource directly in your code.
-dojo._hasResource["dijit.form.Button"] = true;
-dojo.provide("dijit.form.Button");
-
-dojo.require("dijit.form._FormWidget");
-dojo.require("dijit._Container");
-dojo.require("dijit._HasDropDown");
-
-dojo.declare("dijit.form.Button",
- dijit.form._FormWidget,
- {
- // summary:
- // Basically the same thing as a normal HTML button, but with special styling.
- // description:
- // Buttons can display a label, an icon, or both.
- // A label should always be specified (through innerHTML) or the label
- // attribute. It can be hidden via showLabel=false.
- // example:
- // | <button dojoType="dijit.form.Button" onClick="...">Hello world</button>
- //
- // example:
- // | var button1 = new dijit.form.Button({label: "hello world", onClick: foo});
- // | dojo.body().appendChild(button1.domNode);
-
- // label: HTML String
- // Text to display in button.
- // If the label is hidden (showLabel=false) then and no title has
- // been specified, then label is also set as title attribute of icon.
- label: "",
-
- // showLabel: Boolean
- // Set this to true to hide the label text and display only the icon.
- // (If showLabel=false then iconClass must be specified.)
- // Especially useful for toolbars.
- // If showLabel=true, the label will become the title (a.k.a. tooltip/hint) of the icon.
- //
- // The exception case is for computers in high-contrast mode, where the label
- // will still be displayed, since the icon doesn't appear.
- showLabel: true,
-
- // iconClass: String
- // Class to apply to DOMNode in button to make it display an icon
- iconClass: "",
-
- // type: String
- // Defines the type of button. "button", "submit", or "reset".
- type: "button",
-
- baseClass: "dijitButton",
-
- templateString: dojo.cache("dijit.form", "templates/Button.html", "<span class=\"dijit dijitReset dijitLeft dijitInline\"\n\tdojoAttachEvent=\"onclick:_onButtonClick,onmouseenter:_onMouse,onmouseleave:_onMouse,onmousedown:_onMouse\"\n\t><span class=\"dijitReset dijitRight dijitInline\"\n\t\t><span class=\"dijitReset dijitInline dijitButtonNode\"\n\t\t\t><button class=\"dijitReset dijitStretch dijitButtonContents\"\n\t\t\t\tdojoAttachPoint=\"titleNode,focusNode\"\n\t\t\t\t${nameAttrSetting} type=\"${type}\" value=\"${value}\" waiRole=\"button\" waiState=\"labelledby-${id}_label\"\n\t\t\t\t><span class=\"dijitReset dijitInline\" dojoAttachPoint=\"iconNode\"\n\t\t\t\t\t><span class=\"dijitReset dijitToggleButtonIconChar\">✓</span\n\t\t\t\t></span\n\t\t\t\t><span class=\"dijitReset dijitInline dijitButtonText\"\n\t\t\t\t\tid=\"${id}_label\"\n\t\t\t\t\tdojoAttachPoint=\"containerNode\"\n\t\t\t\t></span\n\t\t\t></button\n\t\t></span\n\t></span\n></span>\n"),
-
- attributeMap: dojo.delegate(dijit.form._FormWidget.prototype.attributeMap, {
- label: { node: "containerNode", type: "innerHTML" },
- iconClass: { node: "iconNode", type: "class" }
- }),
-
-
- _onClick: function(/*Event*/ e){
- // summary:
- // Internal function to handle click actions
- if(this.disabled){
- return false;
- }
- this._clicked(); // widget click actions
- return this.onClick(e); // user click actions
- },
-
- _onButtonClick: function(/*Event*/ e){
- // summary:
- // Handler when the user activates the button portion.
- if(this._onClick(e) === false){ // returning nothing is same as true
- e.preventDefault(); // needed for checkbox
- }else if(this.type == "submit" && !this.focusNode.form){ // see if a nonform widget needs to be signalled
- for(var node=this.domNode; node.parentNode/*#5935*/; node=node.parentNode){
- var widget=dijit.byNode(node);
- if(widget && typeof widget._onSubmit == "function"){
- widget._onSubmit(e);
- break;
- }
- }
- }
- },
-
- _setValueAttr: function(/*String*/ value){
- // Verify that value cannot be set for BUTTON elements.
- var attr = this.attributeMap.value || '';
- if(this[attr.node || attr || 'domNode'].tagName == 'BUTTON'){
- // On IE, setting value actually overrides innerHTML, so disallow for everyone for consistency
- if(value != this.value){
- console.debug('Cannot change the value attribute on a Button widget.');
- }
- }
- },
-
- _fillContent: function(/*DomNode*/ source){
- // Overrides _Templated._fillContent().
- // If button label is specified as srcNodeRef.innerHTML rather than
- // this.params.label, handle it here.
- if(source && (!this.params || !("label" in this.params))){
- this.attr('label', source.innerHTML);
- }
- },
-
- postCreate: function(){
- dojo.setSelectable(this.focusNode, false);
- this.inherited(arguments);
- },
-
- _setShowLabelAttr: function(val){
- if(this.containerNode){
- dojo.toggleClass(this.containerNode, "dijitDisplayNone", !val);
- }
- this.showLabel = val;
- },
-
- onClick: function(/*Event*/ e){
- // summary:
- // Callback for when button is clicked.
- // If type="submit", return true to perform submit, or false to cancel it.
- // type:
- // callback
- return true; // Boolean
- },
-
- _clicked: function(/*Event*/ e){
- // summary:
- // Internal overridable function for when the button is clicked
- },
-
- setLabel: function(/*String*/ content){
- // summary:
- // Deprecated. Use attr('label', ...) instead.
- dojo.deprecated("dijit.form.Button.setLabel() is deprecated. Use attr('label', ...) instead.", "", "2.0");
- this.attr("label", content);
- },
- _setLabelAttr: function(/*String*/ content){
- // summary:
- // Hook for attr('label', ...) to work.
- // description:
- // Set the label (text) of the button; takes an HTML string.
- this.containerNode.innerHTML = this.label = content;
- if(this.showLabel == false && !this.params.title){
- this.titleNode.title = dojo.trim(this.containerNode.innerText || this.containerNode.textContent || '');
- }
- }
-});
-
-
-dojo.declare("dijit.form.DropDownButton", [dijit.form.Button, dijit._Container, dijit._HasDropDown], {
- // summary:
- // A button with a drop down
- //
- // example:
- // | <button dojoType="dijit.form.DropDownButton" label="Hello world">
- // | <div dojotype="dijit.Menu">...</div>
- // | </button>
- //
- // example:
- // | var button1 = new dijit.form.DropDownButton({ label: "hi", dropDown: new dijit.Menu(...) });
- // | dojo.body().appendChild(button1);
- //
-
- baseClass : "dijitDropDownButton",
-
- templateString: dojo.cache("dijit.form", "templates/DropDownButton.html", "<span class=\"dijit dijitReset dijitLeft dijitInline\"\n\tdojoAttachPoint=\"_buttonNode\"\n\tdojoAttachEvent=\"onmouseenter:_onMouse,onmouseleave:_onMouse,onmousedown:_onMouse\"\n\t><span class='dijitReset dijitRight dijitInline'\n\t\t><span class='dijitReset dijitInline dijitButtonNode'\n\t\t\t><button class=\"dijitReset dijitStretch dijitButtonContents\"\n\t\t\t\t${nameAttrSetting} type=\"${type}\" value=\"${value}\"\n\t\t\t\tdojoAttachPoint=\"focusNode,titleNode,_arrowWrapperNode\"\n\t\t\t\twaiRole=\"button\" waiState=\"haspopup-true,labelledby-${id}_label\"\n\t\t\t\t><span class=\"dijitReset dijitInline\"\n\t\t\t\t\tdojoAttachPoint=\"iconNode\"\n\t\t\t\t></span\n\t\t\t\t><span class=\"dijitReset dijitInline dijitButtonText\"\n\t\t\t\t\tdojoAttachPoint=\"containerNode,_popupStateNode\"\n\t\t\t\t\tid=\"${id}_label\"\n\t\t\t\t></span\n\t\t\t\t><span class=\"dijitReset dijitInline dijitArrowButtonInner\"> </span\n\t\t\t\t><span class=\"dijitReset dijitInline dijitArrowButtonChar\">▼</span\n\t\t\t></button\n\t\t></span\n\t></span\n></span>\n"),
-
- _fillContent: function(){
- // Overrides Button._fillContent().
- //
- // My inner HTML contains both the button contents and a drop down widget, like
- // <DropDownButton> <span>push me</span> <Menu> ... </Menu> </DropDownButton>
- // The first node is assumed to be the button content. The widget is the popup.
-
- if(this.srcNodeRef){ // programatically created buttons might not define srcNodeRef
- //FIXME: figure out how to filter out the widget and use all remaining nodes as button
- // content, not just nodes[0]
- var nodes = dojo.query("*", this.srcNodeRef);
- dijit.form.DropDownButton.superclass._fillContent.call(this, nodes[0]);
-
- // save pointer to srcNode so we can grab the drop down widget after it's instantiated
- this.dropDownContainer = this.srcNodeRef;
- }
- },
-
- startup: function(){
- if(this._started){ return; }
-
- // the child widget from srcNodeRef is the dropdown widget. Insert it in the page DOM,
- // make it invisible, and store a reference to pass to the popup code.
- if(!this.dropDown){
- var dropDownNode = dojo.query("[widgetId]", this.dropDownContainer)[0];
- this.dropDown = dijit.byNode(dropDownNode);
- delete this.dropDownContainer;
- }
- dijit.popup.moveOffScreen(this.dropDown.domNode);
-
- this.inherited(arguments);
- },
-
- isLoaded: function(){
- // Returns whether or not we are loaded - if our dropdown has an href,
- // then we want to check that.
- var dropDown = this.dropDown;
- return (!dropDown.href || dropDown.isLoaded);
- },
-
- loadDropDown: function(){
- // Loads our dropdown
- var dropDown = this.dropDown;
- if(!dropDown){ return; }
- if(!this.isLoaded()){
- var handler = dojo.connect(dropDown, "onLoad", this, function(){
- dojo.disconnect(handler);
- this.openDropDown();
- });
- dropDown.refresh();
- }else{
- this.openDropDown();
- }
- },
-
- isFocusable: function(){
- // Overridden so that focus is handled by the _HasDropDown mixin, not by
- // the _FormWidget mixin.
- return this.inherited(arguments) && !this._mouseDown;
- }
-});
-
-dojo.declare("dijit.form.ComboButton", dijit.form.DropDownButton, {
- // summary:
- // A combination button and drop-down button.
- // Users can click one side to "press" the button, or click an arrow
- // icon to display the drop down.
- //
- // example:
- // | <button dojoType="dijit.form.ComboButton" onClick="...">
- // | <span>Hello world</span>
- // | <div dojoType="dijit.Menu">...</div>
- // | </button>
- //
- // example:
- // | var button1 = new dijit.form.ComboButton({label: "hello world", onClick: foo, dropDown: "myMenu"});
- // | dojo.body().appendChild(button1.domNode);
- //
-
- templateString: dojo.cache("dijit.form", "templates/ComboButton.html", "<table class='dijit dijitReset dijitInline dijitLeft'\n\tcellspacing='0' cellpadding='0' waiRole=\"presentation\"\n\t><tbody waiRole=\"presentation\"><tr waiRole=\"presentation\"\n\t\t><td class=\"dijitReset dijitStretch dijitButtonNode\"><button id=\"${id}_button\" class=\"dijitReset dijitButtonContents\"\n\t\t\tdojoAttachEvent=\"onclick:_onButtonClick,onmouseenter:_onMouse,onmouseleave:_onMouse,onmousedown:_onMouse,onkeypress:_onButtonKeyPress\" dojoAttachPoint=\"titleNode\"\n\t\t\twaiRole=\"button\" waiState=\"labelledby-${id}_label\"\n\t\t\t><div class=\"dijitReset dijitInline\" dojoAttachPoint=\"iconNode\" waiRole=\"presentation\"></div\n\t\t\t><div class=\"dijitReset dijitInline dijitButtonText\" id=\"${id}_label\" dojoAttachPoint=\"containerNode\" waiRole=\"presentation\"></div\n\t\t></button></td\n\t\t><td id=\"${id}_arrow\" class='dijitReset dijitRight dijitButtonNode dijitArrowButton'\n\t\t\tdojoAttachPoint=\"_popupStateNode,focusNode,_buttonNode\"\n\t\t\tdojoAttachEvent=\"onmouseenter:_onMouse,onmouseleave:_onMouse,onkeypress:_onArrowKeyPress\"\n\t\t\tstateModifier=\"DownArrow\"\n\t\t\ttitle=\"${optionsTitle}\" ${nameAttrSetting}\n\t\t\twaiRole=\"button\" waiState=\"haspopup-true\"\n\t\t\t><div class=\"dijitReset dijitArrowButtonInner\" waiRole=\"presentation\"> </div\n\t\t\t><div class=\"dijitReset dijitArrowButtonChar\" waiRole=\"presentation\">▼</div\n\t\t></td\n\t></tr></tbody\n></table>\n"),
-
- attributeMap: dojo.mixin(dojo.clone(dijit.form.Button.prototype.attributeMap), {
- id: "",
- tabIndex: ["focusNode", "titleNode"],
- title: "titleNode"
- }),
-
- // optionsTitle: String
- // Text that describes the options menu (accessibility)
- optionsTitle: "",
-
- baseClass: "dijitComboButton",
-
- _focusedNode: null,
-
- postCreate: function(){
- this.inherited(arguments);
- this._focalNodes = [this.titleNode, this._popupStateNode];
- var isIE = dojo.isIE;
- dojo.forEach(this._focalNodes, dojo.hitch(this, function(node){
- this.connect(node, isIE? "onactivate" : "onfocus", this._onNodeFocus);
- this.connect(node, isIE? "ondeactivate" : "onblur", this._onNodeBlur);
- }));
- if(isIE && (isIE < 8 || dojo.isQuirks)){ // fixed in IE8/strict
- with(this.titleNode){ // resize BUTTON tag so parent TD won't inherit extra padding
- style.width = scrollWidth + "px";
- this.connect(this.titleNode, "onresize", function(){
- setTimeout( function(){ style.width = scrollWidth + "px"; }, 0);
- });
- }
- }
- },
-
- _onNodeFocus: function(evt){
- this._focusedNode = evt.currentTarget;
- var fnc = this._focusedNode == this.focusNode ? "dijitDownArrowButtonFocused" : "dijitButtonContentsFocused";
- dojo.addClass(this._focusedNode, fnc);
- },
-
- _onNodeBlur: function(evt){
- var fnc = evt.currentTarget == this.focusNode ? "dijitDownArrowButtonFocused" : "dijitButtonContentsFocused";
- dojo.removeClass(evt.currentTarget, fnc);
- },
-
- _onBlur: function(){
- this.inherited(arguments);
- this._focusedNode = null;
- },
-
- _onButtonKeyPress: function(/*Event*/ evt){
- // summary:
- // Handler for right arrow key when focus is on left part of button
- if(evt.charOrCode == dojo.keys[this.isLeftToRight() ? "RIGHT_ARROW" : "LEFT_ARROW"]){
- dijit.focus(this._popupStateNode);
- dojo.stopEvent(evt);
- }
- },
-
- _onArrowKeyPress: function(/*Event*/ evt){
- // summary:
- // Handler for left arrow key when focus is on right part of button
- if(evt.charOrCode == dojo.keys[this.isLeftToRight() ? "LEFT_ARROW" : "RIGHT_ARROW"]){
- dijit.focus(this.titleNode);
- dojo.stopEvent(evt);
- }
- },
-
- focus: function(/*String*/ position){
- // summary:
- // Focuses this widget to according to position, if specified,
- // otherwise on arrow node
- // position:
- // "start" or "end"
-
- dijit.focus(position == "start" ? this.titleNode : this._popupStateNode);
- }
-});
-
-dojo.declare("dijit.form.ToggleButton", dijit.form.Button, {
- // summary:
- // A button that can be in two states (checked or not).
- // Can be base class for things like tabs or checkbox or radio buttons
-
- baseClass: "dijitToggleButton",
-
- // checked: Boolean
- // Corresponds to the native HTML <input> element's attribute.
- // In markup, specified as "checked='checked'" or just "checked".
- // True if the button is depressed, or the checkbox is checked,
- // or the radio button is selected, etc.
- checked: false,
-
- attributeMap: dojo.mixin(dojo.clone(dijit.form.Button.prototype.attributeMap), {
- checked:"focusNode"
- }),
-
- _clicked: function(/*Event*/ evt){
- this.attr('checked', !this.checked);
- },
-
- _setCheckedAttr: function(/*Boolean*/ value){
- this.checked = value;
- dojo.attr(this.focusNode || this.domNode, "checked", value);
- dijit.setWaiState(this.focusNode || this.domNode, "pressed", value);
- this._setStateClass();
- this._handleOnChange(value, true);
- },
-
- setChecked: function(/*Boolean*/ checked){
- // summary:
- // Deprecated. Use attr('checked', true/false) instead.
- dojo.deprecated("setChecked("+checked+") is deprecated. Use attr('checked',"+checked+") instead.", "", "2.0");
- this.attr('checked', checked);
- },
-
- reset: function(){
- // summary:
- // Reset the widget's value to what it was at initialization time
-
- this._hasBeenBlurred = false;
-
- // set checked state to original setting
- this.attr('checked', this.params.checked || false);
- }
-});
-
-}
diff --git a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/form/CheckBox.js b/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/form/CheckBox.js
deleted file mode 100644
index e07fbb8..0000000
--- a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/form/CheckBox.js
+++ /dev/null
@@ -1,195 +0,0 @@
-/*
- Copyright (c) 2004-2009, The Dojo Foundation All Rights Reserved.
- Available via Academic Free License >= 2.1 OR the modified BSD license.
- see: http://dojotoolkit.org/license for details
-*/
-
-
-if(!dojo._hasResource["dijit.form.CheckBox"]){ //_hasResource checks added by build. Do not use _hasResource directly in your code.
-dojo._hasResource["dijit.form.CheckBox"] = true;
-dojo.provide("dijit.form.CheckBox");
-
-dojo.require("dijit.form.Button");
-
-dojo.declare(
- "dijit.form.CheckBox",
- dijit.form.ToggleButton,
- {
- // summary:
- // Same as an HTML checkbox, but with fancy styling.
- //
- // description:
- // User interacts with real html inputs.
- // On onclick (which occurs by mouse click, space-bar, or
- // using the arrow keys to switch the selected radio button),
- // we update the state of the checkbox/radio.
- //
- // There are two modes:
- // 1. High contrast mode
- // 2. Normal mode
- // In case 1, the regular html inputs are shown and used by the user.
- // In case 2, the regular html inputs are invisible but still used by
- // the user. They are turned quasi-invisible and overlay the background-image.
-
- templateString: dojo.cache("dijit.form", "templates/CheckBox.html", "<div class=\"dijitReset dijitInline\" waiRole=\"presentation\"\n\t><input\n\t \t${nameAttrSetting} type=\"${type}\" ${checkedAttrSetting}\n\t\tclass=\"dijitReset dijitCheckBoxInput\"\n\t\tdojoAttachPoint=\"focusNode\"\n\t \tdojoAttachEvent=\"onmouseover:_onMouse,onmouseout:_onMouse,onclick:_onClick\"\n/></div>\n"),
-
- baseClass: "dijitCheckBox",
-
- // type: [private] String
- // type attribute on <input> node.
- // Overrides `dijit.form.Button.type`. Users should not change this value.
- type: "checkbox",
-
- // value: String
- // As an initialization parameter, equivalent to value field on normal checkbox
- // (if checked, the value is passed as the value when form is submitted).
- //
- // However, attr('value') will return either the string or false depending on
- // whether or not the checkbox is checked.
- //
- // attr('value', string) will check the checkbox and change the value to the
- // specified string
- //
- // attr('value', boolean) will change the checked state.
- value: "on",
-
- // readOnly: Boolean
- // Should this widget respond to user input?
- // In markup, this is specified as "readOnly".
- // Similar to disabled except readOnly form values are submitted.
- readOnly: false,
-
- attributeMap: dojo.delegate(dijit.form.ToggleButton.prototype.attributeMap, {
- readOnly: "focusNode"
- }),
-
- _setReadOnlyAttr: function(/*Boolean*/ value){
- this.readOnly = value;
- dojo.attr(this.focusNode, 'readOnly', value);
- dijit.setWaiState(this.focusNode, "readonly", value);
- this._setStateClass();
- },
-
- _setValueAttr: function(/*String or Boolean*/ newValue){
- // summary:
- // Handler for value= attribute to constructor, and also calls to
- // attr('value', val).
- // description:
- // During initialization, just saves as attribute to the <input type=checkbox>.
- //
- // After initialization,
- // when passed a boolean, controls whether or not the CheckBox is checked.
- // If passed a string, changes the value attribute of the CheckBox (the one
- // specified as "value" when the CheckBox was constructed (ex: <input
- // dojoType="dijit.CheckBox" value="chicken">)
- if(typeof newValue == "string"){
- this.value = newValue;
- dojo.attr(this.focusNode, 'value', newValue);
- newValue = true;
- }
- if(this._created){
- this.attr('checked', newValue);
- }
- },
- _getValueAttr: function(){
- // summary:
- // Hook so attr('value') works.
- // description:
- // If the CheckBox is checked, returns the value attribute.
- // Otherwise returns false.
- return (this.checked ? this.value : false);
- },
-
- postMixInProperties: function(){
- if(this.value == ""){
- this.value = "on";
- }
-
- // Need to set initial checked state as part of template, so that form submit works.
- // dojo.attr(node, "checked", bool) doesn't work on IEuntil node has been attached
- // to <body>, see #8666
- this.checkedAttrSetting = this.checked ? "checked" : "";
-
- this.inherited(arguments);
- },
-
- _fillContent: function(/*DomNode*/ source){
- // Override Button::_fillContent() since it doesn't make sense for CheckBox,
- // since CheckBox doesn't even have a container
- },
-
- reset: function(){
- // Override ToggleButton.reset()
-
- this._hasBeenBlurred = false;
-
- this.attr('checked', this.params.checked || false);
-
- // Handle unlikely event that the <input type=checkbox> value attribute has changed
- this.value = this.params.value || "on";
- dojo.attr(this.focusNode, 'value', this.value);
- },
-
- _onFocus: function(){
- if(this.id){
- dojo.query("label[for='"+this.id+"']").addClass("dijitFocusedLabel");
- }
- },
-
- _onBlur: function(){
- if(this.id){
- dojo.query("label[for='"+this.id+"']").removeClass("dijitFocusedLabel");
- }
- },
-
- _onClick: function(/*Event*/ e){
- // summary:
- // Internal function to handle click actions - need to check
- // readOnly, since button no longer does that check.
- if(this.readOnly){
- return false;
- }
- return this.inherited(arguments);
- }
- }
-);
-
-dojo.declare(
- "dijit.form.RadioButton",
- dijit.form.CheckBox,
- {
- // summary:
- // Same as an HTML radio, but with fancy styling.
-
- type: "radio",
- baseClass: "dijitRadio",
-
- _setCheckedAttr: function(/*Boolean*/ value){
- // If I am being checked then have to deselect currently checked radio button
- this.inherited(arguments);
- if(!this._created){ return; }
- if(value){
- var _this = this;
- // search for radio buttons with the same name that need to be unchecked
- dojo.query("INPUT[type=radio]", this.focusNode.form || dojo.doc).forEach( // can't use name= since dojo.query doesn't support [] in the name
- function(inputNode){
- if(inputNode.name == _this.name && inputNode != _this.focusNode && inputNode.form == _this.focusNode.form){
- var widget = dijit.getEnclosingWidget(inputNode);
- if(widget && widget.checked){
- widget.attr('checked', false);
- }
- }
- }
- );
- }
- },
-
- _clicked: function(/*Event*/ e){
- if(!this.checked){
- this.attr('checked', true);
- }
- }
- }
-);
-
-}
diff --git a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/form/ComboBox.js b/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/form/ComboBox.js
deleted file mode 100644
index ee78224..0000000
--- a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/form/ComboBox.js
+++ /dev/null
@@ -1,1240 +0,0 @@
-/*
- Copyright (c) 2004-2009, The Dojo Foundation All Rights Reserved.
- Available via Academic Free License >= 2.1 OR the modified BSD license.
- see: http://dojotoolkit.org/license for details
-*/
-
-
-if(!dojo._hasResource["dijit.form.ComboBox"]){ //_hasResource checks added by build. Do not use _hasResource directly in your code.
-dojo._hasResource["dijit.form.ComboBox"] = true;
-dojo.provide("dijit.form.ComboBox");
-
-dojo.require("dijit.form._FormWidget");
-dojo.require("dijit.form.ValidationTextBox");
-dojo.require("dojo.data.util.simpleFetch");
-dojo.require("dojo.data.util.filter");
-dojo.require("dojo.regexp");
-
-dojo.requireLocalization("dijit.form", "ComboBox", null, "ROOT,ar,ca,cs,da,de,el,es,fi,fr,he,hu,it,ja,ko,nb,nl,pl,pt,pt-pt,ru,sk,sl,sv,th,tr,zh,zh-tw");
-
-dojo.declare(
- "dijit.form.ComboBoxMixin",
- null,
- {
- // summary:
- // Implements the base functionality for `dijit.form.ComboBox`/`dijit.form.FilteringSelect`
- // description:
- // All widgets that mix in dijit.form.ComboBoxMixin must extend `dijit.form._FormValueWidget`.
- // tags:
- // protected
-
- // item: Object
- // This is the item returned by the dojo.data.store implementation that
- // provides the data for this ComboBox, it's the currently selected item.
- item: null,
-
- // pageSize: Integer
- // Argument to data provider.
- // Specifies number of search results per page (before hitting "next" button)
- pageSize: Infinity,
-
- // store: Object
- // Reference to data provider object used by this ComboBox
- store: null,
-
- // fetchProperties: Object
- // Mixin to the dojo.data store's fetch.
- // For example, to set the sort order of the ComboBox menu, pass:
- // | { sort: {attribute:"name",descending: true} }
- // To override the default queryOptions so that deep=false, do:
- // | { queryOptions: {ignoreCase: true, deep: false} }
- fetchProperties:{},
-
- // query: Object
- // A query that can be passed to 'store' to initially filter the items,
- // before doing further filtering based on `searchAttr` and the key.
- // Any reference to the `searchAttr` is ignored.
- query: {},
-
- // autoComplete: Boolean
- // If user types in a partial string, and then tab out of the `<input>` box,
- // automatically copy the first entry displayed in the drop down list to
- // the `<input>` field
- autoComplete: true,
-
- // highlightMatch: String
- // One of: "first", "all" or "none".
- //
- // If the ComboBox/FilteringSelect opens with the search results and the searched
- // string can be found, it will be highlighted. If set to "all"
- // then will probably want to change `queryExpr` parameter to '*${0}*'
- //
- // Highlighting is only performed when `labelType` is "text", so as to not
- // interfere with any HTML markup an HTML label might contain.
- highlightMatch: "first",
-
- // searchDelay: Integer
- // Delay in milliseconds between when user types something and we start
- // searching based on that value
- searchDelay: 100,
-
- // searchAttr: String
- // Search for items in the data store where this attribute (in the item)
- // matches what the user typed
- searchAttr: "name",
-
- // labelAttr: String?
- // The entries in the drop down list come from this attribute in the
- // dojo.data items.
- // If not specified, the searchAttr attribute is used instead.
- labelAttr: "",
-
- // labelType: String
- // Specifies how to interpret the labelAttr in the data store items.
- // Can be "html" or "text".
- labelType: "text",
-
- // queryExpr: String
- // This specifies what query ComboBox/FilteringSelect sends to the data store,
- // based on what the user has typed. Changing this expression will modify
- // whether the drop down shows only exact matches, a "starting with" match,
- // etc. Use it in conjunction with highlightMatch.
- // dojo.data query expression pattern.
- // `${0}` will be substituted for the user text.
- // `*` is used for wildcards.
- // `${0}*` means "starts with", `*${0}*` means "contains", `${0}` means "is"
- queryExpr: "${0}*",
-
- // ignoreCase: Boolean
- // Set true if the ComboBox/FilteringSelect should ignore case when matching possible items
- ignoreCase: true,
-
- // hasDownArrow: [const] Boolean
- // Set this textbox to have a down arrow button, to display the drop down list.
- // Defaults to true.
- hasDownArrow: true,
-
- templateString: dojo.cache("dijit.form", "templates/ComboBox.html", "<div class=\"dijit dijitReset dijitInlineTable dijitLeft\"\n\tid=\"widget_${id}\"\n\tdojoAttachEvent=\"onmouseenter:_onMouse,onmouseleave:_onMouse,onmousedown:_onMouse\" dojoAttachPoint=\"comboNode\" waiRole=\"combobox\" tabIndex=\"-1\"\n\t><div style=\"overflow:hidden;\"\n\t\t><div class='dijitReset dijitRight dijitButtonNode dijitArrowButton dijitDownArrowButton'\n\t\t\tdojoAttachPoint=\"downArrowNode\" waiRole=\"presentation\"\n\t\t\tdojoAttachEvent=\"onmousedown:_onArrowMouseDown,onmouseup:_onMouse,onmouseenter:_onMouse,onmouseleave:_onMouse\"\n\t\t\t><div class=\"dijitArrowButtonInner\"> </div\n\t\t\t><div class=\"dijitArrowButtonChar\">▼</div\n\t\t></div\n\t\t><div class=\"dijitReset dijitValidationIcon\"><br></div\n\t\t><div class=\"dijitReset dijitValidationIconText\">Χ</div\n\t\t><div class=\"dijitReset dijitInputField\"\n\t\t\t><input ${nameAttrSetting} type=\"text\" autocomplete=\"off\" class='dijitReset'\n\t\t\tdojoAttachEvent=\"onkeypress:_onKeyPress,compositionend\"\n\t\t\tdojoAttachPoint=\"textbox,focusNode\" waiRole=\"textbox\" waiState=\"haspopup-true,autocomplete-list\"\n\t\t/></div\n\t></div\n></div>\n"),
-
- baseClass:"dijitComboBox",
-
- _getCaretPos: function(/*DomNode*/ element){
- // khtml 3.5.2 has selection* methods as does webkit nightlies from 2005-06-22
- var pos = 0;
- if(typeof(element.selectionStart) == "number"){
- // FIXME: this is totally borked on Moz < 1.3. Any recourse?
- pos = element.selectionStart;
- }else if(dojo.isIE){
- // in the case of a mouse click in a popup being handled,
- // then the dojo.doc.selection is not the textarea, but the popup
- // var r = dojo.doc.selection.createRange();
- // hack to get IE 6 to play nice. What a POS browser.
- var tr = dojo.doc.selection.createRange().duplicate();
- var ntr = element.createTextRange();
- tr.move("character",0);
- ntr.move("character",0);
- try{
- // If control doesnt have focus, you get an exception.
- // Seems to happen on reverse-tab, but can also happen on tab (seems to be a race condition - only happens sometimes).
- // There appears to be no workaround for this - googled for quite a while.
- ntr.setEndPoint("EndToEnd", tr);
- pos = String(ntr.text).replace(/\r/g,"").length;
- }catch(e){
- // If focus has shifted, 0 is fine for caret pos.
- }
- }
- return pos;
- },
-
- _setCaretPos: function(/*DomNode*/ element, /*Number*/ location){
- location = parseInt(location);
- dijit.selectInputText(element, location, location);
- },
-
- _setDisabledAttr: function(/*Boolean*/ value){
- // Additional code to set disabled state of ComboBox node.
- // Overrides _FormValueWidget._setDisabledAttr() or ValidationTextBox._setDisabledAttr().
- this.inherited(arguments);
- dijit.setWaiState(this.comboNode, "disabled", value);
- },
-
- _abortQuery: function(){
- // stop in-progress query
- if(this.searchTimer){
- clearTimeout(this.searchTimer);
- this.searchTimer = null;
- }
- if(this._fetchHandle){
- if(this._fetchHandle.abort){ this._fetchHandle.abort(); }
- this._fetchHandle = null;
- }
- },
-
- _onKeyPress: function(/*Event*/ evt){
- // summary:
- // Handles keyboard events
- var key = evt.charOrCode;
- // except for cutting/pasting case - ctrl + x/v
- if(evt.altKey || ((evt.ctrlKey || evt.metaKey) && (key != 'x' && key != 'v')) || key == dojo.keys.SHIFT){
- return; // throw out weird key combinations and spurious events
- }
- var doSearch = false;
- var searchFunction = "_startSearchFromInput";
- var pw = this._popupWidget;
- var dk = dojo.keys;
- var highlighted = null;
- this._prev_key_backspace = false;
- this._abortQuery();
- if(this._isShowingNow){
- pw.handleKey(key);
- highlighted = pw.getHighlightedOption();
- }
- switch(key){
- case dk.PAGE_DOWN:
- case dk.DOWN_ARROW:
- case dk.PAGE_UP:
- case dk.UP_ARROW:
- if(!this._isShowingNow){
- this._arrowPressed();
- doSearch = true;
- searchFunction = "_startSearchAll";
- }else{
- this._announceOption(highlighted);
- }
- dojo.stopEvent(evt);
- break;
-
- case dk.ENTER:
- // prevent submitting form if user presses enter. Also
- // prevent accepting the value if either Next or Previous
- // are selected
- if(highlighted){
- // only stop event on prev/next
- if(highlighted == pw.nextButton){
- this._nextSearch(1);
- dojo.stopEvent(evt);
- break;
- }else if(highlighted == pw.previousButton){
- this._nextSearch(-1);
- dojo.stopEvent(evt);
- break;
- }
- }else{
- // Update 'value' (ex: KY) according to currently displayed text
- this._setBlurValue(); // set value if needed
- this._setCaretPos(this.focusNode, this.focusNode.value.length); // move cursor to end and cancel highlighting
- }
- // default case:
- // prevent submit, but allow event to bubble
- evt.preventDefault();
- // fall through
-
- case dk.TAB:
- var newvalue = this.attr('displayedValue');
- // if the user had More Choices selected fall into the
- // _onBlur handler
- if(pw && (
- newvalue == pw._messages["previousMessage"] ||
- newvalue == pw._messages["nextMessage"])
- ){
- break;
- }
- if(highlighted){
- this._selectOption();
- }
- if(this._isShowingNow){
- this._lastQuery = null; // in case results come back later
- this._hideResultList();
- }
- break;
-
- case ' ':
- if(highlighted){
- dojo.stopEvent(evt);
- this._selectOption();
- this._hideResultList();
- }else{
- doSearch = true;
- }
- break;
-
- case dk.ESCAPE:
- if(this._isShowingNow){
- dojo.stopEvent(evt);
- this._hideResultList();
- }
- break;
-
- case dk.DELETE:
- case dk.BACKSPACE:
- this._prev_key_backspace = true;
- doSearch = true;
- break;
-
- default:
- // Non char keys (F1-F12 etc..) shouldn't open list.
- // Ascii characters and IME input (Chinese, Japanese etc.) should.
- // On IE and safari, IME input produces keycode == 229, and we simulate
- // it on firefox by attaching to compositionend event (see compositionend method)
- doSearch = typeof key == 'string' || key == 229;
- }
- if(doSearch){
- // need to wait a tad before start search so that the event
- // bubbles through DOM and we have value visible
- this.item = undefined; // undefined means item needs to be set
- this.searchTimer = setTimeout(dojo.hitch(this, searchFunction),1);
- }
- },
-
- _autoCompleteText: function(/*String*/ text){
- // summary:
- // Fill in the textbox with the first item from the drop down
- // list, and highlight the characters that were
- // auto-completed. For example, if user typed "CA" and the
- // drop down list appeared, the textbox would be changed to
- // "California" and "ifornia" would be highlighted.
-
- var fn = this.focusNode;
-
- // IE7: clear selection so next highlight works all the time
- dijit.selectInputText(fn, fn.value.length);
- // does text autoComplete the value in the textbox?
- var caseFilter = this.ignoreCase? 'toLowerCase' : 'substr';
- if(text[caseFilter](0).indexOf(this.focusNode.value[caseFilter](0)) == 0){
- var cpos = this._getCaretPos(fn);
- // only try to extend if we added the last character at the end of the input
- if((cpos+1) > fn.value.length){
- // only add to input node as we would overwrite Capitalisation of chars
- // actually, that is ok
- fn.value = text;//.substr(cpos);
- // visually highlight the autocompleted characters
- dijit.selectInputText(fn, cpos);
- }
- }else{
- // text does not autoComplete; replace the whole value and highlight
- fn.value = text;
- dijit.selectInputText(fn);
- }
- },
-
- _openResultList: function(/*Object*/ results, /*Object*/ dataObject){
- this._fetchHandle = null;
- if( this.disabled ||
- this.readOnly ||
- (dataObject.query[this.searchAttr] != this._lastQuery)
- ){
- return;
- }
- this._popupWidget.clearResultList();
- if(!results.length){
- this._hideResultList();
- return;
- }
-
-
- // Fill in the textbox with the first item from the drop down list,
- // and highlight the characters that were auto-completed. For
- // example, if user typed "CA" and the drop down list appeared, the
- // textbox would be changed to "California" and "ifornia" would be
- // highlighted.
-
- dataObject._maxOptions = this._maxOptions;
- var nodes = this._popupWidget.createOptions(
- results,
- dataObject,
- dojo.hitch(this, "_getMenuLabelFromItem")
- );
-
- // show our list (only if we have content, else nothing)
- this._showResultList();
-
- // #4091:
- // tell the screen reader that the paging callback finished by
- // shouting the next choice
- if(dataObject.direction){
- if(1 == dataObject.direction){
- this._popupWidget.highlightFirstOption();
- }else if(-1 == dataObject.direction){
- this._popupWidget.highlightLastOption();
- }
- this._announceOption(this._popupWidget.getHighlightedOption());
- }else if(this.autoComplete && !this._prev_key_backspace /*&& !dataObject.direction*/
- // when the user clicks the arrow button to show the full list,
- // startSearch looks for "*".
- // it does not make sense to autocomplete
- // if they are just previewing the options available.
- && !/^[*]+$/.test(dataObject.query[this.searchAttr])){
- this._announceOption(nodes[1]); // 1st real item
- }
- },
-
- _showResultList: function(){
- this._hideResultList();
- this._arrowPressed();
- // hide the tooltip
- this.displayMessage("");
-
- // Position the list and if it's too big to fit on the screen then
- // size it to the maximum possible height
- // Our dear friend IE doesnt take max-height so we need to
- // calculate that on our own every time
-
- // TODO: want to redo this, see
- // http://trac.dojotoolkit.org/ticket/3272
- // and
- // http://trac.dojotoolkit.org/ticket/4108
-
-
- // natural size of the list has changed, so erase old
- // width/height settings, which were hardcoded in a previous
- // call to this function (via dojo.marginBox() call)
- dojo.style(this._popupWidget.domNode, {width: "", height: ""});
-
- var best = this.open();
- // #3212:
- // only set auto scroll bars if necessary prevents issues with
- // scroll bars appearing when they shouldn't when node is made
- // wider (fractional pixels cause this)
- var popupbox = dojo.marginBox(this._popupWidget.domNode);
- this._popupWidget.domNode.style.overflow =
- ((best.h == popupbox.h) && (best.w == popupbox.w)) ? "hidden" : "auto";
- // #4134:
- // borrow TextArea scrollbar test so content isn't covered by
- // scrollbar and horizontal scrollbar doesn't appear
- var newwidth = best.w;
- if(best.h < this._popupWidget.domNode.scrollHeight){
- newwidth += 16;
- }
- dojo.marginBox(this._popupWidget.domNode, {
- h: best.h,
- w: Math.max(newwidth, this.domNode.offsetWidth)
- });
-
- // If we increased the width of drop down to match the width of ComboBox.domNode,
- // then need to reposition the drop down (wrapper) so (all of) the drop down still
- // appears underneath the ComboBox.domNode
- if(newwidth < this.domNode.offsetWidth){
- this._popupWidget.domNode.parentNode.style.left = dojo.position(this.domNode).x + "px";
- }
-
- dijit.setWaiState(this.comboNode, "expanded", "true");
- },
-
- _hideResultList: function(){
- this._abortQuery();
- if(this._isShowingNow){
- dijit.popup.close(this._popupWidget);
- this._arrowIdle();
- this._isShowingNow=false;
- dijit.setWaiState(this.comboNode, "expanded", "false");
- dijit.removeWaiState(this.focusNode,"activedescendant");
- }
- },
-
- _setBlurValue: function(){
- // if the user clicks away from the textbox OR tabs away, set the
- // value to the textbox value
- // #4617:
- // if value is now more choices or previous choices, revert
- // the value
- var newvalue=this.attr('displayedValue');
- var pw = this._popupWidget;
- if(pw && (
- newvalue == pw._messages["previousMessage"] ||
- newvalue == pw._messages["nextMessage"]
- )
- ){
- this._setValueAttr(this._lastValueReported, true);
- }else if(typeof this.item == "undefined"){
- // Update 'value' (ex: KY) according to currently displayed text
- this.item = null;
- this.attr('displayedValue', newvalue);
- }else{
- if(this.value != this._lastValueReported){
- dijit.form._FormValueWidget.prototype._setValueAttr.call(this, this.value, true);
- }
- this._refreshState();
- }
- },
-
- _onBlur: function(){
- // summary:
- // Called magically when focus has shifted away from this widget and it's drop down
- this._hideResultList();
- this._arrowIdle();
- this.inherited(arguments);
- },
-
- _setItemAttr: function(/*item*/ item, /*Boolean?*/ priorityChange, /*String?*/ displayedValue){
- // summary:
- // Set the displayed valued in the input box, and the hidden value
- // that gets submitted, based on a dojo.data store item.
- // description:
- // Users shouldn't call this function; they should be calling
- // attr('item', value)
- // tags:
- // private
- if(!displayedValue){ displayedValue = this.labelFunc(item, this.store); }
- this.value = this._getValueField() != this.searchAttr? this.store.getIdentity(item) : displayedValue;
- this.item = item;
- dijit.form.ComboBox.superclass._setValueAttr.call(this, this.value, priorityChange, displayedValue);
- },
-
- _announceOption: function(/*Node*/ node){
- // summary:
- // a11y code that puts the highlighted option in the textbox.
- // This way screen readers will know what is happening in the
- // menu.
-
- if(!node){
- return;
- }
- // pull the text value from the item attached to the DOM node
- var newValue;
- if( node == this._popupWidget.nextButton ||
- node == this._popupWidget.previousButton){
- newValue = node.innerHTML;
- this.item = undefined;
- this.value = '';
- }else{
- newValue = this.labelFunc(node.item, this.store);
- this.attr('item', node.item, false, newValue);
- }
- // get the text that the user manually entered (cut off autocompleted text)
- this.focusNode.value = this.focusNode.value.substring(0, this._lastInput.length);
- // set up ARIA activedescendant
- dijit.setWaiState(this.focusNode, "activedescendant", dojo.attr(node, "id"));
- // autocomplete the rest of the option to announce change
- this._autoCompleteText(newValue);
- },
-
- _selectOption: function(/*Event*/ evt){
- // summary:
- // Menu callback function, called when an item in the menu is selected.
- if(evt){
- this._announceOption(evt.target);
- }
- this._hideResultList();
- this._setCaretPos(this.focusNode, this.focusNode.value.length);
- dijit.form._FormValueWidget.prototype._setValueAttr.call(this, this.value, true); // set this.value and fire onChange
- },
-
- _onArrowMouseDown: function(evt){
- // summary:
- // Callback when arrow is clicked
- if(this.disabled || this.readOnly){
- return;
- }
- dojo.stopEvent(evt);
- this.focus();
- if(this._isShowingNow){
- this._hideResultList();
- }else{
- // forces full population of results, if they click
- // on the arrow it means they want to see more options
- this._startSearchAll();
- }
- },
-
- _startSearchAll: function(){
- this._startSearch('');
- },
-
- _startSearchFromInput: function(){
- this._startSearch(this.focusNode.value.replace(/([\\\*\?])/g, "\\$1"));
- },
-
- _getQueryString: function(/*String*/ text){
- return dojo.string.substitute(this.queryExpr, [text]);
- },
-
- _startSearch: function(/*String*/ key){
- if(!this._popupWidget){
- var popupId = this.id + "_popup";
- this._popupWidget = new dijit.form._ComboBoxMenu({
- onChange: dojo.hitch(this, this._selectOption),
- id: popupId
- });
- dijit.removeWaiState(this.focusNode,"activedescendant");
- dijit.setWaiState(this.textbox,"owns",popupId); // associate popup with textbox
- }
- // create a new query to prevent accidentally querying for a hidden
- // value from FilteringSelect's keyField
- var query = dojo.clone(this.query); // #5970
- this._lastInput = key; // Store exactly what was entered by the user.
- this._lastQuery = query[this.searchAttr] = this._getQueryString(key);
- // #5970: set _lastQuery, *then* start the timeout
- // otherwise, if the user types and the last query returns before the timeout,
- // _lastQuery won't be set and their input gets rewritten
- this.searchTimer=setTimeout(dojo.hitch(this, function(query, _this){
- this.searchTimer = null;
- var fetch = {
- queryOptions: {
- ignoreCase: this.ignoreCase,
- deep: true
- },
- query: query,
- onBegin: dojo.hitch(this, "_setMaxOptions"),
- onComplete: dojo.hitch(this, "_openResultList"),
- onError: function(errText){
- _this._fetchHandle = null;
- console.error('dijit.form.ComboBox: ' + errText);
- dojo.hitch(_this, "_hideResultList")();
- },
- start: 0,
- count: this.pageSize
- };
- dojo.mixin(fetch, _this.fetchProperties);
- this._fetchHandle = _this.store.fetch(fetch);
-
- var nextSearch = function(dataObject, direction){
- dataObject.start += dataObject.count*direction;
- // #4091:
- // tell callback the direction of the paging so the screen
- // reader knows which menu option to shout
- dataObject.direction = direction;
- this._fetchHandle = this.store.fetch(dataObject);
- };
- this._nextSearch = this._popupWidget.onPage = dojo.hitch(this, nextSearch, this._fetchHandle);
- }, query, this), this.searchDelay);
- },
-
- _setMaxOptions: function(size, request){
- this._maxOptions = size;
- },
-
- _getValueField: function(){
- // summmary:
- // Helper for postMixInProperties() to set this.value based on data inlined into the markup.
- // Returns the attribute name in the item (in dijit.form._ComboBoxDataStore) to use as the value.
- return this.searchAttr;
- },
-
- /////////////// Event handlers /////////////////////
-
- _arrowPressed: function(){
- if(!this.disabled && !this.readOnly && this.hasDownArrow){
- dojo.addClass(this.downArrowNode, "dijitArrowButtonActive");
- }
- },
-
- _arrowIdle: function(){
- if(!this.disabled && !this.readOnly && this.hasDownArrow){
- dojo.removeClass(this.downArrowNode, "dojoArrowButtonPushed");
- }
- },
-
- // FIXME: For 2.0, rename to "_compositionEnd"
- compositionend: function(/*Event*/ evt){
- // summary:
- // When inputting characters using an input method, such as
- // Asian languages, it will generate this event instead of
- // onKeyDown event.
- // Note: this event is only triggered in FF (not in IE/safari)
- // tags:
- // private
-
- // 229 is the code produced by IE and safari while pressing keys during
- // IME input mode
- this._onKeyPress({charOrCode: 229});
- },
-
- //////////// INITIALIZATION METHODS ///////////////////////////////////////
-
- constructor: function(){
- this.query={};
- this.fetchProperties={};
- },
-
- postMixInProperties: function(){
- if(!this.hasDownArrow){
- this.baseClass = "dijitTextBox";
- }
- if(!this.store){
- var srcNodeRef = this.srcNodeRef;
-
- // if user didn't specify store, then assume there are option tags
- this.store = new dijit.form._ComboBoxDataStore(srcNodeRef);
-
- // if there is no value set and there is an option list, set
- // the value to the first value to be consistent with native
- // Select
-
- // Firefox and Safari set value
- // IE6 and Opera set selectedIndex, which is automatically set
- // by the selected attribute of an option tag
- // IE6 does not set value, Opera sets value = selectedIndex
- if( !this.value || (
- (typeof srcNodeRef.selectedIndex == "number") &&
- srcNodeRef.selectedIndex.toString() === this.value)
- ){
- var item = this.store.fetchSelectedItem();
- if(item){
- var valueField = this._getValueField();
- this.value = valueField != this.searchAttr? this.store.getValue(item, valueField) : this.labelFunc(item, this.store);
- }
- }
- }
- this.inherited(arguments);
- },
-
- postCreate: function(){
- // summary:
- // Subclasses must call this method from their postCreate() methods
- // tags:
- // protected
-
- // find any associated label element and add to ComboBox node.
- var label=dojo.query('label[for="'+this.id+'"]');
- if(label.length){
- label[0].id = (this.id+"_label");
- var cn=this.comboNode;
- dijit.setWaiState(cn, "labelledby", label[0].id);
-
- }
- this.inherited(arguments);
- },
-
- uninitialize: function(){
- if(this._popupWidget && !this._popupWidget._destroyed){
- this._hideResultList();
- this._popupWidget.destroy();
- }
- this.inherited(arguments);
- },
-
- _getMenuLabelFromItem: function(/*Item*/ item){
- var label = this.labelAttr? this.store.getValue(item, this.labelAttr) : this.labelFunc(item, this.store);
- var labelType = this.labelType;
- // If labelType is not "text" we don't want to screw any markup ot whatever.
- if(this.highlightMatch != "none" && this.labelType == "text" && this._lastInput){
- label = this.doHighlight(label, this._escapeHtml(this._lastInput));
- labelType = "html";
- }
- return {html: labelType == "html", label: label};
- },
-
- doHighlight: function(/*String*/label, /*String*/find){
- // summary:
- // Highlights the string entered by the user in the menu. By default this
- // highlights the first occurence found. Override this method
- // to implement your custom highlighing.
- // tags:
- // protected
-
- // Add greedy when this.highlightMatch == "all"
- var modifiers = "i"+(this.highlightMatch == "all"?"g":"");
- var escapedLabel = this._escapeHtml(label);
- find = dojo.regexp.escapeString(find); // escape regexp special chars
- var ret = escapedLabel.replace(new RegExp("(^|\\s)("+ find +")", modifiers),
- '$1<span class="dijitComboBoxHighlightMatch">$2</span>');
- return ret;// returns String, (almost) valid HTML (entities encoded)
- },
-
- _escapeHtml: function(/*string*/str){
- // TODO Should become dojo.html.entities(), when exists use instead
- // summary:
- // Adds escape sequences for special characters in XML: &<>"'
- str = String(str).replace(/&/gm, "&").replace(/</gm, "<")
- .replace(/>/gm, ">").replace(/"/gm, """);
- return str; // string
- },
-
- open: function(){
- // summary:
- // Opens the drop down menu. TODO: rename to _open.
- // tags:
- // private
- this._isShowingNow=true;
- return dijit.popup.open({
- popup: this._popupWidget,
- around: this.domNode,
- parent: this
- });
- },
-
- reset: function(){
- // Overrides the _FormWidget.reset().
- // Additionally reset the .item (to clean up).
- this.item = null;
- this.inherited(arguments);
- },
-
- labelFunc: function(/*item*/ item, /*dojo.data.store*/ store){
- // summary:
- // Computes the label to display based on the dojo.data store item.
- // returns:
- // The label that the ComboBox should display
- // tags:
- // private
-
- // Use toString() because XMLStore returns an XMLItem whereas this
- // method is expected to return a String (#9354)
- return store.getValue(item, this.searchAttr).toString(); // String
- }
- }
-);
-
-dojo.declare(
- "dijit.form._ComboBoxMenu",
- [dijit._Widget, dijit._Templated],
- {
- // summary:
- // Focus-less menu for internal use in `dijit.form.ComboBox`
- // tags:
- // private
-
- templateString: "<ul class='dijitReset dijitMenu' dojoAttachEvent='onmousedown:_onMouseDown,onmouseup:_onMouseUp,onmouseover:_onMouseOver,onmouseout:_onMouseOut' tabIndex='-1' style='overflow: \"auto\"; overflow-x: \"hidden\";'>"
- +"<li class='dijitMenuItem dijitMenuPreviousButton' dojoAttachPoint='previousButton' waiRole='option'></li>"
- +"<li class='dijitMenuItem dijitMenuNextButton' dojoAttachPoint='nextButton' waiRole='option'></li>"
- +"</ul>",
-
- // _messages: Object
- // Holds "next" and "previous" text for paging buttons on drop down
- _messages: null,
-
- postMixInProperties: function(){
- this._messages = dojo.i18n.getLocalization("dijit.form", "ComboBox", this.lang);
- this.inherited(arguments);
- },
-
- _setValueAttr: function(/*Object*/ value){
- this.value = value;
- this.onChange(value);
- },
-
- // stubs
- onChange: function(/*Object*/ value){
- // summary:
- // Notifies ComboBox/FilteringSelect that user clicked an option in the drop down menu.
- // Probably should be called onSelect.
- // tags:
- // callback
- },
- onPage: function(/*Number*/ direction){
- // summary:
- // Notifies ComboBox/FilteringSelect that user clicked to advance to next/previous page.
- // tags:
- // callback
- },
-
- postCreate: function(){
- // fill in template with i18n messages
- this.previousButton.innerHTML = this._messages["previousMessage"];
- this.nextButton.innerHTML = this._messages["nextMessage"];
- this.inherited(arguments);
- },
-
- onClose: function(){
- // summary:
- // Callback from dijit.popup code to this widget, notifying it that it closed
- // tags:
- // private
- this._blurOptionNode();
- },
-
- _createOption: function(/*Object*/ item, labelFunc){
- // summary:
- // Creates an option to appear on the popup menu subclassed by
- // `dijit.form.FilteringSelect`.
-
- var labelObject = labelFunc(item);
- var menuitem = dojo.doc.createElement("li");
- dijit.setWaiRole(menuitem, "option");
- if(labelObject.html){
- menuitem.innerHTML = labelObject.label;
- }else{
- menuitem.appendChild(
- dojo.doc.createTextNode(labelObject.label)
- );
- }
- // #3250: in blank options, assign a normal height
- if(menuitem.innerHTML == ""){
- menuitem.innerHTML = " ";
- }
- menuitem.item=item;
- return menuitem;
- },
-
- createOptions: function(results, dataObject, labelFunc){
- // summary:
- // Fills in the items in the drop down list
- // results:
- // Array of dojo.data items
- // dataObject:
- // dojo.data store
- // labelFunc:
- // Function to produce a label in the drop down list from a dojo.data item
-
- //this._dataObject=dataObject;
- //this._dataObject.onComplete=dojo.hitch(comboBox, comboBox._openResultList);
- // display "Previous . . ." button
- this.previousButton.style.display = (dataObject.start == 0) ? "none" : "";
- dojo.attr(this.previousButton, "id", this.id + "_prev");
- // create options using _createOption function defined by parent
- // ComboBox (or FilteringSelect) class
- // #2309:
- // iterate over cache nondestructively
- dojo.forEach(results, function(item, i){
- var menuitem = this._createOption(item, labelFunc);
- menuitem.className = "dijitReset dijitMenuItem";
- dojo.attr(menuitem, "id", this.id + i);
- this.domNode.insertBefore(menuitem, this.nextButton);
- }, this);
- // display "Next . . ." button
- var displayMore = false;
- //Try to determine if we should show 'more'...
- if(dataObject._maxOptions && dataObject._maxOptions != -1){
- if((dataObject.start + dataObject.count) < dataObject._maxOptions){
- displayMore = true;
- }else if((dataObject.start + dataObject.count) > (dataObject._maxOptions - 1)){
- //Weird return from a datastore, where a start + count > maxOptions
- // implies maxOptions isn't really valid and we have to go into faking it.
- //And more or less assume more if count == results.length
- if(dataObject.count == results.length){
- displayMore = true;
- }
- }
- }else if(dataObject.count == results.length){
- //Don't know the size, so we do the best we can based off count alone.
- //So, if we have an exact match to count, assume more.
- displayMore = true;
- }
-
- this.nextButton.style.display = displayMore ? "" : "none";
- dojo.attr(this.nextButton,"id", this.id + "_next");
- return this.domNode.childNodes;
- },
-
- clearResultList: function(){
- // summary:
- // Clears the entries in the drop down list, but of course keeps the previous and next buttons.
- while(this.domNode.childNodes.length>2){
- this.domNode.removeChild(this.domNode.childNodes[this.domNode.childNodes.length-2]);
- }
- },
-
- _onMouseDown: function(/*Event*/ evt){
- dojo.stopEvent(evt);
- },
-
- _onMouseUp: function(/*Event*/ evt){
- if(evt.target === this.domNode){
- return;
- }else if(evt.target == this.previousButton){
- this.onPage(-1);
- }else if(evt.target == this.nextButton){
- this.onPage(1);
- }else{
- var tgt = evt.target;
- // while the clicked node is inside the div
- while(!tgt.item){
- // recurse to the top
- tgt = tgt.parentNode;
- }
- this._setValueAttr({ target: tgt }, true);
- }
- },
-
- _onMouseOver: function(/*Event*/ evt){
- if(evt.target === this.domNode){ return; }
- var tgt = evt.target;
- if(!(tgt == this.previousButton || tgt == this.nextButton)){
- // while the clicked node is inside the div
- while(!tgt.item){
- // recurse to the top
- tgt = tgt.parentNode;
- }
- }
- this._focusOptionNode(tgt);
- },
-
- _onMouseOut: function(/*Event*/ evt){
- if(evt.target === this.domNode){ return; }
- this._blurOptionNode();
- },
-
- _focusOptionNode: function(/*DomNode*/ node){
- // summary:
- // Does the actual highlight.
- if(this._highlighted_option != node){
- this._blurOptionNode();
- this._highlighted_option = node;
- dojo.addClass(this._highlighted_option, "dijitMenuItemSelected");
- }
- },
-
- _blurOptionNode: function(){
- // summary:
- // Removes highlight on highlighted option.
- if(this._highlighted_option){
- dojo.removeClass(this._highlighted_option, "dijitMenuItemSelected");
- this._highlighted_option = null;
- }
- },
-
- _highlightNextOption: function(){
- // summary:
- // Highlight the item just below the current selection.
- // If nothing selected, highlight first option.
-
- // because each press of a button clears the menu,
- // the highlighted option sometimes becomes detached from the menu!
- // test to see if the option has a parent to see if this is the case.
- var fc = this.domNode.firstChild;
- if(!this.getHighlightedOption()){
- this._focusOptionNode(fc.style.display == "none" ? fc.nextSibling : fc);
- }else{
- var ns = this._highlighted_option.nextSibling;
- if(ns && ns.style.display != "none"){
- this._focusOptionNode(ns);
- }
- }
- // scrollIntoView is called outside of _focusOptionNode because in IE putting it inside causes the menu to scroll up on mouseover
- dijit.scrollIntoView(this._highlighted_option);
- },
-
- highlightFirstOption: function(){
- // summary:
- // Highlight the first real item in the list (not Previous Choices).
- this._focusOptionNode(this.domNode.firstChild.nextSibling);
- dijit.scrollIntoView(this._highlighted_option);
- },
-
- highlightLastOption: function(){
- // summary:
- // Highlight the last real item in the list (not More Choices).
- this._focusOptionNode(this.domNode.lastChild.previousSibling);
- dijit.scrollIntoView(this._highlighted_option);
- },
-
- _highlightPrevOption: function(){
- // summary:
- // Highlight the item just above the current selection.
- // If nothing selected, highlight last option (if
- // you select Previous and try to keep scrolling up the list).
- var lc = this.domNode.lastChild;
- if(!this.getHighlightedOption()){
- this._focusOptionNode(lc.style.display == "none" ? lc.previousSibling : lc);
- }else{
- var ps = this._highlighted_option.previousSibling;
- if(ps && ps.style.display != "none"){
- this._focusOptionNode(ps);
- }
- }
- dijit.scrollIntoView(this._highlighted_option);
- },
-
- _page: function(/*Boolean*/ up){
- // summary:
- // Handles page-up and page-down keypresses
-
- var scrollamount = 0;
- var oldscroll = this.domNode.scrollTop;
- var height = dojo.style(this.domNode, "height");
- // if no item is highlighted, highlight the first option
- if(!this.getHighlightedOption()){
- this._highlightNextOption();
- }
- while(scrollamount<height){
- if(up){
- // stop at option 1
- if(!this.getHighlightedOption().previousSibling ||
- this._highlighted_option.previousSibling.style.display == "none"){
- break;
- }
- this._highlightPrevOption();
- }else{
- // stop at last option
- if(!this.getHighlightedOption().nextSibling ||
- this._highlighted_option.nextSibling.style.display == "none"){
- break;
- }
- this._highlightNextOption();
- }
- // going backwards
- var newscroll=this.domNode.scrollTop;
- scrollamount+=(newscroll-oldscroll)*(up ? -1:1);
- oldscroll=newscroll;
- }
- },
-
- pageUp: function(){
- // summary:
- // Handles pageup keypress.
- // TODO: just call _page directly from handleKey().
- // tags:
- // private
- this._page(true);
- },
-
- pageDown: function(){
- // summary:
- // Handles pagedown keypress.
- // TODO: just call _page directly from handleKey().
- // tags:
- // private
- this._page(false);
- },
-
- getHighlightedOption: function(){
- // summary:
- // Returns the highlighted option.
- var ho = this._highlighted_option;
- return (ho && ho.parentNode) ? ho : null;
- },
-
- handleKey: function(key){
- switch(key){
- case dojo.keys.DOWN_ARROW:
- this._highlightNextOption();
- break;
- case dojo.keys.PAGE_DOWN:
- this.pageDown();
- break;
- case dojo.keys.UP_ARROW:
- this._highlightPrevOption();
- break;
- case dojo.keys.PAGE_UP:
- this.pageUp();
- break;
- }
- }
- }
-);
-
-dojo.declare(
- "dijit.form.ComboBox",
- [dijit.form.ValidationTextBox, dijit.form.ComboBoxMixin],
- {
- // summary:
- // Auto-completing text box, and base class for dijit.form.FilteringSelect.
- //
- // description:
- // The drop down box's values are populated from an class called
- // a data provider, which returns a list of values based on the characters
- // that the user has typed into the input box.
- // If OPTION tags are used as the data provider via markup,
- // then the OPTION tag's child text node is used as the widget value
- // when selected. The OPTION tag's value attribute is ignored.
- // To set the default value when using OPTION tags, specify the selected
- // attribute on 1 of the child OPTION tags.
- //
- // Some of the options to the ComboBox are actually arguments to the data
- // provider.
-
- _setValueAttr: function(/*String*/ value, /*Boolean?*/ priorityChange, /*String?*/ displayedValue){
- // summary:
- // Hook so attr('value', value) works.
- // description:
- // Sets the value of the select.
- this.item = null; // value not looked up in store
- if(!value){ value = ''; } // null translates to blank
- dijit.form.ValidationTextBox.prototype._setValueAttr.call(this, value, priorityChange, displayedValue);
- }
- }
-);
-
-dojo.declare("dijit.form._ComboBoxDataStore", null, {
- // summary:
- // Inefficient but small data store specialized for inlined `dijit.form.ComboBox` data
- //
- // description:
- // Provides a store for inlined data like:
- //
- // | <select>
- // | <option value="AL">Alabama</option>
- // | ...
- //
- // Actually. just implements the subset of dojo.data.Read/Notification
- // needed for ComboBox and FilteringSelect to work.
- //
- // Note that an item is just a pointer to the <option> DomNode.
-
- constructor: function( /*DomNode*/ root){
- this.root = root;
-
- dojo.query("> option", root).forEach(function(node){
- // TODO: this was added in #3858 but unclear why/if it's needed; doesn't seem to be.
- // If it is needed then can we just hide the select itself instead?
- //node.style.display="none";
- node.innerHTML = dojo.trim(node.innerHTML);
- });
-
- },
-
- getValue: function( /* item */ item,
- /* attribute-name-string */ attribute,
- /* value? */ defaultValue){
- return (attribute == "value") ? item.value : (item.innerText || item.textContent || '');
- },
-
- isItemLoaded: function(/* anything */ something){
- return true;
- },
-
- getFeatures: function(){
- return {"dojo.data.api.Read": true, "dojo.data.api.Identity": true};
- },
-
- _fetchItems: function( /* Object */ args,
- /* Function */ findCallback,
- /* Function */ errorCallback){
- // summary:
- // See dojo.data.util.simpleFetch.fetch()
- if(!args.query){ args.query = {}; }
- if(!args.query.name){ args.query.name = ""; }
- if(!args.queryOptions){ args.queryOptions = {}; }
- var matcher = dojo.data.util.filter.patternToRegExp(args.query.name, args.queryOptions.ignoreCase),
- items = dojo.query("> option", this.root).filter(function(option){
- return (option.innerText || option.textContent || '').match(matcher);
- } );
- if(args.sort){
- items.sort(dojo.data.util.sorter.createSortFunction(args.sort, this));
- }
- findCallback(items, args);
- },
-
- close: function(/*dojo.data.api.Request || args || null */ request){
- return;
- },
-
- getLabel: function(/* item */ item){
- return item.innerHTML;
- },
-
- getIdentity: function(/* item */ item){
- return dojo.attr(item, "value");
- },
-
- fetchItemByIdentity: function(/* Object */ args){
- // summary:
- // Given the identity of an item, this method returns the item that has
- // that identity through the onItem callback.
- // Refer to dojo.data.api.Identity.fetchItemByIdentity() for more details.
- //
- // description:
- // Given arguments like:
- //
- // | {identity: "CA", onItem: function(item){...}
- //
- // Call `onItem()` with the DOM node `<option value="CA">California</option>`
- var item = dojo.query("option[value='" + args.identity + "']", this.root)[0];
- args.onItem(item);
- },
-
- fetchSelectedItem: function(){
- // summary:
- // Get the option marked as selected, like `<option selected>`.
- // Not part of dojo.data API.
- var root = this.root,
- si = root.selectedIndex;
- return dojo.query("> option:nth-child(" +
- (si != -1 ? si+1 : 1) + ")",
- root)[0]; // dojo.data.Item
- }
-});
-//Mix in the simple fetch implementation to this class.
-dojo.extend(dijit.form._ComboBoxDataStore,dojo.data.util.simpleFetch);
-
-}
diff --git a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/form/ComboButton.js b/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/form/ComboButton.js
deleted file mode 100644
index e480ff7..0000000
--- a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/form/ComboButton.js
+++ /dev/null
@@ -1,13 +0,0 @@
-/*
- Copyright (c) 2004-2009, The Dojo Foundation All Rights Reserved.
- Available via Academic Free License >= 2.1 OR the modified BSD license.
- see: http://dojotoolkit.org/license for details
-*/
-
-
-if(!dojo._hasResource["dijit.form.ComboButton"]){ //_hasResource checks added by build. Do not use _hasResource directly in your code.
-dojo._hasResource["dijit.form.ComboButton"] = true;
-dojo.provide("dijit.form.ComboButton");
-dojo.require("dijit.form.Button");
-
-}
diff --git a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/form/CurrencyTextBox.js b/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/form/CurrencyTextBox.js
deleted file mode 100644
index 1bf2284..0000000
--- a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/form/CurrencyTextBox.js
+++ /dev/null
@@ -1,91 +0,0 @@
-/*
- Copyright (c) 2004-2009, The Dojo Foundation All Rights Reserved.
- Available via Academic Free License >= 2.1 OR the modified BSD license.
- see: http://dojotoolkit.org/license for details
-*/
-
-
-if(!dojo._hasResource["dijit.form.CurrencyTextBox"]){ //_hasResource checks added by build. Do not use _hasResource directly in your code.
-dojo._hasResource["dijit.form.CurrencyTextBox"] = true;
-dojo.provide("dijit.form.CurrencyTextBox");
-
-dojo.require("dojo.currency");
-dojo.require("dijit.form.NumberTextBox");
-
-/*=====
-dojo.declare(
- "dijit.form.CurrencyTextBox.__Constraints",
- [dijit.form.NumberTextBox.__Constraints, dojo.currency.__FormatOptions, dojo.currency.__ParseOptions], {
- // summary:
- // Specifies both the rules on valid/invalid values (minimum, maximum,
- // number of required decimal places), and also formatting options for
- // displaying the value when the field is not focused (currency symbol,
- // etc.)
- // description:
- // Follows the pattern of `dijit.form.NumberTextBox.constraints`.
- // In general developers won't need to set this parameter
- // example:
- // To ensure that the user types in the cents (for example, 1.00 instead of just 1):
- // | {fractional:true}
-});
-=====*/
-
-dojo.declare(
- "dijit.form.CurrencyTextBox",
- dijit.form.NumberTextBox,
- {
- // summary:
- // A validating currency textbox
- // description:
- // CurrencyTextBox is similar to `dijit.form.NumberTextBox` but has a few
- // extra features related to currency:
- //
- // 1. After specifying the currency type (american dollars, euros, etc.) it automatically
- // sets parse/format options such as how many decimal places to show.
- // 2. The currency mark (dollar sign, euro mark, etc.) is displayed when the field is blurred
- // but erased during editing, so that the user can just enter a plain number.
-
- // currency: String
- // the [ISO4217](http://en.wikipedia.org/wiki/ISO_4217) currency code, a three letter sequence like "USD"
- currency: "",
-
- // constraints: dijit.form.CurrencyTextBox.__Constraints
- // Despite the name, this parameter specifies both constraints on the input
- // (including minimum/maximum allowed values) as well as
- // formatting options. See `dijit.form.CurrencyTextBox.__Constraints` for details.
- /*=====
- constraints: {},
- ======*/
-
- // Override regExpGen ValidationTextBox.regExpGen().... we use a reg-ex generating function rather
- // than a straight regexp to deal with locale (plus formatting options too?)
- regExpGen: function(constraints){
- // if focused, accept either currency data or NumberTextBox format
- return '(' + (this._focused? this.inherited(arguments, [ dojo.mixin({}, constraints, this.editOptions) ]) + '|' : '')
- + dojo.currency.regexp(constraints) + ')';
- },
-
- // Override NumberTextBox._formatter to deal with currencies, ex: converts "123.45" to "$123.45"
- _formatter: dojo.currency.format,
-
- parse: function(/* String */ value, /* Object */ constraints){
- // summary:
- // Parses string value as a Currency, according to the constraints object
- // tags:
- // protected extension
- var v = dojo.currency.parse(value, constraints);
- if(isNaN(v) && /\d+/.test(value)){ // currency parse failed, but it could be because they are using NumberTextBox format so try its parse
- return this.inherited(arguments, [ value, dojo.mixin({}, constraints, this.editOptions) ]);
- }
- return v;
- },
-
-
- postMixInProperties: function(){
- this.constraints = dojo.currency._mixInDefaults(dojo.mixin(this.constraints, { currency: this.currency, exponent: false })); // get places
- this.inherited(arguments);
- }
- }
-);
-
-}
diff --git a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/form/DateTextBox.js b/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/form/DateTextBox.js
deleted file mode 100644
index e88489b..0000000
--- a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/form/DateTextBox.js
+++ /dev/null
@@ -1,39 +0,0 @@
-/*
- Copyright (c) 2004-2009, The Dojo Foundation All Rights Reserved.
- Available via Academic Free License >= 2.1 OR the modified BSD license.
- see: http://dojotoolkit.org/license for details
-*/
-
-
-if(!dojo._hasResource["dijit.form.DateTextBox"]){ //_hasResource checks added by build. Do not use _hasResource directly in your code.
-dojo._hasResource["dijit.form.DateTextBox"] = true;
-dojo.provide("dijit.form.DateTextBox");
-
-dojo.require("dijit.Calendar");
-dojo.require("dijit.form._DateTimeTextBox");
-
-dojo.declare(
- "dijit.form.DateTextBox",
- dijit.form._DateTimeTextBox,
- {
- // summary:
- // A validating, serializable, range-bound date text box with a drop down calendar
- //
- // Example:
- // | new dijit.form.DateTextBox({value: new Date(2009, 0, 20)})
- //
- // Example:
- // | <input dojotype='dijit.form.DateTextBox' value='2009-01-20'>
-
- baseClass: "dijitTextBox dijitDateTextBox",
- popupClass: "dijit.Calendar",
- _selector: "date",
-
- // value: Date
- // The value of this widget as a JavaScript Date object, with only year/month/day specified.
- // If specified in markup, use the format specified in `dojo.date.stamp.fromISOString`
- value: new Date("") // value.toString()="NaN"
- }
-);
-
-}
diff --git a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/form/DropDownButton.js b/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/form/DropDownButton.js
deleted file mode 100644
index c7accbd..0000000
--- a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/form/DropDownButton.js
+++ /dev/null
@@ -1,14 +0,0 @@
-/*
- Copyright (c) 2004-2009, The Dojo Foundation All Rights Reserved.
- Available via Academic Free License >= 2.1 OR the modified BSD license.
- see: http://dojotoolkit.org/license for details
-*/
-
-
-if(!dojo._hasResource["dijit.form.DropDownButton"]){ //_hasResource checks added by build. Do not use _hasResource directly in your code.
-dojo._hasResource["dijit.form.DropDownButton"] = true;
-dojo.provide("dijit.form.DropDownButton");
-dojo.require("dijit.form.Button");
-
-
-}
diff --git a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/form/FilteringSelect.js b/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/form/FilteringSelect.js
deleted file mode 100644
index 0723cbc..0000000
--- a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/form/FilteringSelect.js
+++ /dev/null
@@ -1,212 +0,0 @@
-/*
- Copyright (c) 2004-2009, The Dojo Foundation All Rights Reserved.
- Available via Academic Free License >= 2.1 OR the modified BSD license.
- see: http://dojotoolkit.org/license for details
-*/
-
-
-if(!dojo._hasResource["dijit.form.FilteringSelect"]){ //_hasResource checks added by build. Do not use _hasResource directly in your code.
-dojo._hasResource["dijit.form.FilteringSelect"] = true;
-dojo.provide("dijit.form.FilteringSelect");
-
-dojo.require("dijit.form.ComboBox");
-
-dojo.declare(
- "dijit.form.FilteringSelect",
- [dijit.form.MappedTextBox, dijit.form.ComboBoxMixin],
- {
- // summary:
- // An enhanced version of the HTML SELECT tag, populated dynamically
- //
- // description:
- // An enhanced version of the HTML SELECT tag, populated dynamically. It works
- // very nicely with very large data sets because it can load and page data as needed.
- // It also resembles ComboBox, but does not allow values outside of the provided ones.
- // If OPTION tags are used as the data provider via markup, then the
- // OPTION tag's child text node is used as the displayed value when selected
- // while the OPTION tag's value attribute is used as the widget value on form submit.
- // To set the default value when using OPTION tags, specify the selected
- // attribute on 1 of the child OPTION tags.
- //
- // Similar features:
- // - There is a drop down list of possible values.
- // - You can only enter a value from the drop down list. (You can't
- // enter an arbitrary value.)
- // - The value submitted with the form is the hidden value (ex: CA),
- // not the displayed value a.k.a. label (ex: California)
- //
- // Enhancements over plain HTML version:
- // - If you type in some text then it will filter down the list of
- // possible values in the drop down list.
- // - List can be specified either as a static list or via a javascript
- // function (that can get the list from a server)
-
- _isvalid: true,
-
- // required: Boolean
- // True (default) if user is required to enter a value into this field.
- required: true,
-
- _lastDisplayedValue: "",
-
- isValid: function(){
- // Overrides ValidationTextBox.isValid()
- return this._isvalid || (!this.required && this.attr('displayedValue') == ""); // #5974
- },
-
- _callbackSetLabel: function( /*Array*/ result,
- /*Object*/ dataObject,
- /*Boolean?*/ priorityChange){
- // summary:
- // Callback function that dynamically sets the label of the
- // ComboBox
-
- // setValue does a synchronous lookup,
- // so it calls _callbackSetLabel directly,
- // and so does not pass dataObject
- // still need to test against _lastQuery in case it came too late
- if((dataObject && dataObject.query[this.searchAttr] != this._lastQuery) || (!dataObject && result.length && this.store.getIdentity(result[0]) != this._lastQuery)){
- return;
- }
- if(!result.length){
- //#3268: do nothing on bad input
- //#3285: change CSS to indicate error
- this.valueNode.value = "";
- dijit.form.TextBox.superclass._setValueAttr.call(this, "", priorityChange || (priorityChange === undefined && !this._focused));
- this._isvalid = false;
- this.validate(this._focused);
- this.item = null;
- }else{
- this.attr('item', result[0], priorityChange);
- }
- },
-
- _openResultList: function(/*Object*/ results, /*Object*/ dataObject){
- // Overrides ComboBox._openResultList()
-
- // #3285: tap into search callback to see if user's query resembles a match
- if(dataObject.query[this.searchAttr] != this._lastQuery){
- return;
- }
- this._isvalid = results.length != 0; // FIXME: should this be greater-than?
- this.validate(true);
- dijit.form.ComboBoxMixin.prototype._openResultList.apply(this, arguments);
- },
-
- _getValueAttr: function(){
- // summary:
- // Hook for attr('value') to work.
-
- // don't get the textbox value but rather the previously set hidden value.
- // Use this.valueNode.value which isn't always set for other MappedTextBox widgets until blur
- return this.valueNode.value;
- },
-
- _getValueField: function(){
- // Overrides ComboBox._getValueField()
- return "value";
- },
-
- _setValueAttr: function(/*String*/ value, /*Boolean?*/ priorityChange){
- // summary:
- // Hook so attr('value', value) works.
- // description:
- // Sets the value of the select.
- // Also sets the label to the corresponding value by reverse lookup.
- if(!this._onChangeActive){ priorityChange = null; }
- this._lastQuery = value;
-
- if(value === null || value === ''){
- this._setDisplayedValueAttr('', priorityChange);
- return;
- }
-
- //#3347: fetchItemByIdentity if no keyAttr specified
- var self = this;
- this.store.fetchItemByIdentity({
- identity: value,
- onItem: function(item){
- self._callbackSetLabel([item], undefined, priorityChange);
- }
- });
- },
-
- _setItemAttr: function(/*item*/ item, /*Boolean?*/ priorityChange, /*String?*/ displayedValue){
- // summary:
- // Set the displayed valued in the input box, and the hidden value
- // that gets submitted, based on a dojo.data store item.
- // description:
- // Users shouldn't call this function; they should be calling
- // attr('item', value)
- // tags:
- // private
- this._isvalid = true;
- this.inherited(arguments);
- this.valueNode.value = this.value;
- this._lastDisplayedValue = this.textbox.value;
- },
-
- _getDisplayQueryString: function(/*String*/ text){
- return text.replace(/([\\\*\?])/g, "\\$1");
- },
-
- _setDisplayedValueAttr: function(/*String*/ label, /*Boolean?*/ priorityChange){
- // summary:
- // Hook so attr('displayedValue', label) works.
- // description:
- // Sets textbox to display label. Also performs reverse lookup
- // to set the hidden value.
-
- // When this is called during initialization it'll ping the datastore
- // for reverse lookup, and when that completes (after an XHR request)
- // will call setValueAttr()... but that shouldn't trigger an onChange()
- // event, even when it happens after creation has finished
- if(!this._created){
- priorityChange = false;
- }
-
- if(this.store){
- this._hideResultList();
- var query = dojo.clone(this.query); // #6196: populate query with user-specifics
- // escape meta characters of dojo.data.util.filter.patternToRegExp().
- this._lastQuery = query[this.searchAttr] = this._getDisplayQueryString(label);
- // if the label is not valid, the callback will never set it,
- // so the last valid value will get the warning textbox set the
- // textbox value now so that the impending warning will make
- // sense to the user
- this.textbox.value = label;
- this._lastDisplayedValue = label;
- var _this = this;
- var fetch = {
- query: query,
- queryOptions: {
- ignoreCase: this.ignoreCase,
- deep: true
- },
- onComplete: function(result, dataObject){
- _this._fetchHandle = null;
- dojo.hitch(_this, "_callbackSetLabel")(result, dataObject, priorityChange);
- },
- onError: function(errText){
- _this._fetchHandle = null;
- console.error('dijit.form.FilteringSelect: ' + errText);
- dojo.hitch(_this, "_callbackSetLabel")([], undefined, false);
- }
- };
- dojo.mixin(fetch, this.fetchProperties);
- this._fetchHandle = this.store.fetch(fetch);
- }
- },
-
- postMixInProperties: function(){
- this.inherited(arguments);
- this._isvalid = !this.required;
- },
-
- undo: function(){
- this.attr('displayedValue', this._lastDisplayedValue);
- }
- }
-);
-
-}
diff --git a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/form/Form.js b/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/form/Form.js
deleted file mode 100644
index d891b2f..0000000
--- a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/form/Form.js
+++ /dev/null
@@ -1,178 +0,0 @@
-/*
- Copyright (c) 2004-2009, The Dojo Foundation All Rights Reserved.
- Available via Academic Free License >= 2.1 OR the modified BSD license.
- see: http://dojotoolkit.org/license for details
-*/
-
-
-if(!dojo._hasResource["dijit.form.Form"]){ //_hasResource checks added by build. Do not use _hasResource directly in your code.
-dojo._hasResource["dijit.form.Form"] = true;
-dojo.provide("dijit.form.Form");
-
-dojo.require("dijit._Widget");
-dojo.require("dijit._Templated");
-dojo.require("dijit.form._FormMixin");
-
-dojo.declare(
- "dijit.form.Form",
- [dijit._Widget, dijit._Templated, dijit.form._FormMixin],
- {
- // summary:
- // Widget corresponding to HTML form tag, for validation and serialization
- //
- // example:
- // | <form dojoType="dijit.form.Form" id="myForm">
- // | Name: <input type="text" name="name" />
- // | </form>
- // | myObj = {name: "John Doe"};
- // | dijit.byId('myForm').attr('value', myObj);
- // |
- // | myObj=dijit.byId('myForm').attr('value');
-
- // HTML <FORM> attributes
-
- // name: String?
- // Name of form for scripting.
- name: "",
-
- // action: String?
- // Server-side form handler.
- action: "",
-
- // method: String?
- // HTTP method used to submit the form, either "GET" or "POST".
- method: "",
-
- // encType: String?
- // Encoding type for the form, ex: application/x-www-form-urlencoded.
- encType: "",
-
- // accept-charset: String?
- // List of supported charsets.
- "accept-charset": "",
-
- // accept: String?
- // List of MIME types for file upload.
- accept: "",
-
- // target: String?
- // Target frame for the document to be opened in.
- target: "",
-
- templateString: "<form dojoAttachPoint='containerNode' dojoAttachEvent='onreset:_onReset,onsubmit:_onSubmit' ${nameAttrSetting}></form>",
-
- attributeMap: dojo.delegate(dijit._Widget.prototype.attributeMap, {
- action: "",
- method: "",
- encType: "",
- "accept-charset": "",
- accept: "",
- target: ""
- }),
-
- postMixInProperties: function(){
- // Setup name=foo string to be referenced from the template (but only if a name has been specified)
- // Unfortunately we can't use attributeMap to set the name due to IE limitations, see #8660
- this.nameAttrSetting = this.name ? ("name='" + this.name + "'") : "";
- this.inherited(arguments);
- },
-
- execute: function(/*Object*/ formContents){
- // summary:
- // Deprecated: use submit()
- // tags:
- // deprecated
- },
-
- onExecute: function(){
- // summary:
- // Deprecated: use onSubmit()
- // tags:
- // deprecated
- },
-
- _setEncTypeAttr: function(/*String*/ value){
- this.encType = value;
- dojo.attr(this.domNode, "encType", value);
- if(dojo.isIE){ this.domNode.encoding = value; }
- },
-
- postCreate: function(){
- // IE tries to hide encType
- // TODO: this code should be in parser, not here.
- if(dojo.isIE && this.srcNodeRef && this.srcNodeRef.attributes){
- var item = this.srcNodeRef.attributes.getNamedItem('encType');
- if(item && !item.specified && (typeof item.value == "string")){
- this.attr('encType', item.value);
- }
- }
- this.inherited(arguments);
- },
-
- onReset: function(/*Event?*/ e){
- // summary:
- // Callback when user resets the form. This method is intended
- // to be over-ridden. When the `reset` method is called
- // programmatically, the return value from `onReset` is used
- // to compute whether or not resetting should proceed
- // tags:
- // callback
- return true; // Boolean
- },
-
- _onReset: function(e){
- // create fake event so we can know if preventDefault() is called
- var faux = {
- returnValue: true, // the IE way
- preventDefault: function(){ // not IE
- this.returnValue = false;
- },
- stopPropagation: function(){}, currentTarget: e.currentTarget, target: e.target
- };
- // if return value is not exactly false, and haven't called preventDefault(), then reset
- if(!(this.onReset(faux) === false) && faux.returnValue){
- this.reset();
- }
- dojo.stopEvent(e);
- return false;
- },
-
- _onSubmit: function(e){
- var fp = dijit.form.Form.prototype;
- // TODO: remove this if statement beginning with 2.0
- if(this.execute != fp.execute || this.onExecute != fp.onExecute){
- dojo.deprecated("dijit.form.Form:execute()/onExecute() are deprecated. Use onSubmit() instead.", "", "2.0");
- this.onExecute();
- this.execute(this.getValues());
- }
- if(this.onSubmit(e) === false){ // only exactly false stops submit
- dojo.stopEvent(e);
- }
- },
-
- onSubmit: function(/*Event?*/e){
- // summary:
- // Callback when user submits the form.
- // description:
- // This method is intended to be over-ridden, but by default it checks and
- // returns the validity of form elements. When the `submit`
- // method is called programmatically, the return value from
- // `onSubmit` is used to compute whether or not submission
- // should proceed
- // tags:
- // extension
-
- return this.isValid(); // Boolean
- },
-
- submit: function(){
- // summary:
- // programmatically submit form if and only if the `onSubmit` returns true
- if(!(this.onSubmit() === false)){
- this.containerNode.submit();
- }
- }
- }
-);
-
-}
diff --git a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/form/HorizontalRule.js b/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/form/HorizontalRule.js
deleted file mode 100644
index 4880365..0000000
--- a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/form/HorizontalRule.js
+++ /dev/null
@@ -1,72 +0,0 @@
-/*
- Copyright (c) 2004-2009, The Dojo Foundation All Rights Reserved.
- Available via Academic Free License >= 2.1 OR the modified BSD license.
- see: http://dojotoolkit.org/license for details
-*/
-
-
-if(!dojo._hasResource["dijit.form.HorizontalRule"]){ //_hasResource checks added by build. Do not use _hasResource directly in your code.
-dojo._hasResource["dijit.form.HorizontalRule"] = true;
-dojo.provide("dijit.form.HorizontalRule");
-
-dojo.require("dijit._Widget");
-dojo.require("dijit._Templated");
-
-dojo.declare("dijit.form.HorizontalRule", [dijit._Widget, dijit._Templated],
-{
- // summary:
- // Hash marks for `dijit.form.HorizontalSlider`
-
- templateString: '<div class="dijitRuleContainer dijitRuleContainerH"></div>',
-
- // count: Integer
- // Number of hash marks to generate
- count: 3,
-
- // container: String
- // For HorizontalSlider, this is either "topDecoration" or "bottomDecoration",
- // and indicates whether this rule goes above or below the slider.
- container: "containerNode",
-
- // ruleStyle: String
- // CSS style to apply to individual hash marks
- ruleStyle: "",
-
- _positionPrefix: '<div class="dijitRuleMark dijitRuleMarkH" style="left:',
- _positionSuffix: '%;',
- _suffix: '"></div>',
-
- _genHTML: function(pos, ndx){
- return this._positionPrefix + pos + this._positionSuffix + this.ruleStyle + this._suffix;
- },
-
- // _isHorizontal: [protected extension] Boolean
- // VerticalRule will override this...
- _isHorizontal: true,
-
- postCreate: function(){
- var innerHTML;
- if(this.count == 1){
- innerHTML = this._genHTML(50, 0);
- }else{
- var i;
- var interval = 100 / (this.count-1);
- if(!this._isHorizontal || this.isLeftToRight()){
- innerHTML = this._genHTML(0, 0);
- for(i=1; i < this.count-1; i++){
- innerHTML += this._genHTML(interval*i, i);
- }
- innerHTML += this._genHTML(100, this.count-1);
- }else{
- innerHTML = this._genHTML(100, 0);
- for(i=1; i < this.count-1; i++){
- innerHTML += this._genHTML(100-interval*i, i);
- }
- innerHTML += this._genHTML(0, this.count-1);
- }
- }
- this.domNode.innerHTML = innerHTML;
- }
-});
-
-}
diff --git a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/form/HorizontalRuleLabels.js b/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/form/HorizontalRuleLabels.js
deleted file mode 100644
index 3a9a4ba..0000000
--- a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/form/HorizontalRuleLabels.js
+++ /dev/null
@@ -1,99 +0,0 @@
-/*
- Copyright (c) 2004-2009, The Dojo Foundation All Rights Reserved.
- Available via Academic Free License >= 2.1 OR the modified BSD license.
- see: http://dojotoolkit.org/license for details
-*/
-
-
-if(!dojo._hasResource["dijit.form.HorizontalRuleLabels"]){ //_hasResource checks added by build. Do not use _hasResource directly in your code.
-dojo._hasResource["dijit.form.HorizontalRuleLabels"] = true;
-dojo.provide("dijit.form.HorizontalRuleLabels");
-
-dojo.require("dijit.form.HorizontalRule");
-
-dojo.declare("dijit.form.HorizontalRuleLabels", dijit.form.HorizontalRule,
-{
- // summary:
- // Labels for `dijit.form.HorizontalSlider`
-
- templateString: '<div class="dijitRuleContainer dijitRuleContainerH dijitRuleLabelsContainer dijitRuleLabelsContainerH"></div>',
-
- // labelStyle: String
- // CSS style to apply to individual text labels
- labelStyle: "",
-
- // labels: String[]?
- // Array of text labels to render - evenly spaced from left-to-right or bottom-to-top.
- // Alternately, minimum and maximum can be specified, to get numeric labels.
- labels: [],
-
- // numericMargin: Integer
- // Number of generated numeric labels that should be rendered as '' on the ends when labels[] are not specified
- numericMargin: 0,
-
- // numericMinimum: Integer
- // Leftmost label value for generated numeric labels when labels[] are not specified
- minimum: 0,
-
- // numericMaximum: Integer
- // Rightmost label value for generated numeric labels when labels[] are not specified
- maximum: 1,
-
- // constraints: Object
- // pattern, places, lang, et al (see dojo.number) for generated numeric labels when labels[] are not specified
- constraints: {pattern:"#%"},
-
- _positionPrefix: '<div class="dijitRuleLabelContainer dijitRuleLabelContainerH" style="left:',
- _labelPrefix: '"><span class="dijitRuleLabel dijitRuleLabelH">',
- _suffix: '</span></div>',
-
- _calcPosition: function(pos){
- // summary:
- // Returns the value to be used in HTML for the label as part of the left: attribute
- // tags:
- // protected extension
- return pos;
- },
-
- _genHTML: function(pos, ndx){
- return this._positionPrefix + this._calcPosition(pos) + this._positionSuffix + this.labelStyle + this._labelPrefix + this.labels[ndx] + this._suffix;
- },
-
- getLabels: function(){
- // summary:
- // Overridable function to return array of labels to use for this slider.
- // Can specify a getLabels() method instead of a labels[] array, or min/max attributes.
- // tags:
- // protected extension
-
- // if the labels array was not specified directly, then see if <li> children were
- var labels = this.labels;
- if(!labels.length){
- // for markup creation, labels are specified as child elements
- labels = dojo.query("> li", this.srcNodeRef).map(function(node){
- return String(node.innerHTML);
- });
- }
- this.srcNodeRef.innerHTML = '';
- // if the labels were not specified directly and not as <li> children, then calculate numeric labels
- if(!labels.length && this.count > 1){
- var start = this.minimum;
- var inc = (this.maximum - start) / (this.count-1);
- for(var i=0; i < this.count; i++){
- labels.push((i < this.numericMargin || i >= (this.count-this.numericMargin)) ? '' : dojo.number.format(start, this.constraints));
- start += inc;
- }
- }
- return labels;
- },
-
- postMixInProperties: function(){
- this.inherited(arguments);
- this.labels = this.getLabels();
- this.count = this.labels.length;
- }
-});
-
-
-
-}
diff --git a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/form/HorizontalSlider.js b/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/form/HorizontalSlider.js
deleted file mode 100644
index 26ea3e1..0000000
--- a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/form/HorizontalSlider.js
+++ /dev/null
@@ -1,326 +0,0 @@
-/*
- Copyright (c) 2004-2009, The Dojo Foundation All Rights Reserved.
- Available via Academic Free License >= 2.1 OR the modified BSD license.
- see: http://dojotoolkit.org/license for details
-*/
-
-
-if(!dojo._hasResource["dijit.form.HorizontalSlider"]){ //_hasResource checks added by build. Do not use _hasResource directly in your code.
-dojo._hasResource["dijit.form.HorizontalSlider"] = true;
-dojo.provide("dijit.form.HorizontalSlider");
-
-dojo.require("dijit.form._FormWidget");
-dojo.require("dijit._Container");
-dojo.require("dojo.dnd.move");
-dojo.require("dijit.form.Button");
-dojo.require("dojo.number");
-dojo.require("dojo._base.fx");
-
-dojo.declare(
- "dijit.form.HorizontalSlider",
- [dijit.form._FormValueWidget, dijit._Container],
-{
- // summary:
- // A form widget that allows one to select a value with a horizontally draggable handle
-
- templateString: dojo.cache("dijit.form", "templates/HorizontalSlider.html", "<table class=\"dijit dijitReset dijitSlider\" cellspacing=\"0\" cellpadding=\"0\" border=\"0\" rules=\"none\" dojoAttachEvent=\"onkeypress:_onKeyPress,onkeyup:_onKeyUp\"\n\t><tr class=\"dijitReset\"\n\t\t><td class=\"dijitReset\" colspan=\"2\"></td\n\t\t><td dojoAttachPoint=\"topDecoration\" class=\"dijitReset\" style=\"text-align:center;width:100%;\"></td\n\t\t><td class=\"dijitReset\" colspan=\"2\"></td\n\t></tr\n\t><tr class=\"dijitReset\"\n\t\t><td class=\"dijitReset dijitSliderButtonContainer dijitSliderButtonContainerH\"\n\t\t\t><div class=\"dijitSliderDecrementIconH\" tabIndex=\"-1\" style=\"display:none\" dojoAttachPoint=\"decrementButton\"><span class=\"dijitSliderButtonInner\">-</span></div\n\t\t></td\n\t\t><td class=\"dijitReset\"\n\t\t\t><div class=\"dijitSliderBar dijitSliderBumper dijitSliderBumperH dijitSliderLeftBumper dijitSliderLeftBumper\" dojoAttachEvent=\"onmousedown:_onClkDecBumper\"></div\n\t\t></td\n\t\t><td class=\"dijitReset\"\n\t\t\t><input dojoAttachPoint=\"valueNode\" type=\"hidden\" ${nameAttrSetting}\n\t\t\t/><div class=\"dijitReset dijitSliderBarContainerH\" waiRole=\"presentation\" dojoAttachPoint=\"sliderBarContainer\"\n\t\t\t\t><div waiRole=\"presentation\" dojoAttachPoint=\"progressBar\" class=\"dijitSliderBar dijitSliderBarH dijitSliderProgressBar dijitSliderProgressBarH\" dojoAttachEvent=\"onmousedown:_onBarClick\"\n\t\t\t\t\t><div class=\"dijitSliderMoveable dijitSliderMoveableH\"\n\t\t\t\t\t\t><div dojoAttachPoint=\"sliderHandle,focusNode\" class=\"dijitSliderImageHandle dijitSliderImageHandleH\" dojoAttachEvent=\"onmousedown:_onHandleClick\" waiRole=\"slider\" valuemin=\"${minimum}\" valuemax=\"${maximum}\"></div\n\t\t\t\t\t></div\n\t\t\t\t></div\n\t\t\t\t><div waiRole=\"presentation\" dojoAttachPoint=\"remainingBar\" class=\"dijitSliderBar dijitSliderBarH dijitSliderRemainingBar dijitSliderRemainingBarH\" dojoAttachEvent=\"onmousedown:_onBarClick\"></div\n\t\t\t></div\n\t\t></td\n\t\t><td class=\"dijitReset\"\n\t\t\t><div class=\"dijitSliderBar dijitSliderBumper dijitSliderBumperH dijitSliderRightBumper dijitSliderRightBumper\" dojoAttachEvent=\"onmousedown:_onClkIncBumper\"></div\n\t\t></td\n\t\t><td class=\"dijitReset dijitSliderButtonContainer dijitSliderButtonContainerH\" style=\"right:0px;\"\n\t\t\t><div class=\"dijitSliderIncrementIconH\" tabIndex=\"-1\" style=\"display:none\" dojoAttachPoint=\"incrementButton\"><span class=\"dijitSliderButtonInner\">+</span></div\n\t\t></td\n\t></tr\n\t><tr class=\"dijitReset\"\n\t\t><td class=\"dijitReset\" colspan=\"2\"></td\n\t\t><td dojoAttachPoint=\"containerNode,bottomDecoration\" class=\"dijitReset\" style=\"text-align:center;\"></td\n\t\t><td class=\"dijitReset\" colspan=\"2\"></td\n\t></tr\n></table>\n"),
-
- // Overrides FormValueWidget.value to indicate numeric value
- value: 0,
-
- // showButtons: Boolean
- // Show increment/decrement buttons at the ends of the slider?
- showButtons: true,
-
- // minimum:: Integer
- // The minimum value the slider can be set to.
- minimum: 0,
-
- // maximum: Integer
- // The maximum value the slider can be set to.
- maximum: 100,
-
- // discreteValues: Integer
- // If specified, indicates that the slider handle has only 'discreteValues' possible positions,
- // and that after dragging the handle, it will snap to the nearest possible position.
- // Thus, the slider has only 'discreteValues' possible values.
- //
- // For example, if minimum=10, maxiumum=30, and discreteValues=3, then the slider handle has
- // three possible positions, representing values 10, 20, or 30.
- //
- // If discreteValues is not specified or if it's value is higher than the number of pixels
- // in the slider bar, then the slider handle can be moved freely, and the slider's value will be
- // computed/reported based on pixel position (in this case it will likely be fractional,
- // such as 123.456789).
- discreteValues: Infinity,
-
- // pageIncrement: Integer
- // If discreteValues is also specified, this indicates the amount of clicks (ie, snap positions)
- // that the slider handle is moved via pageup/pagedown keys.
- // If discreteValues is not specified, it indicates the number of pixels.
- pageIncrement: 2,
-
- // clickSelect: Boolean
- // If clicking the slider bar changes the value or not
- clickSelect: true,
-
- // slideDuration: Number
- // The time in ms to take to animate the slider handle from 0% to 100%,
- // when clicking the slider bar to make the handle move.
- slideDuration: dijit.defaultDuration,
-
- // Flag to _Templated
- widgetsInTemplate: true,
-
- attributeMap: dojo.delegate(dijit.form._FormWidget.prototype.attributeMap, {
- id: ""
- }),
-
- baseClass: "dijitSlider",
-
- _mousePixelCoord: "pageX",
- _pixelCount: "w",
- _startingPixelCoord: "x",
- _startingPixelCount: "l",
- _handleOffsetCoord: "left",
- _progressPixelSize: "width",
-
- _onKeyUp: function(/*Event*/ e){
- if(this.disabled || this.readOnly || e.altKey || e.ctrlKey || e.metaKey){ return; }
- this._setValueAttr(this.value, true);
- },
-
- _onKeyPress: function(/*Event*/ e){
- if(this.disabled || this.readOnly || e.altKey || e.ctrlKey || e.metaKey){ return; }
- switch(e.charOrCode){
- case dojo.keys.HOME:
- this._setValueAttr(this.minimum, false);
- break;
- case dojo.keys.END:
- this._setValueAttr(this.maximum, false);
- break;
- // this._descending === false: if ascending vertical (min on top)
- // (this._descending || this.isLeftToRight()): if left-to-right horizontal or descending vertical
- case ((this._descending || this.isLeftToRight()) ? dojo.keys.RIGHT_ARROW : dojo.keys.LEFT_ARROW):
- case (this._descending === false ? dojo.keys.DOWN_ARROW : dojo.keys.UP_ARROW):
- case (this._descending === false ? dojo.keys.PAGE_DOWN : dojo.keys.PAGE_UP):
- this.increment(e);
- break;
- case ((this._descending || this.isLeftToRight()) ? dojo.keys.LEFT_ARROW : dojo.keys.RIGHT_ARROW):
- case (this._descending === false ? dojo.keys.UP_ARROW : dojo.keys.DOWN_ARROW):
- case (this._descending === false ? dojo.keys.PAGE_UP : dojo.keys.PAGE_DOWN):
- this.decrement(e);
- break;
- default:
- return;
- }
- dojo.stopEvent(e);
- },
-
- _onHandleClick: function(e){
- if(this.disabled || this.readOnly){ return; }
- if(!dojo.isIE){
- // make sure you get focus when dragging the handle
- // (but don't do on IE because it causes a flicker on mouse up (due to blur then focus)
- dijit.focus(this.sliderHandle);
- }
- dojo.stopEvent(e);
- },
-
- _isReversed: function(){
- // summary:
- // Returns true if direction is from right to left
- // tags:
- // protected extension
- return !this.isLeftToRight();
- },
-
- _onBarClick: function(e){
- if(this.disabled || this.readOnly || !this.clickSelect){ return; }
- dijit.focus(this.sliderHandle);
- dojo.stopEvent(e);
- var abspos = dojo.position(this.sliderBarContainer, true);
- var pixelValue = e[this._mousePixelCoord] - abspos[this._startingPixelCoord];
- this._setPixelValue(this._isReversed() ? (abspos[this._pixelCount] - pixelValue) : pixelValue, abspos[this._pixelCount], true);
- this._movable.onMouseDown(e);
- },
-
- _setPixelValue: function(/*Number*/ pixelValue, /*Number*/ maxPixels, /*Boolean, optional*/ priorityChange){
- if(this.disabled || this.readOnly){ return; }
- pixelValue = pixelValue < 0 ? 0 : maxPixels < pixelValue ? maxPixels : pixelValue;
- var count = this.discreteValues;
- if(count <= 1 || count == Infinity){ count = maxPixels; }
- count--;
- var pixelsPerValue = maxPixels / count;
- var wholeIncrements = Math.round(pixelValue / pixelsPerValue);
- this._setValueAttr((this.maximum-this.minimum)*wholeIncrements/count + this.minimum, priorityChange);
- },
-
- _setValueAttr: function(/*Number*/ value, /*Boolean, optional*/ priorityChange){
- // summary:
- // Hook so attr('value', value) works.
- this.valueNode.value = this.value = value;
- dijit.setWaiState(this.focusNode, "valuenow", value);
- this.inherited(arguments);
- var percent = (value - this.minimum) / (this.maximum - this.minimum);
- var progressBar = (this._descending === false) ? this.remainingBar : this.progressBar;
- var remainingBar = (this._descending === false) ? this.progressBar : this.remainingBar;
- if(this._inProgressAnim && this._inProgressAnim.status != "stopped"){
- this._inProgressAnim.stop(true);
- }
- if(priorityChange && this.slideDuration > 0 && progressBar.style[this._progressPixelSize]){
- // animate the slider
- var _this = this;
- var props = {};
- var start = parseFloat(progressBar.style[this._progressPixelSize]);
- var duration = this.slideDuration * (percent-start/100);
- if(duration == 0){ return; }
- if(duration < 0){ duration = 0 - duration; }
- props[this._progressPixelSize] = { start: start, end: percent*100, units:"%" };
- this._inProgressAnim = dojo.animateProperty({ node: progressBar, duration: duration,
- onAnimate: function(v){ remainingBar.style[_this._progressPixelSize] = (100-parseFloat(v[_this._progressPixelSize])) + "%"; },
- onEnd: function(){ delete _this._inProgressAnim; },
- properties: props
- })
- this._inProgressAnim.play();
- }
- else{
- progressBar.style[this._progressPixelSize] = (percent*100) + "%";
- remainingBar.style[this._progressPixelSize] = ((1-percent)*100) + "%";
- }
- },
-
- _bumpValue: function(signedChange, /*Boolean, optional*/ priorityChange){
- if(this.disabled || this.readOnly){ return; }
- var s = dojo.getComputedStyle(this.sliderBarContainer);
- var c = dojo._getContentBox(this.sliderBarContainer, s);
- var count = this.discreteValues;
- if(count <= 1 || count == Infinity){ count = c[this._pixelCount]; }
- count--;
- var value = (this.value - this.minimum) * count / (this.maximum - this.minimum) + signedChange;
- if(value < 0){ value = 0; }
- if(value > count){ value = count; }
- value = value * (this.maximum - this.minimum) / count + this.minimum;
- this._setValueAttr(value, priorityChange);
- },
-
- _onClkBumper: function(val){
- if(this.disabled || this.readOnly || !this.clickSelect){ return; }
- this._setValueAttr(val, true);
- },
-
- _onClkIncBumper: function(){
- this._onClkBumper(this._descending === false ? this.minimum : this.maximum);
- },
-
- _onClkDecBumper: function(){
- this._onClkBumper(this._descending === false ? this.maximum : this.minimum);
- },
-
- decrement: function(/*Event*/ e){
- // summary:
- // Decrement slider
- // tags:
- // private
- this._bumpValue(e.charOrCode == dojo.keys.PAGE_DOWN ? -this.pageIncrement : -1);
- },
-
- increment: function(/*Event*/ e){
- // summary:
- // Increment slider
- // tags:
- // private
- this._bumpValue(e.charOrCode == dojo.keys.PAGE_UP ? this.pageIncrement : 1);
- },
-
- _mouseWheeled: function(/*Event*/ evt){
- // summary:
- // Event handler for mousewheel where supported
- dojo.stopEvent(evt);
- var janky = !dojo.isMozilla;
- var scroll = evt[(janky ? "wheelDelta" : "detail")] * (janky ? 1 : -1);
- this._bumpValue(scroll < 0 ? -1 : 1, true); // negative scroll acts like a decrement
- },
-
- startup: function(){
- dojo.forEach(this.getChildren(), function(child){
- if(this[child.container] != this.containerNode){
- this[child.container].appendChild(child.domNode);
- }
- }, this);
- },
-
- _typematicCallback: function(/*Number*/ count, /*Object*/ button, /*Event*/ e){
- if(count == -1){
- this._setValueAttr(this.value, true);
- }else{
- this[(button == (this._descending? this.incrementButton : this.decrementButton)) ? "decrement" : "increment"](e);
- }
- },
-
- postCreate: function(){
- if(this.showButtons){
- this.incrementButton.style.display="";
- this.decrementButton.style.display="";
- this._connects.push(dijit.typematic.addMouseListener(
- this.decrementButton, this, "_typematicCallback", 25, 500));
- this._connects.push(dijit.typematic.addMouseListener(
- this.incrementButton, this, "_typematicCallback", 25, 500));
- }
- this.connect(this.domNode, !dojo.isMozilla ? "onmousewheel" : "DOMMouseScroll", "_mouseWheeled");
-
- // define a custom constructor for a SliderMover that points back to me
- var mover = dojo.declare(dijit.form._SliderMover, {
- widget: this
- });
-
- this._movable = new dojo.dnd.Moveable(this.sliderHandle, {mover: mover});
- // find any associated label element and add to slider focusnode.
- var label=dojo.query('label[for="'+this.id+'"]');
- if(label.length){
- label[0].id = (this.id+"_label");
- dijit.setWaiState(this.focusNode, "labelledby", label[0].id);
- }
- dijit.setWaiState(this.focusNode, "valuemin", this.minimum);
- dijit.setWaiState(this.focusNode, "valuemax", this.maximum);
-
- this.inherited(arguments);
- this._layoutHackIE7();
- },
-
- destroy: function(){
- this._movable.destroy();
- if(this._inProgressAnim && this._inProgressAnim.status != "stopped"){
- this._inProgressAnim.stop(true);
- }
- this._supportingWidgets = dijit.findWidgets(this.domNode); // tells destroy about pseudo-child widgets (ruler/labels)
- this.inherited(arguments);
- }
-});
-
-dojo.declare("dijit.form._SliderMover",
- dojo.dnd.Mover,
-{
- onMouseMove: function(e){
- var widget = this.widget;
- var abspos = widget._abspos;
- if(!abspos){
- abspos = widget._abspos = dojo.position(widget.sliderBarContainer, true);
- widget._setPixelValue_ = dojo.hitch(widget, "_setPixelValue");
- widget._isReversed_ = widget._isReversed();
- }
- var pixelValue = e[widget._mousePixelCoord] - abspos[widget._startingPixelCoord];
- widget._setPixelValue_(widget._isReversed_ ? (abspos[widget._pixelCount]-pixelValue) : pixelValue, abspos[widget._pixelCount], false);
- },
-
- destroy: function(e){
- dojo.dnd.Mover.prototype.destroy.apply(this, arguments);
- var widget = this.widget;
- widget._abspos = null;
- widget._setValueAttr(widget.value, true);
- }
-});
-
-
-
-}
diff --git a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/form/MappedTextBox.js b/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/form/MappedTextBox.js
deleted file mode 100644
index 11ed9e6..0000000
--- a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/form/MappedTextBox.js
+++ /dev/null
@@ -1,13 +0,0 @@
-/*
- Copyright (c) 2004-2009, The Dojo Foundation All Rights Reserved.
- Available via Academic Free License >= 2.1 OR the modified BSD license.
- see: http://dojotoolkit.org/license for details
-*/
-
-
-if(!dojo._hasResource["dijit.form.MappedTextBox"]){ //_hasResource checks added by build. Do not use _hasResource directly in your code.
-dojo._hasResource["dijit.form.MappedTextBox"] = true;
-dojo.provide("dijit.form.MappedTextBox");
-dojo.require("dijit.form.ValidationTextBox");
-
-}
diff --git a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/form/MultiSelect.js b/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/form/MultiSelect.js
deleted file mode 100644
index 4b77d83..0000000
--- a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/form/MultiSelect.js
+++ /dev/null
@@ -1,119 +0,0 @@
-/*
- Copyright (c) 2004-2009, The Dojo Foundation All Rights Reserved.
- Available via Academic Free License >= 2.1 OR the modified BSD license.
- see: http://dojotoolkit.org/license for details
-*/
-
-
-if(!dojo._hasResource["dijit.form.MultiSelect"]){ //_hasResource checks added by build. Do not use _hasResource directly in your code.
-dojo._hasResource["dijit.form.MultiSelect"] = true;
-dojo.provide("dijit.form.MultiSelect");
-
-dojo.require("dijit.form._FormWidget");
-
-dojo.declare("dijit.form.MultiSelect", dijit.form._FormValueWidget, {
- // summary:
- // Widget version of a <select multiple=true> element,
- // for selecting multiple options.
-
- // size: Number
- // Number of elements to display on a page
- // NOTE: may be removed in version 2.0, since elements may have variable height;
- // set the size via style="..." or CSS class names instead.
- size: 7,
-
- templateString: "<select multiple='true' ${nameAttrSetting} dojoAttachPoint='containerNode,focusNode' dojoAttachEvent='onchange: _onChange'></select>",
-
- attributeMap: dojo.delegate(dijit.form._FormWidget.prototype.attributeMap, {
- size: "focusNode"
- }),
-
- reset: function(){
- // summary:
- // Reset the widget's value to what it was at initialization time
-
- // TODO: once we inherit from FormValueWidget this won't be needed
- this._hasBeenBlurred = false;
- this._setValueAttr(this._resetValue, true);
- },
-
- addSelected: function(/* dijit.form.MultiSelect */ select){
- // summary:
- // Move the selected nodes of a passed Select widget
- // instance to this Select widget.
- //
- // example:
- // | // move all the selected values from "bar" to "foo"
- // | dijit.byId("foo").addSelected(dijit.byId("bar"));
-
- select.getSelected().forEach(function(n){
- this.containerNode.appendChild(n);
- // scroll to bottom to see item
- // cannot use scrollIntoView since <option> tags don't support all attributes
- // does not work on IE due to a bug where <select> always shows scrollTop = 0
- this.domNode.scrollTop = this.domNode.offsetHeight; // overshoot will be ignored
- // scrolling the source select is trickier esp. on safari who forgets to change the scrollbar size
- var oldscroll = select.domNode.scrollTop;
- select.domNode.scrollTop = 0;
- select.domNode.scrollTop = oldscroll;
- },this);
- },
-
- getSelected: function(){
- // summary:
- // Access the NodeList of the selected options directly
- return dojo.query("option",this.containerNode).filter(function(n){
- return n.selected; // Boolean
- }); // dojo.NodeList
- },
-
- _getValueAttr: function(){
- // summary:
- // Hook so attr('value') works.
- // description:
- // Returns an array of the selected options' values.
- return this.getSelected().map(function(n){
- return n.value;
- });
- },
-
- multiple: true, // for Form
-
- _setValueAttr: function(/* Array */values){
- // summary:
- // Hook so attr('value', values) works.
- // description:
- // Set the value(s) of this Select based on passed values
- dojo.query("option",this.containerNode).forEach(function(n){
- n.selected = (dojo.indexOf(values,n.value) != -1);
- });
- },
-
- invertSelection: function(onChange){
- // summary:
- // Invert the selection
- // onChange: Boolean
- // If null, onChange is not fired.
- dojo.query("option",this.containerNode).forEach(function(n){
- n.selected = !n.selected;
- });
- this._handleOnChange(this.attr('value'), onChange == true);
- },
-
- _onChange: function(/*Event*/ e){
- this._handleOnChange(this.attr('value'), true);
- },
-
- // for layout widgets:
- resize: function(/* Object */size){
- if(size){
- dojo.marginBox(this.domNode, size);
- }
- },
-
- postCreate: function(){
- this._onChange();
- }
-});
-
-}
diff --git a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/form/NumberSpinner.js b/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/form/NumberSpinner.js
deleted file mode 100644
index d9b404e..0000000
--- a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/form/NumberSpinner.js
+++ /dev/null
@@ -1,72 +0,0 @@
-/*
- Copyright (c) 2004-2009, The Dojo Foundation All Rights Reserved.
- Available via Academic Free License >= 2.1 OR the modified BSD license.
- see: http://dojotoolkit.org/license for details
-*/
-
-
-if(!dojo._hasResource["dijit.form.NumberSpinner"]){ //_hasResource checks added by build. Do not use _hasResource directly in your code.
-dojo._hasResource["dijit.form.NumberSpinner"] = true;
-dojo.provide("dijit.form.NumberSpinner");
-
-dojo.require("dijit.form._Spinner");
-dojo.require("dijit.form.NumberTextBox");
-
-dojo.declare("dijit.form.NumberSpinner",
- [dijit.form._Spinner, dijit.form.NumberTextBoxMixin],
- {
- // summary:
- // Extends NumberTextBox to add up/down arrows and pageup/pagedown for incremental change to the value
- //
- // description:
- // A `dijit.form.NumberTextBox` extension to provide keyboard accessible value selection
- // as well as icons for spinning direction. When using the keyboard, the typematic rules
- // apply, meaning holding the key will gradually increarease or decrease the value and
- // accelerate.
- //
- // example:
- // | new dijit.form.NumberSpinner({ constraints:{ max:300, min:100 }}, "someInput");
-
- adjust: function(/* Object */val, /* Number*/delta){
- // summary:
- // Change Number val by the given amount
- // tags:
- // protected
-
- var tc = this.constraints,
- v = isNaN(val),
- gotMax = !isNaN(tc.max),
- gotMin = !isNaN(tc.min)
- ;
- if(v && delta != 0){ // blank or invalid value and they want to spin, so create defaults
- val = (delta > 0) ?
- gotMin ? tc.min : gotMax ? tc.max : 0 :
- gotMax ? this.constraints.max : gotMin ? tc.min : 0
- ;
- }
- var newval = val + delta;
- if(v || isNaN(newval)){ return val; }
- if(gotMax && (newval > tc.max)){
- newval = tc.max;
- }
- if(gotMin && (newval < tc.min)){
- newval = tc.min;
- }
- return newval;
- },
-
- _onKeyPress: function(e){
- if((e.charOrCode == dojo.keys.HOME || e.charOrCode == dojo.keys.END) && !(e.ctrlKey || e.altKey || e.metaKey)
- && typeof this.attr('value') != 'undefined' /* gibberish, so HOME and END are default editing keys*/){
- var value = this.constraints[(e.charOrCode == dojo.keys.HOME ? "min" : "max")];
- if(value){
- this._setValueAttr(value,true);
- }
- // eat home or end key whether we change the value or not
- dojo.stopEvent(e);
- }
- }
-
-});
-
-}
diff --git a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/form/NumberTextBox.js b/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/form/NumberTextBox.js
deleted file mode 100644
index dc37325..0000000
--- a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/form/NumberTextBox.js
+++ /dev/null
@@ -1,251 +0,0 @@
-/*
- Copyright (c) 2004-2009, The Dojo Foundation All Rights Reserved.
- Available via Academic Free License >= 2.1 OR the modified BSD license.
- see: http://dojotoolkit.org/license for details
-*/
-
-
-if(!dojo._hasResource["dijit.form.NumberTextBox"]){ //_hasResource checks added by build. Do not use _hasResource directly in your code.
-dojo._hasResource["dijit.form.NumberTextBox"] = true;
-dojo.provide("dijit.form.NumberTextBox");
-
-dojo.require("dijit.form.ValidationTextBox");
-dojo.require("dojo.number");
-
-/*=====
-dojo.declare(
- "dijit.form.NumberTextBox.__Constraints",
- [dijit.form.RangeBoundTextBox.__Constraints, dojo.number.__FormatOptions, dojo.number.__ParseOptions], {
- // summary:
- // Specifies both the rules on valid/invalid values (minimum, maximum,
- // number of required decimal places), and also formatting options for
- // displaying the value when the field is not focused.
- // example:
- // Minimum/maximum:
- // To specify a field between 0 and 120:
- // | {min:0,max:120}
- // To specify a field that must be an integer:
- // | {fractional:false}
- // To specify a field where 0 to 3 decimal places are allowed on input,
- // but after the field is blurred the value is displayed with 3 decimal places:
- // | {places:'0,3'}
-});
-=====*/
-
-dojo.declare("dijit.form.NumberTextBoxMixin",
- null,
- {
- // summary:
- // A mixin for all number textboxes
- // tags:
- // protected
-
- // Override ValidationTextBox.regExpGen().... we use a reg-ex generating function rather
- // than a straight regexp to deal with locale (plus formatting options too?)
- regExpGen: dojo.number.regexp,
-
- /*=====
- // constraints: dijit.form.NumberTextBox.__Constraints
- // Despite the name, this parameter specifies both constraints on the input
- // (including minimum/maximum allowed values) as well as
- // formatting options like places (the number of digits to display after
- // the decimal point). See `dijit.form.NumberTextBox.__Constraints` for details.
- constraints: {},
- ======*/
-
- // value: Number
- // The value of this NumberTextBox as a javascript Number (ie, not a String).
- // If the displayed value is blank, the value is NaN, and if the user types in
- // an gibberish value (like "hello world"), the value is undefined
- // (i.e. attr('value') returns undefined).
- //
- // Symetrically, attr('value', NaN) will clear the displayed value,
- // whereas attr('value', undefined) will have no effect.
- value: NaN,
-
- // editOptions: [protected] Object
- // Properties to mix into constraints when the value is being edited.
- // This is here because we edit the number in the format "12345", which is
- // different than the display value (ex: "12,345")
- editOptions: { pattern: '#.######' },
-
- /*=====
- _formatter: function(value, options){
- // summary:
- // _formatter() is called by format(). It's the base routine for formatting a number,
- // as a string, for example converting 12345 into "12,345".
- // value: Number
- // The number to be converted into a string.
- // options: dojo.number.__FormatOptions?
- // Formatting options
- // tags:
- // protected extension
-
- return "12345"; // String
- },
- =====*/
- _formatter: dojo.number.format,
-
- postMixInProperties: function(){
- var places = typeof this.constraints.places == "number"? this.constraints.places : 0;
- if(places){ places++; } // decimal rounding errors take away another digit of precision
- if(typeof this.constraints.max != "number"){
- this.constraints.max = 9 * Math.pow(10, 15-places);
- }
- if(typeof this.constraints.min != "number"){
- this.constraints.min = -9 * Math.pow(10, 15-places);
- }
- this.inherited(arguments);
- },
-
- _onFocus: function(){
- if(this.disabled){ return; }
- var val = this.attr('value');
- if(typeof val == "number" && !isNaN(val)){
- var formattedValue = this.format(val, this.constraints);
- if(formattedValue !== undefined){
- this.textbox.value = formattedValue;
- }
- }
- this.inherited(arguments);
- },
-
- format: function(/*Number*/ value, /*dojo.number.__FormatOptions*/ constraints){
- // summary:
- // Formats the value as a Number, according to constraints.
- // tags:
- // protected
-
- if(typeof value != "number"){ return String(value); }
- if(isNaN(value)){ return ""; }
- if(("rangeCheck" in this) && !this.rangeCheck(value, constraints)){ return String(value) }
- if(this.editOptions && this._focused){
- constraints = dojo.mixin({}, constraints, this.editOptions);
- }
- return this._formatter(value, constraints);
- },
-
- /*=====
- parse: function(value, constraints){
- // summary:
- // Parses the string value as a Number, according to constraints.
- // value: String
- // String representing a number
- // constraints: dojo.number.__ParseOptions
- // Formatting options
- // tags:
- // protected
-
- return 123.45; // Number
- },
- =====*/
- parse: dojo.number.parse,
-
- _getDisplayedValueAttr: function(){
- var v = this.inherited(arguments);
- return isNaN(v) ? this.textbox.value : v;
- },
-
- filter: function(/*Number*/ value){
- // summary:
- // This is called with both the display value (string), and the actual value (a number).
- // When called with the actual value it does corrections so that '' etc. are represented as NaN.
- // Otherwise it dispatches to the superclass's filter() method.
- //
- // See `dijit.form.TextBox.filter` for more details.
- return (value === null || value === '' || value === undefined) ? NaN : this.inherited(arguments); // attr('value', null||''||undefined) should fire onChange(NaN)
- },
-
- serialize: function(/*Number*/ value, /*Object?*/options){
- // summary:
- // Convert value (a Number) into a canonical string (ie, how the number literal is written in javascript/java/C/etc.)
- // tags:
- // protected
- return (typeof value != "number" || isNaN(value)) ? '' : this.inherited(arguments);
- },
-
- _setValueAttr: function(/*Number*/ value, /*Boolean?*/ priorityChange, /*String?*/formattedValue){
- // summary:
- // Hook so attr('value', ...) works.
- if(value !== undefined && formattedValue === undefined){
- if(typeof value == "number"){
- if(isNaN(value)){ formattedValue = '' }
- else if(("rangeCheck" in this) && !this.rangeCheck(value, this.constraints)){
- formattedValue = String(value);
- }
- }else if(!value){ // 0 processed in if branch above, ''|null|undefined flow thru here
- formattedValue = '';
- value = NaN;
- }else{ // non-numeric values
- formattedValue = String(value);
- value = undefined;
- }
- }
- this.inherited(arguments, [value, priorityChange, formattedValue]);
- },
-
- _getValueAttr: function(){
- // summary:
- // Hook so attr('value') works.
- // Returns Number, NaN for '', or undefined for unparsable text
- var v = this.inherited(arguments); // returns Number for all values accepted by parse() or NaN for all other displayed values
-
- // If the displayed value of the textbox is gibberish (ex: "hello world"), this.inherited() above
- // returns NaN; this if() branch converts the return value to undefined.
- // Returning undefined prevents user text from being overwritten when doing _setValueAttr(_getValueAttr()).
- // A blank displayed value is still returned as NaN.
- if(isNaN(v) && this.textbox.value !== ''){
- if(this.constraints.exponent !== false && /\de[-+]?|\d/i.test(this.textbox.value) && (new RegExp("^"+dojo.number._realNumberRegexp(dojo.mixin({}, this.constraints))+"$").test(this.textbox.value))){ // check for exponential notation that parse() rejected (erroneously?)
- var n = Number(this.textbox.value);
- return isNaN(n) ? undefined : n; // return exponential Number or undefined for random text (may not be possible to do with the above RegExp check)
- }else{
- return undefined; // gibberish
- }
- }else{
- return v; // Number or NaN for ''
- }
- },
-
- isValid: function(/*Boolean*/ isFocused){
- // Overrides dijit.form.RangeBoundTextBox.isValid to check that the editing-mode value is valid since
- // it may not be formatted according to the regExp vaidation rules
- if(!this._focused || this._isEmpty(this.textbox.value)){
- return this.inherited(arguments);
- }else{
- var v = this.attr('value');
- if(!isNaN(v) && this.rangeCheck(v, this.constraints)){
- if(this.constraints.exponent !== false && /\de[-+]?\d/i.test(this.textbox.value)){ // exponential, parse doesn't like it
- return true; // valid exponential number in range
- }else{
- return this.inherited(arguments);
- }
- }else{
- return false;
- }
- }
- }
- }
-);
-
-dojo.declare("dijit.form.NumberTextBox",
- [dijit.form.RangeBoundTextBox,dijit.form.NumberTextBoxMixin],
- {
- // summary:
- // A TextBox for entering numbers, with formatting and range checking
- // description:
- // NumberTextBox is a textbox for entering and displaying numbers, supporting
- // the following main features:
- //
- // 1. Enforce minimum/maximum allowed values (as well as enforcing that the user types
- // a number rather than a random string)
- // 2. NLS support (altering roles of comma and dot as "thousands-separator" and "decimal-point"
- // depending on locale).
- // 3. Separate modes for editing the value and displaying it, specifically that
- // the thousands separator character (typically comma) disappears when editing
- // but reappears after the field is blurred.
- // 4. Formatting and constraints regarding the number of places (digits after the decimal point)
- // allowed on input, and number of places displayed when blurred (see `constraints` parameter).
- }
-);
-
-}
diff --git a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/form/RadioButton.js b/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/form/RadioButton.js
deleted file mode 100644
index 7adb3c6..0000000
--- a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/form/RadioButton.js
+++ /dev/null
@@ -1,15 +0,0 @@
-/*
- Copyright (c) 2004-2009, The Dojo Foundation All Rights Reserved.
- Available via Academic Free License >= 2.1 OR the modified BSD license.
- see: http://dojotoolkit.org/license for details
-*/
-
-
-if(!dojo._hasResource["dijit.form.RadioButton"]){ //_hasResource checks added by build. Do not use _hasResource directly in your code.
-dojo._hasResource["dijit.form.RadioButton"] = true;
-dojo.provide("dijit.form.RadioButton");
-dojo.require("dijit.form.CheckBox");
-
-// TODO: for 2.0, move the RadioButton code into this file
-
-}
diff --git a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/form/RangeBoundTextBox.js b/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/form/RangeBoundTextBox.js
deleted file mode 100644
index 2ab3b3a..0000000
--- a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/form/RangeBoundTextBox.js
+++ /dev/null
@@ -1,13 +0,0 @@
-/*
- Copyright (c) 2004-2009, The Dojo Foundation All Rights Reserved.
- Available via Academic Free License >= 2.1 OR the modified BSD license.
- see: http://dojotoolkit.org/license for details
-*/
-
-
-if(!dojo._hasResource["dijit.form.RangeBoundTextBox"]){ //_hasResource checks added by build. Do not use _hasResource directly in your code.
-dojo._hasResource["dijit.form.RangeBoundTextBox"] = true;
-dojo.provide("dijit.form.RangeBoundTextBox");
-dojo.require("dijit.form.ValidationTextBox");
-
-}
diff --git a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/form/Select.js b/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/form/Select.js
deleted file mode 100644
index f41ef3d..0000000
--- a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/form/Select.js
+++ /dev/null
@@ -1,283 +0,0 @@
-/*
- Copyright (c) 2004-2009, The Dojo Foundation All Rights Reserved.
- Available via Academic Free License >= 2.1 OR the modified BSD license.
- see: http://dojotoolkit.org/license for details
-*/
-
-
-if(!dojo._hasResource["dijit.form.Select"]){ //_hasResource checks added by build. Do not use _hasResource directly in your code.
-dojo._hasResource["dijit.form.Select"] = true;
-dojo.provide("dijit.form.Select");
-
-dojo.require("dijit.form._FormSelectWidget");
-dojo.require("dijit._HasDropDown");
-dojo.require("dijit.Menu");
-
-dojo.requireLocalization("dijit.form", "validate", null, "ROOT,ar,ca,cs,da,de,el,es,fi,fr,he,hu,it,ja,ko,nb,nl,pl,pt,pt-pt,ru,sk,sl,sv,th,tr,zh,zh-tw");
-
-dojo.declare("dijit.form._SelectMenu", dijit.Menu, {
- // summary:
- // An internally-used menu for dropdown that allows us to more
- // gracefully overflow our menu
- buildRendering: function(){
- // summary:
- // Stub in our own changes, so that our domNode is not a table
- // otherwise, we won't respond correctly to heights/overflows
- this.inherited(arguments);
- var o = (this.menuTableNode = this.domNode);
- var n = (this.domNode = dojo.doc.createElement("div"));
- if(o.parentNode){
- o.parentNode.replaceChild(n, o);
- }
- dojo.removeClass(o, "dijitMenuTable");
- n.className = o.className + " dijitSelectMenu";
- o.className = "dijitReset dijitMenuTable";
- dijit.setWaiRole(o,"listbox");
- dijit.setWaiRole(n,"presentation");
- n.appendChild(o);
- this.tabIndex=null; // so tabindex=0 does not get set on domNode (role="presentation" AND tabindex is invalid)
- },
- resize: function(/*Object*/ mb){
- // summary:
- // Overridden so that we are able to handle resizing our
- // internal widget. Note that this is not a "full" resize
- // implementation - it only works correctly if you pass it a
- // marginBox.
- //
- // mb: Object
- // The margin box to set this dropdown to.
- if(mb){
- dojo.marginBox(this.domNode, mb);
- var w = dojo.contentBox(this.domNode).w;
- if(dojo.isMoz && this.domNode.scrollHeight > this.domNode.clientHeight){
- w--;
- }else if(dojo.isIE < 8 || (dojo.isIE && dojo.isQuirks)){
- // IE < 8 and IE8 in quirks mode doesn't need this additional
- // width of the scrollbar...it causes a horizontal scroll bar
- // (as well as continually expanding the dropdown each time
- // it is opened)
- w -= 16;
- }
- dojo.marginBox(this.menuTableNode, {w: w});
- }
- }
-});
-
-dojo.declare("dijit.form.Select", [dijit.form._FormSelectWidget, dijit._HasDropDown], {
- // summary:
- // This is a "styleable" select box - it is basically a DropDownButton which
- // can take a <select> as its input.
-
- baseClass: "dijitSelect",
-
- templateString: dojo.cache("dijit.form", "templates/Select.html", "<table class='dijit dijitReset dijitInline dijitLeft'\n\tdojoAttachPoint=\"_buttonNode,tableNode\" cellspacing='0' cellpadding='0' waiRole=\"presentation\"\n\tdojoAttachEvent=\"onmouseenter:_onMouse,onmouseleave:_onMouse,onmousedown:_onMouse\"\n\t><tbody waiRole=\"presentation\"><tr waiRole=\"presentation\"\n\t\t><td class=\"dijitReset dijitStretch dijitButtonContents dijitButtonNode\" dojoAttachPoint=\"focusNode\"\n\t\t\twaiRole=\"combobox\" waiState=\"haspopup-true\"\n\t\t\t><span class=\"dijitReset dijitInline dijitButtonText\" dojoAttachPoint=\"containerNode,_popupStateNode\"></span\n\t\t\t><input type=\"hidden\" ${nameAttrSetting} dojoAttachPoint=\"valueNode\" value=\"${value}\" waiState=\"hidden-true\" />\n\t\t</td><td class=\"dijitReset dijitRight dijitButtonNode dijitArrowButton dijitDownArrowButton\"\n\t\t\t\tdojoAttachPoint=\"titleNode\" waiRole=\"presentation\"\n\t\t\t><div class=\"dijitReset dijitArrowButtonInner\" waiRole=\"presentation\"> </div\n\t\t\t><div class=\"dijitReset dijitArrowButtonChar\" waiRole=\"presentation\">▼</div\n\t\t></td\n\t></tr></tbody\n></table>\n"),
-
- // attributeMap: Object
- // Add in our style to be applied to the focus node
- attributeMap: dojo.mixin(dojo.clone(dijit.form._FormSelectWidget.prototype.attributeMap),{style:"tableNode"}),
-
- // required: Boolean
- // Can be true or false, default is false.
- required: false,
-
- // state: String
- // Shows current state (ie, validation result) of input (Normal, Warning, or Error)
- state: "",
-
- // tooltipPosition: String[]
- // See description of dijit.Tooltip.defaultPosition for details on this parameter.
- tooltipPosition: [],
-
- // emptyLabel: string
- // What to display in an "empty" dropdown
- emptyLabel: "",
-
- // _isLoaded: Boolean
- // Whether or not we have been loaded
- _isLoaded: false,
-
- // _childrenLoaded: Boolean
- // Whether or not our children have been loaded
- _childrenLoaded: false,
-
- _fillContent: function(){
- // summary:
- // Set the value to be the first, or the selected index
- this.inherited(arguments);
- if(this.options.length && !this.value && this.srcNodeRef){
- var si = this.srcNodeRef.selectedIndex;
- this.value = this.options[si != -1 ? si : 0].value;
- }
-
- // Create the dropDown widget
- this.dropDown = new dijit.form._SelectMenu();
- dojo.addClass(this.dropDown.domNode, this.baseClass + "Menu");
- },
-
- _getMenuItemForOption: function(/*dijit.form.__SelectOption*/ option){
- // summary:
- // For the given option, return the menu item that should be
- // used to display it. This can be overridden as needed
- if(!option.value){
- // We are a separator (no label set for it)
- return new dijit.MenuSeparator();
- }else{
- // Just a regular menu option
- var click = dojo.hitch(this, "_setValueAttr", option);
- var item = new dijit.MenuItem({
- option: option,
- label: option.label,
- onClick: click,
- disabled: option.disabled || false
- });
- dijit.setWaiRole(item.focusNode, "listitem");
- return item;
- }
- },
-
- _addOptionItem: function(/*dijit.form.__SelectOption*/ option){
- // summary:
- // For the given option, add an option to our dropdown.
- // If the option doesn't have a value, then a separator is added
- // in that place.
- if(this.dropDown){
- this.dropDown.addChild(this._getMenuItemForOption(option));
- }
- },
-
- _getChildren: function(){
- if(!this.dropDown){
- return [];
- }
- return this.dropDown.getChildren();
- },
-
- _loadChildren: function(/*Boolean*/ loadMenuItems){
- // summary:
- // Resets the menu and the length attribute of the button - and
- // ensures that the label is appropriately set.
- // loadMenuItems: Boolean
- // actually loads the child menu items - we only do this when we are
- // populating for showing the dropdown.
-
- if(loadMenuItems === true){
- // this.inherited destroys this.dropDown's child widgets (MenuItems).
- // Avoid this.dropDown (Menu widget) having a pointer to a destroyed widget (which will cause
- // issues later in _setSelected). (see #10296)
- if(this.dropDown){
- delete this.dropDown.focusedChild;
- }
- if(this.options.length){
- this.inherited(arguments);
- }else{
- // Drop down menu is blank but add one blank entry just so something appears on the screen
- // to let users know that they are no choices (mimicing native select behavior)
- dojo.forEach(this._getChildren(), function(child){ child.destroyRecursive(); });
- var item = new dijit.MenuItem({label: " "});
- this.dropDown.addChild(item);
- }
- }else{
- this._updateSelection();
- }
-
- var len = this.options.length;
- this._isLoaded = false;
- this._childrenLoaded = true;
-
- if(!this._loadingStore){
- // Don't call this if we are loading - since we will handle it later
- this._setValueAttr(this.value);
- }
- },
-
- _setValueAttr: function(value){
- this.inherited(arguments);
- dojo.attr(this.valueNode, "value", this.attr("value"));
- },
-
- _setDisplay: function(/*String*/ newDisplay){
- // summary:
- // sets the display for the given value (or values)
- this.containerNode.innerHTML = '<span class="dijitReset dijitInline ' + this.baseClass + 'Label">' +
- (newDisplay || this.emptyLabel || " ") +
- '</span>';
- dijit.setWaiState(this.focusNode, "valuenow", (newDisplay || this.emptyLabel || " ") );
- },
-
- validate: function(/*Boolean*/ isFocused){
- // summary:
- // Called by oninit, onblur, and onkeypress.
- // description:
- // Show missing or invalid messages if appropriate, and highlight textbox field.
- // Used when a select is initially set to no value and the user is required to
- // set the value.
-
- var isValid = this.isValid(isFocused);
- this.state = isValid ? "" : "Error";
- this._setStateClass();
- dijit.setWaiState(this.focusNode, "invalid", isValid ? "false" : "true");
- var message = isValid ? "" : this._missingMsg;
- if(this._message !== message){
- this._message = message;
- dijit.hideTooltip(this.domNode);
- if(message){
- dijit.showTooltip(message, this.domNode, this.tooltipPosition);
- }
- }
- return isValid;
- },
-
- isValid: function(/*Boolean*/ isFocused){
- // summary:
- // Whether or not this is a valid value. The only way a Select
- // can be invalid is when it's required but nothing is selected.
- return (!this.required || !(/^\s*$/.test(this.value)));
- },
-
- reset: function(){
- // summary:
- // Overridden so that the state will be cleared.
- this.inherited(arguments);
- dijit.hideTooltip(this.domNode);
- this.state = "";
- this._setStateClass();
- delete this._message;
- },
-
- postMixInProperties: function(){
- // summary:
- // set the missing message
- this.inherited(arguments);
- this._missingMsg = dojo.i18n.getLocalization("dijit.form", "validate",
- this.lang).missingMessage;
- },
-
- postCreate: function(){
- this.inherited(arguments);
- if(this.tableNode.style.width){
- dojo.addClass(this.domNode, this.baseClass + "FixedWidth");
- }
- },
-
- isLoaded: function(){
- return this._isLoaded;
- },
-
- loadDropDown: function(/*Function*/ loadCallback){
- // summary:
- // populates the menu
- this._loadChildren(true);
- this._isLoaded = true;
- loadCallback();
- },
-
- uninitialize: function(preserveDom){
- if(this.dropDown && !this.dropDown._destroyed){
- this.dropDown.destroyRecursive(preserveDom);
- delete this.dropDown;
- }
- this.inherited(arguments);
- }
-});
-
-}
diff --git a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/form/SimpleTextarea.js b/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/form/SimpleTextarea.js
deleted file mode 100644
index 48fc4ca..0000000
--- a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/form/SimpleTextarea.js
+++ /dev/null
@@ -1,102 +0,0 @@
-/*
- Copyright (c) 2004-2009, The Dojo Foundation All Rights Reserved.
- Available via Academic Free License >= 2.1 OR the modified BSD license.
- see: http://dojotoolkit.org/license for details
-*/
-
-
-if(!dojo._hasResource["dijit.form.SimpleTextarea"]){ //_hasResource checks added by build. Do not use _hasResource directly in your code.
-dojo._hasResource["dijit.form.SimpleTextarea"] = true;
-dojo.provide("dijit.form.SimpleTextarea");
-
-dojo.require("dijit.form.TextBox");
-
-dojo.declare("dijit.form.SimpleTextarea",
- dijit.form.TextBox,
- {
- // summary:
- // A simple textarea that degrades, and responds to
- // minimal LayoutContainer usage, and works with dijit.form.Form.
- // Doesn't automatically size according to input, like Textarea.
- //
- // example:
- // | <textarea dojoType="dijit.form.SimpleTextarea" name="foo" value="bar" rows=30 cols=40></textarea>
- //
- // example:
- // | new dijit.form.SimpleTextarea({ rows:20, cols:30 }, "foo");
-
- baseClass: "dijitTextArea",
-
- attributeMap: dojo.delegate(dijit.form._FormValueWidget.prototype.attributeMap, {
- rows:"textbox", cols: "textbox"
- }),
-
- // rows: Number
- // The number of rows of text.
- rows: "3",
-
- // rows: Number
- // The number of characters per line.
- cols: "20",
-
- templateString: "<textarea ${nameAttrSetting} dojoAttachPoint='focusNode,containerNode,textbox' autocomplete='off'></textarea>",
-
- postMixInProperties: function(){
- // Copy value from srcNodeRef, unless user specified a value explicitly (or there is no srcNodeRef)
- if(!this.value && this.srcNodeRef){
- this.value = this.srcNodeRef.value;
- }
- this.inherited(arguments);
- },
-
- filter: function(/*String*/ value){
- // Override TextBox.filter to deal with newlines... specifically (IIRC) this is for IE which writes newlines
- // as \r\n instead of just \n
- if(value){
- value = value.replace(/\r/g,"");
- }
- return this.inherited(arguments);
- },
-
- postCreate: function(){
- this.inherited(arguments);
- if(dojo.isIE && this.cols){ // attribute selectors is not supported in IE6
- dojo.addClass(this.textbox, "dijitTextAreaCols");
- }
- },
-
- _previousValue: "",
- _onInput: function(/*Event?*/ e){
- // Override TextBox._onInput() to enforce maxLength restriction
- if(this.maxLength){
- var maxLength = parseInt(this.maxLength);
- var value = this.textbox.value.replace(/\r/g,'');
- var overflow = value.length - maxLength;
- if(overflow > 0){
- if(e){ dojo.stopEvent(e); }
- var textarea = this.textbox;
- if(textarea.selectionStart){
- var pos = textarea.selectionStart;
- var cr = 0;
- if(dojo.isOpera){
- cr = (this.textbox.value.substring(0,pos).match(/\r/g) || []).length;
- }
- this.textbox.value = value.substring(0,pos-overflow-cr)+value.substring(pos-cr);
- textarea.setSelectionRange(pos-overflow, pos-overflow);
- }else if(dojo.doc.selection){ //IE
- textarea.focus();
- var range = dojo.doc.selection.createRange();
- // delete overflow characters
- range.moveStart("character", -overflow);
- range.text = '';
- // show cursor
- range.select();
- }
- }
- this._previousValue = this.textbox.value;
- }
- this.inherited(arguments);
- }
-});
-
-}
diff --git a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/form/Slider.js b/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/form/Slider.js
deleted file mode 100644
index 882846a..0000000
--- a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/form/Slider.js
+++ /dev/null
@@ -1,23 +0,0 @@
-/*
- Copyright (c) 2004-2009, The Dojo Foundation All Rights Reserved.
- Available via Academic Free License >= 2.1 OR the modified BSD license.
- see: http://dojotoolkit.org/license for details
-*/
-
-
-if(!dojo._hasResource["dijit.form.Slider"]){ //_hasResource checks added by build. Do not use _hasResource directly in your code.
-dojo._hasResource["dijit.form.Slider"] = true;
-dojo.provide("dijit.form.Slider");
-
-dojo.deprecated("Call require() for HorizontalSlider / VerticalRule, explicitly rather than 'dijit.form.Slider' itself", "", "2.0");
-
-// For back-compat, remove for 2.0
-dojo.require("dijit.form.HorizontalSlider");
-dojo.require("dijit.form.VerticalSlider");
-dojo.require("dijit.form.HorizontalRule");
-dojo.require("dijit.form.VerticalRule");
-dojo.require("dijit.form.HorizontalRuleLabels");
-dojo.require("dijit.form.VerticalRuleLabels");
-
-
-}
diff --git a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/form/TextBox.js b/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/form/TextBox.js
deleted file mode 100644
index 1ebf4bc..0000000
--- a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/form/TextBox.js
+++ /dev/null
@@ -1,346 +0,0 @@
-/*
- Copyright (c) 2004-2009, The Dojo Foundation All Rights Reserved.
- Available via Academic Free License >= 2.1 OR the modified BSD license.
- see: http://dojotoolkit.org/license for details
-*/
-
-
-if(!dojo._hasResource["dijit.form.TextBox"]){ //_hasResource checks added by build. Do not use _hasResource directly in your code.
-dojo._hasResource["dijit.form.TextBox"] = true;
-dojo.provide("dijit.form.TextBox");
-
-dojo.require("dijit.form._FormWidget");
-
-dojo.declare(
- "dijit.form.TextBox",
- dijit.form._FormValueWidget,
- {
- // summary:
- // A base class for textbox form inputs
-
- // trim: Boolean
- // Removes leading and trailing whitespace if true. Default is false.
- trim: false,
-
- // uppercase: Boolean
- // Converts all characters to uppercase if true. Default is false.
- uppercase: false,
-
- // lowercase: Boolean
- // Converts all characters to lowercase if true. Default is false.
- lowercase: false,
-
- // propercase: Boolean
- // Converts the first character of each word to uppercase if true.
- propercase: false,
-
- // maxLength: String
- // HTML INPUT tag maxLength declaration.
- maxLength: "",
-
- // selectOnClick: [const] Boolean
- // If true, all text will be selected when focused with mouse
- selectOnClick: false,
-
- templateString: dojo.cache("dijit.form", "templates/TextBox.html", "<input class=\"dijit dijitReset dijitLeft\" dojoAttachPoint='textbox,focusNode'\n\tdojoAttachEvent='onmouseenter:_onMouse,onmouseleave:_onMouse'\n\tautocomplete=\"off\" type=\"${type}\" ${nameAttrSetting}\n\t/>\n"),
- baseClass: "dijitTextBox",
-
- attributeMap: dojo.delegate(dijit.form._FormValueWidget.prototype.attributeMap, {
- maxLength: "focusNode"
- }),
-
- _getValueAttr: function(){
- // summary:
- // Hook so attr('value') works as we like.
- // description:
- // For `dijit.form.TextBox` this basically returns the value of the <input>.
- //
- // For `dijit.form.MappedTextBox` subclasses, which have both
- // a "displayed value" and a separate "submit value",
- // This treats the "displayed value" as the master value, computing the
- // submit value from it via this.parse().
- return this.parse(this.attr('displayedValue'), this.constraints);
- },
-
- _setValueAttr: function(value, /*Boolean?*/ priorityChange, /*String?*/ formattedValue){
- // summary:
- // Hook so attr('value', ...) works.
- //
- // description:
- // Sets the value of the widget to "value" which can be of
- // any type as determined by the widget.
- //
- // value:
- // The visual element value is also set to a corresponding,
- // but not necessarily the same, value.
- //
- // formattedValue:
- // If specified, used to set the visual element value,
- // otherwise a computed visual value is used.
- //
- // priorityChange:
- // If true, an onChange event is fired immediately instead of
- // waiting for the next blur event.
-
- var filteredValue;
- if(value !== undefined){
- // TODO: this is calling filter() on both the display value and the actual value.
- // I added a comment to the filter() definition about this, but it should be changed.
- filteredValue = this.filter(value);
- if(typeof formattedValue != "string"){
- if(filteredValue !== null && ((typeof filteredValue != "number") || !isNaN(filteredValue))){
- formattedValue = this.filter(this.format(filteredValue, this.constraints));
- }else{ formattedValue = ''; }
- }
- }
- if(formattedValue != null && formattedValue != undefined && ((typeof formattedValue) != "number" || !isNaN(formattedValue)) && this.textbox.value != formattedValue){
- this.textbox.value = formattedValue;
- }
- this.inherited(arguments, [filteredValue, priorityChange]);
- },
-
- // displayedValue: String
- // For subclasses like ComboBox where the displayed value
- // (ex: Kentucky) and the serialized value (ex: KY) are different,
- // this represents the displayed value.
- //
- // Setting 'displayedValue' through attr('displayedValue', ...)
- // updates 'value', and vice-versa. Othewise 'value' is updated
- // from 'displayedValue' periodically, like onBlur etc.
- //
- // TODO: move declaration to MappedTextBox?
- // Problem is that ComboBox references displayedValue,
- // for benefit of FilteringSelect.
- displayedValue: "",
-
- getDisplayedValue: function(){
- // summary:
- // Deprecated. Use attr('displayedValue') instead.
- // tags:
- // deprecated
- dojo.deprecated(this.declaredClass+"::getDisplayedValue() is deprecated. Use attr('displayedValue') instead.", "", "2.0");
- return this.attr('displayedValue');
- },
-
- _getDisplayedValueAttr: function(){
- // summary:
- // Hook so attr('displayedValue') works.
- // description:
- // Returns the displayed value (what the user sees on the screen),
- // after filtering (ie, trimming spaces etc.).
- //
- // For some subclasses of TextBox (like ComboBox), the displayed value
- // is different from the serialized value that's actually
- // sent to the server (see dijit.form.ValidationTextBox.serialize)
-
- return this.filter(this.textbox.value);
- },
-
- setDisplayedValue: function(/*String*/value){
- // summary:
- // Deprecated. Use attr('displayedValue', ...) instead.
- // tags:
- // deprecated
- dojo.deprecated(this.declaredClass+"::setDisplayedValue() is deprecated. Use attr('displayedValue', ...) instead.", "", "2.0");
- this.attr('displayedValue', value);
- },
-
- _setDisplayedValueAttr: function(/*String*/value){
- // summary:
- // Hook so attr('displayedValue', ...) works.
- // description:
- // Sets the value of the visual element to the string "value".
- // The widget value is also set to a corresponding,
- // but not necessarily the same, value.
-
- if(value === null || value === undefined){ value = '' }
- else if(typeof value != "string"){ value = String(value) }
- this.textbox.value = value;
- this._setValueAttr(this.attr('value'), undefined, value);
- },
-
- format: function(/* String */ value, /* Object */ constraints){
- // summary:
- // Replacable function to convert a value to a properly formatted string.
- // tags:
- // protected extension
- return ((value == null || value == undefined) ? "" : (value.toString ? value.toString() : value));
- },
-
- parse: function(/* String */ value, /* Object */ constraints){
- // summary:
- // Replacable function to convert a formatted string to a value
- // tags:
- // protected extension
-
- return value; // String
- },
-
- _refreshState: function(){
- // summary:
- // After the user types some characters, etc., this method is
- // called to check the field for validity etc. The base method
- // in `dijit.form.TextBox` does nothing, but subclasses override.
- // tags:
- // protected
- },
-
- _onInput: function(e){
- if(e && e.type && /key/i.test(e.type) && e.keyCode){
- switch(e.keyCode){
- case dojo.keys.SHIFT:
- case dojo.keys.ALT:
- case dojo.keys.CTRL:
- case dojo.keys.TAB:
- return;
- }
- }
- if(this.intermediateChanges){
- var _this = this;
- // the setTimeout allows the key to post to the widget input box
- setTimeout(function(){ _this._handleOnChange(_this.attr('value'), false); }, 0);
- }
- this._refreshState();
- },
-
- postCreate: function(){
- // setting the value here is needed since value="" in the template causes "undefined"
- // and setting in the DOM (instead of the JS object) helps with form reset actions
- this.textbox.setAttribute("value", this.textbox.value); // DOM and JS values shuld be the same
- this.inherited(arguments);
- if(dojo.isMoz || dojo.isOpera){
- this.connect(this.textbox, "oninput", this._onInput);
- }else{
- this.connect(this.textbox, "onkeydown", this._onInput);
- this.connect(this.textbox, "onkeyup", this._onInput);
- this.connect(this.textbox, "onpaste", this._onInput);
- this.connect(this.textbox, "oncut", this._onInput);
- }
- },
-
- _blankValue: '', // if the textbox is blank, what value should be reported
- filter: function(val){
- // summary:
- // Auto-corrections (such as trimming) that are applied to textbox
- // value on blur or form submit.
- // description:
- // For MappedTextBox subclasses, this is called twice
- // - once with the display value
- // - once the value as set/returned by attr('value', ...)
- // and attr('value'), ex: a Number for NumberTextBox.
- //
- // In the latter case it does corrections like converting null to NaN. In
- // the former case the NumberTextBox.filter() method calls this.inherited()
- // to execute standard trimming code in TextBox.filter().
- //
- // TODO: break this into two methods in 2.0
- //
- // tags:
- // protected extension
- if(val === null){ return this._blankValue; }
- if(typeof val != "string"){ return val; }
- if(this.trim){
- val = dojo.trim(val);
- }
- if(this.uppercase){
- val = val.toUpperCase();
- }
- if(this.lowercase){
- val = val.toLowerCase();
- }
- if(this.propercase){
- val = val.replace(/[^\s]+/g, function(word){
- return word.substring(0,1).toUpperCase() + word.substring(1);
- });
- }
- return val;
- },
-
- _setBlurValue: function(){
- this._setValueAttr(this.attr('value'), true);
- },
-
- _onBlur: function(e){
- if(this.disabled){ return; }
- this._setBlurValue();
- this.inherited(arguments);
-
- if(this._selectOnClickHandle){
- this.disconnect(this._selectOnClickHandle);
- }
- if(this.selectOnClick && dojo.isMoz){
- this.textbox.selectionStart = this.textbox.selectionEnd = undefined; // clear selection so that the next mouse click doesn't reselect
- }
- },
-
- _onFocus: function(/*String*/ by){
- if(this.disabled || this.readOnly){ return; }
-
- // Select all text on focus via click if nothing already selected.
- // Since mouse-up will clear the selection need to defer selection until after mouse-up.
- // Don't do anything on focus by tabbing into the widgetm since there's no associated mouse-up event.
- if(this.selectOnClick && by == "mouse"){
- this._selectOnClickHandle = this.connect(this.domNode, "onmouseup", function(){
- // Only select all text on first click; otherwise users would have no way to clear
- // the selection.
- this.disconnect(this._selectOnClickHandle);
-
- // Check if the user selected some text manually (mouse-down, mouse-move, mouse-up)
- // and if not, then select all the text
- var textIsNotSelected;
- if(dojo.isIE){
- var range = dojo.doc.selection.createRange();
- var parent = range.parentElement();
- textIsNotSelected = parent == this.textbox && range.text.length == 0;
- }else{
- textIsNotSelected = this.textbox.selectionStart == this.textbox.selectionEnd;
- }
- if(textIsNotSelected){
- dijit.selectInputText(this.textbox);
- }
- });
- }
-
- this._refreshState();
- this.inherited(arguments);
- },
-
- reset: function(){
- // Overrides dijit._FormWidget.reset().
- // Additionally resets the displayed textbox value to ''
- this.textbox.value = '';
- this.inherited(arguments);
- }
- }
-);
-
-dijit.selectInputText = function(/*DomNode*/element, /*Number?*/ start, /*Number?*/ stop){
- // summary:
- // Select text in the input element argument, from start (default 0), to stop (default end).
-
- // TODO: use functions in _editor/selection.js?
- var _window = dojo.global;
- var _document = dojo.doc;
- element = dojo.byId(element);
- if(isNaN(start)){ start = 0; }
- if(isNaN(stop)){ stop = element.value ? element.value.length : 0; }
- dijit.focus(element);
- if(_document["selection"] && dojo.body()["createTextRange"]){ // IE
- if(element.createTextRange){
- var range = element.createTextRange();
- with(range){
- collapse(true);
- moveStart("character", -99999); // move to 0
- moveStart("character", start); // delta from 0 is the correct position
- moveEnd("character", stop-start);
- select();
- }
- }
- }else if(_window["getSelection"]){
- if(element.setSelectionRange){
- element.setSelectionRange(start, stop);
- }
- }
-};
-
-}
diff --git a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/form/Textarea.js b/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/form/Textarea.js
deleted file mode 100644
index e80ba8e..0000000
--- a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/form/Textarea.js
+++ /dev/null
@@ -1,150 +0,0 @@
-/*
- Copyright (c) 2004-2009, The Dojo Foundation All Rights Reserved.
- Available via Academic Free License >= 2.1 OR the modified BSD license.
- see: http://dojotoolkit.org/license for details
-*/
-
-
-if(!dojo._hasResource["dijit.form.Textarea"]){ //_hasResource checks added by build. Do not use _hasResource directly in your code.
-dojo._hasResource["dijit.form.Textarea"] = true;
-dojo.provide("dijit.form.Textarea");
-
-dojo.require("dijit.form.SimpleTextarea");
-
-dojo.declare(
- "dijit.form.Textarea",
- dijit.form.SimpleTextarea,
- {
- // summary:
- // A textarea widget that adjusts it's height according to the amount of data.
- //
- // description:
- // A textarea that dynamically expands/contracts (changing it's height) as
- // the user types, to display all the text without requiring a scroll bar.
- //
- // Takes nearly all the parameters (name, value, etc.) that a vanilla textarea takes.
- // Rows is not supported since this widget adjusts the height.
- //
- // example:
- // | <textarea dojoType="dijit.form.TextArea">...</textarea>
-
-
- // Override SimpleTextArea.cols to default to width:100%, for backward compatibility
- cols: "",
-
- _previousNewlines: 0,
- _strictMode: (dojo.doc.compatMode != 'BackCompat'), // not the same as !dojo.isQuirks
-
- _getHeight: function(textarea){
- var newH = textarea.scrollHeight;
- if(dojo.isIE){
- newH += textarea.offsetHeight - textarea.clientHeight - ((dojo.isIE < 8 && this._strictMode) ? dojo._getPadBorderExtents(textarea).h : 0);
- }else if(dojo.isMoz){
- newH += textarea.offsetHeight - textarea.clientHeight; // creates room for horizontal scrollbar
- }else if(dojo.isWebKit && !(dojo.isSafari < 4)){ // Safari 4.0 && Chrome
- newH += dojo._getBorderExtents(textarea).h;
- }else{ // Safari 3.x and Opera 9.6
- newH += dojo._getPadBorderExtents(textarea).h;
- }
- return newH;
- },
-
- _estimateHeight: function(textarea){
- // summary:
- // Approximate the height when the textarea is invisible with the number of lines in the text.
- // Fails when someone calls setValue with a long wrapping line, but the layout fixes itself when the user clicks inside so . . .
- // In IE, the resize event is supposed to fire when the textarea becomes visible again and that will correct the size automatically.
- //
- textarea.style.maxHeight = "";
- textarea.style.height = "auto";
- // #rows = #newlines+1
- // Note: on Moz, the following #rows appears to be 1 too many.
- // Actually, Moz is reserving room for the scrollbar.
- // If you increase the font size, this behavior becomes readily apparent as the last line gets cut off without the +1.
- textarea.rows = (textarea.value.match(/\n/g) || []).length + 1;
- },
-
- _needsHelpShrinking: dojo.isMoz || dojo.isWebKit,
-
- _onInput: function(){
- // Override SimpleTextArea._onInput() to deal with height adjustment
- this.inherited(arguments);
- if(this._busyResizing){ return; }
- this._busyResizing = true;
- var textarea = this.textbox;
- if(textarea.scrollHeight && textarea.offsetHeight && textarea.clientHeight){
- var newH = this._getHeight(textarea) + "px";
- if(textarea.style.height != newH){
- textarea.style.maxHeight = textarea.style.height = newH;
- }
- if(this._needsHelpShrinking){
- if(this._setTimeoutHandle){
- clearTimeout(this._setTimeoutHandle);
- }
- this._setTimeoutHandle = setTimeout(dojo.hitch(this, "_shrink"), 0); // try to collapse multiple shrinks into 1
- }
- }else{
- // hidden content of unknown size
- this._estimateHeight(textarea);
- }
- this._busyResizing = false;
- },
-
- _busyResizing: false,
- _shrink: function(){
- // grow paddingBottom to see if scrollHeight shrinks (when it is unneccesarily big)
- this._setTimeoutHandle = null;
- if(this._needsHelpShrinking && !this._busyResizing){
- this._busyResizing = true;
- var textarea = this.textbox;
- var empty = false;
- if(textarea.value == ''){
- textarea.value = ' '; // prevent collapse all the way back to 0
- empty = true;
- }
- var scrollHeight = textarea.scrollHeight;
- if(!scrollHeight){
- this._estimateHeight(textarea);
- }else{
- var oldPadding = textarea.style.paddingBottom;
- var newPadding = dojo._getPadExtents(textarea);
- newPadding = newPadding.h - newPadding.t;
- textarea.style.paddingBottom = newPadding + 1 + "px"; // tweak padding to see if height can be reduced
- var newH = this._getHeight(textarea) - 1 + "px"; // see if the height changed by the 1px added
- if(textarea.style.maxHeight != newH){ // if can be reduced, so now try a big chunk
- textarea.style.paddingBottom = newPadding + scrollHeight + "px";
- textarea.scrollTop = 0;
- textarea.style.maxHeight = this._getHeight(textarea) - scrollHeight + "px"; // scrollHeight is the added padding
- }
- textarea.style.paddingBottom = oldPadding;
- }
- if(empty){
- textarea.value = '';
- }
- this._busyResizing = false;
- }
- },
-
- resize: function(){
- // summary:
- // Resizes the textarea vertically (should be called after a style/value change)
- this._onInput();
- },
-
- _setValueAttr: function(){
- this.inherited(arguments);
- this.resize();
- },
-
- postCreate: function(){
- this.inherited(arguments);
- // tweak textarea style to reduce browser differences
- dojo.style(this.textbox, { overflowY: 'hidden', overflowX: 'auto', boxSizing: 'border-box', MsBoxSizing: 'border-box', WebkitBoxSizing: 'border-box', MozBoxSizing: 'border-box' });
- this.connect(this.textbox, "onscroll", this._onInput);
- this.connect(this.textbox, "onresize", this._onInput);
- this.connect(this.textbox, "onfocus", this._onInput); // useful when a previous estimate was off a bit
- setTimeout(dojo.hitch(this, "resize"), 0);
- }
-});
-
-}
diff --git a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/form/TimeTextBox.js b/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/form/TimeTextBox.js
deleted file mode 100644
index 81f36a1..0000000
--- a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/form/TimeTextBox.js
+++ /dev/null
@@ -1,53 +0,0 @@
-/*
- Copyright (c) 2004-2009, The Dojo Foundation All Rights Reserved.
- Available via Academic Free License >= 2.1 OR the modified BSD license.
- see: http://dojotoolkit.org/license for details
-*/
-
-
-if(!dojo._hasResource["dijit.form.TimeTextBox"]){ //_hasResource checks added by build. Do not use _hasResource directly in your code.
-dojo._hasResource["dijit.form.TimeTextBox"] = true;
-dojo.provide("dijit.form.TimeTextBox");
-
-dojo.require("dijit._TimePicker");
-dojo.require("dijit.form._DateTimeTextBox");
-
-/*=====
-dojo.declare(
- "dijit.form.TimeTextBox.__Constraints",
- [dijit.form._DateTimeTextBox.__Constraints, dijit._TimePicker.__Constraints]
-);
-=====*/
-
-dojo.declare(
- "dijit.form.TimeTextBox",
- dijit.form._DateTimeTextBox,
- {
- // summary:
- // A validating, serializable, range-bound time text box with a drop down time picker
-
- baseClass: "dijitTextBox dijitTimeTextBox",
- popupClass: "dijit._TimePicker",
- _selector: "time",
-
-/*=====
- // constraints: dijit.form.TimeTextBox.__Constraints
- constraints:{},
-=====*/
-
- // value: Date
- // The value of this widget as a JavaScript Date object, with only hours/minutes/seconds specified.
- //
- // Example:
- // | new dijit.form.TimeTextBox({value: dojo.date.local.fromISOString("T:12:59:59")})
- //
- // When passed to the parser in markup, must be specified according to locale-independent
- // `dojo.date.stamp.fromISOString` format.
- //
- // Example:
- // | <input dojotype='dijit.form.TimeTextBox' value='T12:34:00'>
- value: new Date("") // value.toString()="NaN"
- }
-);
-
-}
diff --git a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/form/ToggleButton.js b/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/form/ToggleButton.js
deleted file mode 100644
index 17a5e5a..0000000
--- a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/form/ToggleButton.js
+++ /dev/null
@@ -1,13 +0,0 @@
-/*
- Copyright (c) 2004-2009, The Dojo Foundation All Rights Reserved.
- Available via Academic Free License >= 2.1 OR the modified BSD license.
- see: http://dojotoolkit.org/license for details
-*/
-
-
-if(!dojo._hasResource["dijit.form.ToggleButton"]){ //_hasResource checks added by build. Do not use _hasResource directly in your code.
-dojo._hasResource["dijit.form.ToggleButton"] = true;
-dojo.provide("dijit.form.ToggleButton");
-dojo.require("dijit.form.Button");
-
-}
diff --git a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/form/ValidationTextBox.js b/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/form/ValidationTextBox.js
deleted file mode 100644
index b8a1af5..0000000
--- a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/form/ValidationTextBox.js
+++ /dev/null
@@ -1,464 +0,0 @@
-/*
- Copyright (c) 2004-2009, The Dojo Foundation All Rights Reserved.
- Available via Academic Free License >= 2.1 OR the modified BSD license.
- see: http://dojotoolkit.org/license for details
-*/
-
-
-if(!dojo._hasResource["dijit.form.ValidationTextBox"]){ //_hasResource checks added by build. Do not use _hasResource directly in your code.
-dojo._hasResource["dijit.form.ValidationTextBox"] = true;
-dojo.provide("dijit.form.ValidationTextBox");
-
-dojo.require("dojo.i18n");
-
-dojo.require("dijit.form.TextBox");
-dojo.require("dijit.Tooltip");
-
-dojo.requireLocalization("dijit.form", "validate", null, "ROOT,ar,ca,cs,da,de,el,es,fi,fr,he,hu,it,ja,ko,nb,nl,pl,pt,pt-pt,ru,sk,sl,sv,th,tr,zh,zh-tw");
-
-/*=====
- dijit.form.ValidationTextBox.__Constraints = function(){
- // locale: String
- // locale used for validation, picks up value from this widget's lang attribute
- // _flags_: anything
- // various flags passed to regExpGen function
- this.locale = "";
- this._flags_ = "";
- }
-=====*/
-
-dojo.declare(
- "dijit.form.ValidationTextBox",
- dijit.form.TextBox,
- {
- // summary:
- // Base class for textbox widgets with the ability to validate content of various types and provide user feedback.
- // tags:
- // protected
-
- templateString: dojo.cache("dijit.form", "templates/ValidationTextBox.html", "<div class=\"dijit dijitReset dijitInlineTable dijitLeft\"\n\tid=\"widget_${id}\"\n\tdojoAttachEvent=\"onmouseenter:_onMouse,onmouseleave:_onMouse,onmousedown:_onMouse\" waiRole=\"presentation\"\n\t><div style=\"overflow:hidden;\"\n\t\t><div class=\"dijitReset dijitValidationIcon\"><br></div\n\t\t><div class=\"dijitReset dijitValidationIconText\">Χ</div\n\t\t><div class=\"dijitReset dijitInputField\"\n\t\t\t><input class=\"dijitReset\" dojoAttachPoint='textbox,focusNode' autocomplete=\"off\"\n\t\t\t${nameAttrSetting} type='${type}'\n\t\t/></div\n\t></div\n></div>\n"),
- baseClass: "dijitTextBox",
-
- // required: Boolean
- // User is required to enter data into this field.
- required: false,
-
- // promptMessage: String
- // If defined, display this hint string immediately on focus to the textbox, if empty.
- // Think of this like a tooltip that tells the user what to do, not an error message
- // that tells the user what they've done wrong.
- //
- // Message disappears when user starts typing.
- promptMessage: "",
-
- // invalidMessage: String
- // The message to display if value is invalid.
- invalidMessage: "$_unset_$", // read from the message file if not overridden
-
- // constraints: dijit.form.ValidationTextBox.__Constraints
- // user-defined object needed to pass parameters to the validator functions
- constraints: {},
-
- // regExp: [extension protected] String
- // regular expression string used to validate the input
- // Do not specify both regExp and regExpGen
- regExp: ".*",
-
- regExpGen: function(/*dijit.form.ValidationTextBox.__Constraints*/constraints){
- // summary:
- // Overridable function used to generate regExp when dependent on constraints.
- // Do not specify both regExp and regExpGen.
- // tags:
- // extension protected
- return this.regExp; // String
- },
-
- // state: [readonly] String
- // Shows current state (ie, validation result) of input (Normal, Warning, or Error)
- state: "",
-
- // tooltipPosition: String[]
- // See description of `dijit.Tooltip.defaultPosition` for details on this parameter.
- tooltipPosition: [],
-
- _setValueAttr: function(){
- // summary:
- // Hook so attr('value', ...) works.
- this.inherited(arguments);
- this.validate(this._focused);
- },
-
- validator: function(/*anything*/value, /*dijit.form.ValidationTextBox.__Constraints*/constraints){
- // summary:
- // Overridable function used to validate the text input against the regular expression.
- // tags:
- // protected
- return (new RegExp("^(?:" + this.regExpGen(constraints) + ")"+(this.required?"":"?")+"$")).test(value) &&
- (!this.required || !this._isEmpty(value)) &&
- (this._isEmpty(value) || this.parse(value, constraints) !== undefined); // Boolean
- },
-
- _isValidSubset: function(){
- // summary:
- // Returns true if the value is either already valid or could be made valid by appending characters.
- // This is used for validation while the user [may be] still typing.
- return this.textbox.value.search(this._partialre) == 0;
- },
-
- isValid: function(/*Boolean*/ isFocused){
- // summary:
- // Tests if value is valid.
- // Can override with your own routine in a subclass.
- // tags:
- // protected
- return this.validator(this.textbox.value, this.constraints);
- },
-
- _isEmpty: function(value){
- // summary:
- // Checks for whitespace
- return /^\s*$/.test(value); // Boolean
- },
-
- getErrorMessage: function(/*Boolean*/ isFocused){
- // summary:
- // Return an error message to show if appropriate
- // tags:
- // protected
- return this.invalidMessage; // String
- },
-
- getPromptMessage: function(/*Boolean*/ isFocused){
- // summary:
- // Return a hint message to show when widget is first focused
- // tags:
- // protected
- return this.promptMessage; // String
- },
-
- _maskValidSubsetError: true,
- validate: function(/*Boolean*/ isFocused){
- // summary:
- // Called by oninit, onblur, and onkeypress.
- // description:
- // Show missing or invalid messages if appropriate, and highlight textbox field.
- // tags:
- // protected
- var message = "";
- var isValid = this.disabled || this.isValid(isFocused);
- if(isValid){ this._maskValidSubsetError = true; }
- var isValidSubset = !isValid && isFocused && this._isValidSubset();
- var isEmpty = this._isEmpty(this.textbox.value);
- if(isEmpty){ this._maskValidSubsetError = true; }
- this.state = (isValid || (!this._hasBeenBlurred && isEmpty) || isValidSubset) ? "" : "Error";
- if(this.state == "Error"){ this._maskValidSubsetError = false; }
- this._setStateClass();
- dijit.setWaiState(this.focusNode, "invalid", isValid ? "false" : "true");
- if(isFocused){
- if(isEmpty){
- message = this.getPromptMessage(true);
- }
- if(!message && (this.state == "Error" || (isValidSubset && !this._maskValidSubsetError))){
- message = this.getErrorMessage(true);
- }
- }
- this.displayMessage(message);
- return isValid;
- },
-
- // _message: String
- // Currently displayed message
- _message: "",
-
- displayMessage: function(/*String*/ message){
- // summary:
- // Overridable method to display validation errors/hints.
- // By default uses a tooltip.
- // tags:
- // extension
- if(this._message == message){ return; }
- this._message = message;
- dijit.hideTooltip(this.domNode);
- if(message){
- dijit.showTooltip(message, this.domNode, this.tooltipPosition);
- }
- },
-
- _refreshState: function(){
- // Overrides TextBox._refreshState()
- this.validate(this._focused);
- this.inherited(arguments);
- },
-
- //////////// INITIALIZATION METHODS ///////////////////////////////////////
-
- constructor: function(){
- this.constraints = {};
- },
-
- postMixInProperties: function(){
- this.inherited(arguments);
- this.constraints.locale = this.lang;
- this.messages = dojo.i18n.getLocalization("dijit.form", "validate", this.lang);
- if(this.invalidMessage == "$_unset_$"){ this.invalidMessage = this.messages.invalidMessage; }
- var p = this.regExpGen(this.constraints);
- this.regExp = p;
- var partialre = "";
- // parse the regexp and produce a new regexp that matches valid subsets
- // if the regexp is .* then there's no use in matching subsets since everything is valid
- if(p != ".*"){ this.regExp.replace(/\\.|\[\]|\[.*?[^\\]{1}\]|\{.*?\}|\(\?[=:!]|./g,
- function (re){
- switch(re.charAt(0)){
- case '{':
- case '+':
- case '?':
- case '*':
- case '^':
- case '$':
- case '|':
- case '(':
- partialre += re;
- break;
- case ")":
- partialre += "|$)";
- break;
- default:
- partialre += "(?:"+re+"|$)";
- break;
- }
- }
- );}
- try{ // this is needed for now since the above regexp parsing needs more test verification
- "".search(partialre);
- }catch(e){ // should never be here unless the original RE is bad or the parsing is bad
- partialre = this.regExp;
- console.warn('RegExp error in ' + this.declaredClass + ': ' + this.regExp);
- } // should never be here unless the original RE is bad or the parsing is bad
- this._partialre = "^(?:" + partialre + ")$";
- },
-
- _setDisabledAttr: function(/*Boolean*/ value){
- this.inherited(arguments); // call FormValueWidget._setDisabledAttr()
- this._refreshState();
- },
-
- _setRequiredAttr: function(/*Boolean*/ value){
- this.required = value;
- dijit.setWaiState(this.focusNode,"required", value);
- this._refreshState();
- },
-
- postCreate: function(){
- if(dojo.isIE){ // IE INPUT tag fontFamily has to be set directly using STYLE
- var s = dojo.getComputedStyle(this.focusNode);
- if(s){
- var ff = s.fontFamily;
- if(ff){
- this.focusNode.style.fontFamily = ff;
- }
- }
- }
- this.inherited(arguments);
- },
-
- reset:function(){
- // Overrides dijit.form.TextBox.reset() by also
- // hiding errors about partial matches
- this._maskValidSubsetError = true;
- this.inherited(arguments);
- },
-
- _onBlur: function(){
- this.displayMessage('');
- this.inherited(arguments);
- }
- }
-);
-
-dojo.declare(
- "dijit.form.MappedTextBox",
- dijit.form.ValidationTextBox,
- {
- // summary:
- // A dijit.form.ValidationTextBox subclass which provides a base class for widgets that have
- // a visible formatted display value, and a serializable
- // value in a hidden input field which is actually sent to the server.
- // description:
- // The visible display may
- // be locale-dependent and interactive. The value sent to the server is stored in a hidden
- // input field which uses the `name` attribute declared by the original widget. That value sent
- // to the server is defined by the dijit.form.MappedTextBox.serialize method and is typically
- // locale-neutral.
- // tags:
- // protected
-
- postMixInProperties: function(){
- this.inherited(arguments);
-
- // we want the name attribute to go to the hidden <input>, not the displayed <input>,
- // so override _FormWidget.postMixInProperties() setting of nameAttrSetting
- this.nameAttrSetting = "";
- },
-
- serialize: function(/*anything*/val, /*Object?*/options){
- // summary:
- // Overridable function used to convert the attr('value') result to a canonical
- // (non-localized) string. For example, will print dates in ISO format, and
- // numbers the same way as they are represented in javascript.
- // tags:
- // protected extension
- return val.toString ? val.toString() : ""; // String
- },
-
- toString: function(){
- // summary:
- // Returns widget as a printable string using the widget's value
- // tags:
- // protected
- var val = this.filter(this.attr('value')); // call filter in case value is nonstring and filter has been customized
- return val != null ? (typeof val == "string" ? val : this.serialize(val, this.constraints)) : ""; // String
- },
-
- validate: function(){
- // Overrides `dijit.form.TextBox.validate`
- this.valueNode.value = this.toString();
- return this.inherited(arguments);
- },
-
- buildRendering: function(){
- // Overrides `dijit._Templated.buildRendering`
-
- this.inherited(arguments);
-
- // Create a hidden <input> node with the serialized value used for submit
- // (as opposed to the displayed value).
- // Passing in name as markup rather than calling dojo.create() with an attrs argument
- // to make dojo.query(input[name=...]) work on IE. (see #8660)
- this.valueNode = dojo.place("<input type='hidden'" + (this.name ? " name='" + this.name + "'" : "") + ">", this.textbox, "after");
- },
-
- reset:function(){
- // Overrides `dijit.form.ValidationTextBox.reset` to
- // reset the hidden textbox value to ''
- this.valueNode.value = '';
- this.inherited(arguments);
- }
- }
-);
-
-/*=====
- dijit.form.RangeBoundTextBox.__Constraints = function(){
- // min: Number
- // Minimum signed value. Default is -Infinity
- // max: Number
- // Maximum signed value. Default is +Infinity
- this.min = min;
- this.max = max;
- }
-=====*/
-
-dojo.declare(
- "dijit.form.RangeBoundTextBox",
- dijit.form.MappedTextBox,
- {
- // summary:
- // Base class for textbox form widgets which defines a range of valid values.
-
- // rangeMessage: String
- // The message to display if value is out-of-range
- rangeMessage: "",
-
- /*=====
- // constraints: dijit.form.RangeBoundTextBox.__Constraints
- constraints: {},
- ======*/
-
- rangeCheck: function(/*Number*/ primitive, /*dijit.form.RangeBoundTextBox.__Constraints*/ constraints){
- // summary:
- // Overridable function used to validate the range of the numeric input value.
- // tags:
- // protected
- return ("min" in constraints? (this.compare(primitive,constraints.min) >= 0) : true) &&
- ("max" in constraints? (this.compare(primitive,constraints.max) <= 0) : true); // Boolean
- },
-
- isInRange: function(/*Boolean*/ isFocused){
- // summary:
- // Tests if the value is in the min/max range specified in constraints
- // tags:
- // protected
- return this.rangeCheck(this.attr('value'), this.constraints);
- },
-
- _isDefinitelyOutOfRange: function(){
- // summary:
- // Returns true if the value is out of range and will remain
- // out of range even if the user types more characters
- var val = this.attr('value');
- var isTooLittle = false;
- var isTooMuch = false;
- if("min" in this.constraints){
- var min = this.constraints.min;
- min = this.compare(val, ((typeof min == "number") && min >= 0 && val !=0) ? 0 : min);
- isTooLittle = (typeof min == "number") && min < 0;
- }
- if("max" in this.constraints){
- var max = this.constraints.max;
- max = this.compare(val, ((typeof max != "number") || max > 0) ? max : 0);
- isTooMuch = (typeof max == "number") && max > 0;
- }
- return isTooLittle || isTooMuch;
- },
-
- _isValidSubset: function(){
- // summary:
- // Overrides `dijit.form.ValidationTextBox._isValidSubset`.
- // Returns true if the input is syntactically valid, and either within
- // range or could be made in range by more typing.
- return this.inherited(arguments) && !this._isDefinitelyOutOfRange();
- },
-
- isValid: function(/*Boolean*/ isFocused){
- // Overrides dijit.form.ValidationTextBox.isValid to check that the value is also in range.
- return this.inherited(arguments) &&
- ((this._isEmpty(this.textbox.value) && !this.required) || this.isInRange(isFocused)); // Boolean
- },
-
- getErrorMessage: function(/*Boolean*/ isFocused){
- // Overrides dijit.form.ValidationTextBox.getErrorMessage to print "out of range" message if appropriate
- var v = this.attr('value');
- if(v !== null && v !== '' && v !== undefined && !this.isInRange(isFocused)){ // don't check isInRange w/o a real value
- return this.rangeMessage; // String
- }
- return this.inherited(arguments);
- },
-
- postMixInProperties: function(){
- this.inherited(arguments);
- if(!this.rangeMessage){
- this.messages = dojo.i18n.getLocalization("dijit.form", "validate", this.lang);
- this.rangeMessage = this.messages.rangeMessage;
- }
- },
-
- postCreate: function(){
- this.inherited(arguments);
- if(this.constraints.min !== undefined){
- dijit.setWaiState(this.focusNode, "valuemin", this.constraints.min);
- }
- if(this.constraints.max !== undefined){
- dijit.setWaiState(this.focusNode, "valuemax", this.constraints.max);
- }
- },
-
- _setValueAttr: function(/*Number*/ value, /*Boolean?*/ priorityChange){
- // summary:
- // Hook so attr('value', ...) works.
-
- dijit.setWaiState(this.focusNode, "valuenow", value);
- this.inherited(arguments);
- }
- }
-);
-
-}
diff --git a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/form/VerticalRule.js b/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/form/VerticalRule.js
deleted file mode 100644
index f0b21b3..0000000
--- a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/form/VerticalRule.js
+++ /dev/null
@@ -1,36 +0,0 @@
-/*
- Copyright (c) 2004-2009, The Dojo Foundation All Rights Reserved.
- Available via Academic Free License >= 2.1 OR the modified BSD license.
- see: http://dojotoolkit.org/license for details
-*/
-
-
-if(!dojo._hasResource["dijit.form.VerticalRule"]){ //_hasResource checks added by build. Do not use _hasResource directly in your code.
-dojo._hasResource["dijit.form.VerticalRule"] = true;
-dojo.provide("dijit.form.VerticalRule");
-
-dojo.require("dijit.form.HorizontalRule");
-
-dojo.declare("dijit.form.VerticalRule", dijit.form.HorizontalRule,
-{
- // summary:
- // Hash marks for the `dijit.form.VerticalSlider`
-
- templateString: '<div class="dijitRuleContainer dijitRuleContainerV"></div>',
- _positionPrefix: '<div class="dijitRuleMark dijitRuleMarkV" style="top:',
-
-/*=====
- // container: String
- // This is either "leftDecoration" or "rightDecoration",
- // to indicate whether this rule goes to the left or to the right of the slider.
- // Note that on RTL system, "leftDecoration" would actually go to the right, and vice-versa.
- container: "",
-=====*/
-
- // Overrides HorizontalRule._isHorizontal
- _isHorizontal: false
-
-});
-
-
-}
diff --git a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/form/VerticalRuleLabels.js b/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/form/VerticalRuleLabels.js
deleted file mode 100644
index 757e5e3..0000000
--- a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/form/VerticalRuleLabels.js
+++ /dev/null
@@ -1,30 +0,0 @@
-/*
- Copyright (c) 2004-2009, The Dojo Foundation All Rights Reserved.
- Available via Academic Free License >= 2.1 OR the modified BSD license.
- see: http://dojotoolkit.org/license for details
-*/
-
-
-if(!dojo._hasResource["dijit.form.VerticalRuleLabels"]){ //_hasResource checks added by build. Do not use _hasResource directly in your code.
-dojo._hasResource["dijit.form.VerticalRuleLabels"] = true;
-dojo.provide("dijit.form.VerticalRuleLabels");
-
-dojo.require("dijit.form.HorizontalRuleLabels");
-
-dojo.declare("dijit.form.VerticalRuleLabels", dijit.form.HorizontalRuleLabels,
-{
- // summary:
- // Labels for the `dijit.form.VerticalSlider`
-
- templateString: '<div class="dijitRuleContainer dijitRuleContainerV dijitRuleLabelsContainer dijitRuleLabelsContainerV"></div>',
-
- _positionPrefix: '<div class="dijitRuleLabelContainer dijitRuleLabelContainerV" style="top:',
- _labelPrefix: '"><span class="dijitRuleLabel dijitRuleLabelV">',
-
- _calcPosition: function(pos){
- // Overrides HorizontalRuleLabel._calcPosition()
- return 100-pos;
- }
-});
-
-}
diff --git a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/form/VerticalSlider.js b/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/form/VerticalSlider.js
deleted file mode 100644
index 4512719..0000000
--- a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/form/VerticalSlider.js
+++ /dev/null
@@ -1,73 +0,0 @@
-/*
- Copyright (c) 2004-2009, The Dojo Foundation All Rights Reserved.
- Available via Academic Free License >= 2.1 OR the modified BSD license.
- see: http://dojotoolkit.org/license for details
-*/
-
-
-if(!dojo._hasResource["dijit.form.VerticalSlider"]){ //_hasResource checks added by build. Do not use _hasResource directly in your code.
-dojo._hasResource["dijit.form.VerticalSlider"] = true;
-dojo.provide("dijit.form.VerticalSlider");
-
-dojo.require("dijit.form.HorizontalSlider");
-
-dojo.declare(
- "dijit.form.VerticalSlider",
- dijit.form.HorizontalSlider,
-{
- // summary:
- // A form widget that allows one to select a value with a vertically draggable handle
-
- templateString: dojo.cache("dijit.form", "templates/VerticalSlider.html", "<table class=\"dijitReset dijitSlider\" cellspacing=\"0\" cellpadding=\"0\" border=\"0\" rules=\"none\" dojoAttachEvent=\"onkeypress:_onKeyPress,onkeyup:_onKeyUp\"\n><tbody class=\"dijitReset\"\n\t><tr class=\"dijitReset\"\n\t\t><td class=\"dijitReset\"></td\n\t\t><td class=\"dijitReset dijitSliderButtonContainer dijitSliderButtonContainerV\"\n\t\t\t><div class=\"dijitSliderIncrementIconV\" tabIndex=\"-1\" style=\"display:none\" dojoAttachPoint=\"decrementButton\"><span class=\"dijitSliderButtonInner\">+</span></div\n\t\t></td\n\t\t><td class=\"dijitReset\"></td\n\t></tr\n\t><tr class=\"dijitReset\"\n\t\t><td class=\"dijitReset\"></td\n\t\t><td class=\"dijitReset\"\n\t\t\t><center><div class=\"dijitSliderBar dijitSliderBumper dijitSliderBumperV dijitSliderTopBumper dijitSliderTopBumper\" dojoAttachEvent=\"onmousedown:_onClkIncBumper\"></div></center\n\t\t></td\n\t\t><td class=\"dijitReset\"></td\n\t></tr\n\t><tr class=\"dijitReset\"\n\t\t><td dojoAttachPoint=\"leftDecoration\" class=\"dijitReset\" style=\"text-align:center;height:100%;\"></td\n\t\t><td class=\"dijitReset\" style=\"height:100%;\"\n\t\t\t><input dojoAttachPoint=\"valueNode\" type=\"hidden\" ${nameAttrSetting}\n\t\t\t/><center class=\"dijitReset dijitSliderBarContainerV\" waiRole=\"presentation\" dojoAttachPoint=\"sliderBarContainer\"\n\t\t\t\t><div waiRole=\"presentation\" dojoAttachPoint=\"remainingBar\" class=\"dijitSliderBar dijitSliderBarV dijitSliderRemainingBar dijitSliderRemainingBarV\" dojoAttachEvent=\"onmousedown:_onBarClick\"><!--#5629--></div\n\t\t\t\t><div waiRole=\"presentation\" dojoAttachPoint=\"progressBar\" class=\"dijitSliderBar dijitSliderBarV dijitSliderProgressBar dijitSliderProgressBarV\" dojoAttachEvent=\"onmousedown:_onBarClick\"\n\t\t\t\t\t><div class=\"dijitSliderMoveable\" style=\"vertical-align:top;\"\n\t\t\t\t\t\t><div dojoAttachPoint=\"sliderHandle,focusNode\" class=\"dijitSliderImageHandle dijitSliderImageHandleV\" dojoAttachEvent=\"onmousedown:_onHandleClick\" waiRole=\"slider\" valuemin=\"${minimum}\" valuemax=\"${maximum}\"></div\n\t\t\t\t\t></div\n\t\t\t\t></div\n\t\t\t></center\n\t\t></td\n\t\t><td dojoAttachPoint=\"containerNode,rightDecoration\" class=\"dijitReset\" style=\"text-align:center;height:100%;\"></td\n\t></tr\n\t><tr class=\"dijitReset\"\n\t\t><td class=\"dijitReset\"></td\n\t\t><td class=\"dijitReset\"\n\t\t\t><center><div class=\"dijitSliderBar dijitSliderBumper dijitSliderBumperV dijitSliderBottomBumper dijitSliderBottomBumper\" dojoAttachEvent=\"onmousedown:_onClkDecBumper\"></div></center\n\t\t></td\n\t\t><td class=\"dijitReset\"></td\n\t></tr\n\t><tr class=\"dijitReset\"\n\t\t><td class=\"dijitReset\"></td\n\t\t><td class=\"dijitReset dijitSliderButtonContainer dijitSliderButtonContainerV\"\n\t\t\t><div class=\"dijitSliderDecrementIconV\" tabIndex=\"-1\" style=\"display:none\" dojoAttachPoint=\"incrementButton\"><span class=\"dijitSliderButtonInner\">-</span></div\n\t\t></td\n\t\t><td class=\"dijitReset\"></td\n\t></tr\n></tbody></table>\n"),
- _mousePixelCoord: "pageY",
- _pixelCount: "h",
- _startingPixelCoord: "y",
- _startingPixelCount: "t",
- _handleOffsetCoord: "top",
- _progressPixelSize: "height",
-
- // _descending: Boolean
- // Specifies if the slider values go from high-on-top (true), or low-on-top (false)
- // TODO: expose this in 1.2 - the css progress/remaining bar classes need to be reversed
- _descending: true,
-
- startup: function(){
- if(this._started){ return; }
-
- if(!this.isLeftToRight() && dojo.isMoz){
- if(this.leftDecoration){this._rtlRectify(this.leftDecoration);}
- if(this.rightDecoration){this._rtlRectify(this.rightDecoration);}
- }
-
- this.inherited(arguments);
- },
-
- _isReversed: function(){
- // summary:
- // Overrides HorizontalSlider._isReversed.
- // Indicates if values are high on top (with low numbers on the bottom).
- return this._descending;
- },
-
- _rtlRectify: function(decorationNode/*NodeList*/){
- // summary:
- // Helper function on gecko.
- // Rectify children nodes for left/right decoration in rtl case.
- // Simply switch the rule and label child for each decoration node.
- // tags:
- // private
- var childNodes = [];
- while(decorationNode.firstChild){
- childNodes.push(decorationNode.firstChild);
- decorationNode.removeChild(decorationNode.firstChild);
- }
- for(var i = childNodes.length-1; i >=0; i--){
- if(childNodes[i]){
- decorationNode.appendChild(childNodes[i]);
- }
- }
- }
-});
-
-
-}
diff --git a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/form/_DateTimeTextBox.js b/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/form/_DateTimeTextBox.js
deleted file mode 100644
index 6ab13a1..0000000
--- a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/form/_DateTimeTextBox.js
+++ /dev/null
@@ -1,275 +0,0 @@
-/*
- Copyright (c) 2004-2009, The Dojo Foundation All Rights Reserved.
- Available via Academic Free License >= 2.1 OR the modified BSD license.
- see: http://dojotoolkit.org/license for details
-*/
-
-
-if(!dojo._hasResource["dijit.form._DateTimeTextBox"]){ //_hasResource checks added by build. Do not use _hasResource directly in your code.
-dojo._hasResource["dijit.form._DateTimeTextBox"] = true;
-dojo.provide("dijit.form._DateTimeTextBox");
-
-dojo.require("dojo.date");
-dojo.require("dojo.date.locale");
-dojo.require("dojo.date.stamp");
-dojo.require("dijit.form.ValidationTextBox");
-
-/*=====
-dojo.declare(
- "dijit.form._DateTimeTextBox.__Constraints",
- [dijit.form.RangeBoundTextBox.__Constraints, dojo.date.locale.__FormatOptions], {
- // summary:
- // Specifies both the rules on valid/invalid values (first/last date/time allowed),
- // and also formatting options for how the date/time is displayed.
- // example:
- // To restrict to dates within 2004, displayed in a long format like "December 25, 2005":
- // | {min:'2004-01-01',max:'2004-12-31', formatLength:'long'}
-});
-=====*/
-
-dojo.declare(
- "dijit.form._DateTimeTextBox",
- dijit.form.RangeBoundTextBox,
- {
- // summary:
- // Base class for validating, serializable, range-bound date or time text box.
-
- // constraints: dijit.form._DateTimeTextBox.__Constraints
- // Despite the name, this parameter specifies both constraints on the input
- // (including starting/ending dates/times allowed) as well as
- // formatting options like whether the date is displayed in long (ex: December 25, 2005)
- // or short (ex: 12/25/2005) format. See `dijit.form._DateTimeTextBox.__Constraints` for details.
- /*=====
- constraints: {},
- ======*/
-
- // Override ValidationTextBox.regExpGen().... we use a reg-ex generating function rather
- // than a straight regexp to deal with locale (plus formatting options too?)
- regExpGen: dojo.date.locale.regexp,
-
- // datePackage: String
- // JavaScript namespace to find calendar routines. Uses Gregorian calendar routines
- // at dojo.date, by default.
- datePackage: "dojo.date",
-
- // Override _FormWidget.compare() to work for dates/times
- compare: dojo.date.compare,
-
- format: function(/*Date*/ value, /*dojo.date.locale.__FormatOptions*/ constraints){
- // summary:
- // Formats the value as a Date, according to specified locale (second argument)
- // tags:
- // protected
- if(!value){ return ''; }
- return this.dateLocaleModule.format(value, constraints);
- },
-
- parse: function(/*String*/ value, /*dojo.date.locale.__FormatOptions*/ constraints){
- // summary:
- // Parses as string as a Date, according to constraints
- // tags:
- // protected
-
- return this.dateLocaleModule.parse(value, constraints) || (this._isEmpty(value) ? null : undefined); // Date
- },
-
- // Overrides ValidationTextBox.serialize() to serialize a date in canonical ISO format.
- serialize: function(/*anything*/val, /*Object?*/options){
- if(val.toGregorian){
- val = val.toGregorian();
- }
- return dojo.date.stamp.toISOString(val, options);
- },
-
- // value: Date
- // The value of this widget as a JavaScript Date object. Use attr("value") / attr("value", val) to manipulate.
- // When passed to the parser in markup, must be specified according to `dojo.date.stamp.fromISOString`
- value: new Date(""), // value.toString()="NaN"
- _blankValue: null, // used by filter() when the textbox is blank
-
- // popupClass: [protected extension] String
- // Name of the popup widget class used to select a date/time.
- // Subclasses should specify this.
- popupClass: "", // default is no popup = text only
-
-
- // _selector: [protected extension] String
- // Specifies constraints.selector passed to dojo.date functions, should be either
- // "date" or "time".
- // Subclass must specify this.
- _selector: "",
-
- constructor: function(/*Object*/args){
- var dateClass = args.datePackage ? args.datePackage + ".Date" : "Date";
- this.dateClassObj = dojo.getObject(dateClass, false);
- this.value = new this.dateClassObj("");
-
- this.datePackage = args.datePackage || this.datePackage;
- this.dateLocaleModule = dojo.getObject(this.datePackage + ".locale", false);
- this.regExpGen = this.dateLocaleModule.regexp;
- },
-
- postMixInProperties: function(){
- this.inherited(arguments);
-
- if(!this.value || this.value.toString() == dijit.form._DateTimeTextBox.prototype.value.toString()){
- this.value = null;
- }
- var constraints = this.constraints;
- constraints.selector = this._selector;
- constraints.fullYear = true; // see #5465 - always format with 4-digit years
- var fromISO = dojo.date.stamp.fromISOString;
- if(typeof constraints.min == "string"){ constraints.min = fromISO(constraints.min); }
- if(typeof constraints.max == "string"){ constraints.max = fromISO(constraints.max); }
- },
-
- _onFocus: function(/*Event*/ evt){
- // summary:
- // open the popup
- this._open();
- this.inherited(arguments);
- },
-
- _setValueAttr: function(/*Date*/ value, /*Boolean?*/ priorityChange, /*String?*/ formattedValue){
- // summary:
- // Sets the date on this textbox. Note that `value` must be like a Javascript Date object.
- if(value instanceof Date && !(this.dateClassObj instanceof Date)){
- value = new this.dateClassObj(value);
- }
-
- this.inherited(arguments);
- if(this._picker){
- // #3948: fix blank date on popup only
- if(!value){value = new this.dateClassObj();}
- this._picker.attr('value', value);
- }
- },
-
- _open: function(){
- // summary:
- // opens the TimePicker, and sets the onValueSelected value
-
- if(this.disabled || this.readOnly || !this.popupClass){return;}
-
- var textBox = this;
-
- if(!this._picker){
- var PopupProto = dojo.getObject(this.popupClass, false);
- this._picker = new PopupProto({
- onValueSelected: function(value){
- if(textBox._tabbingAway){
- delete textBox._tabbingAway;
- }else{
- textBox.focus(); // focus the textbox before the popup closes to avoid reopening the popup
- }
- setTimeout(dojo.hitch(textBox, "_close"), 1); // allow focus time to take
-
- // this will cause InlineEditBox and other handlers to do stuff so make sure it's last
- dijit.form._DateTimeTextBox.superclass._setValueAttr.call(textBox, value, true);
- },
- id: this.id + "_popup",
- lang: textBox.lang,
- constraints: textBox.constraints,
-
- datePackage: textBox.datePackage,
-
- isDisabledDate: function(/*Date*/ date){
- // summary:
- // disables dates outside of the min/max of the _DateTimeTextBox
- var compare = dojo.date.compare;
- var constraints = textBox.constraints;
- return constraints && (constraints.min && (compare(constraints.min, date, textBox._selector) > 0) ||
- (constraints.max && compare(constraints.max, date, textBox._selector) < 0));
- }
- });
- this._picker.attr('value', this.attr('value') || new this.dateClassObj());
- }
- if(!this._opened){
- // Open drop down. Align left sides of input box and drop down, even in RTL mode,
- // otherwise positioning thrown off when the drop down width is changed in marginBox call below (#10676)
- dijit.popup.open({
- parent: this,
- popup: this._picker,
- orient: {'BL':'TL', 'TL':'BL'},
- around: this.domNode,
- onCancel: dojo.hitch(this, this._close),
- onClose: function(){ textBox._opened=false; }
- });
- this._opened=true;
- }
-
- dojo.marginBox(this._picker.domNode,{ w:this.domNode.offsetWidth });
- },
-
- _close: function(){
- if(this._opened){
- dijit.popup.close(this._picker);
- this._opened=false;
- }
- },
-
- _onBlur: function(){
- // summary:
- // Called magically when focus has shifted away from this widget and it's dropdown
- this._close();
- if(this._picker){
- // teardown so that constraints will be rebuilt next time (redundant reference: #6002)
- this._picker.destroy();
- delete this._picker;
- }
- this.inherited(arguments);
- // don't focus on <input>. the user has explicitly focused on something else.
- },
-
- _getDisplayedValueAttr: function(){
- return this.textbox.value;
- },
-
- _setDisplayedValueAttr: function(/*String*/ value, /*Boolean?*/ priorityChange){
- this._setValueAttr(this.parse(value, this.constraints), priorityChange, value);
- },
-
- destroy: function(){
- if(this._picker){
- this._picker.destroy();
- delete this._picker;
- }
- this.inherited(arguments);
- },
-
- postCreate: function(){
- this.inherited(arguments);
- this.connect(this.focusNode, 'onkeypress', this._onKeyPress);
- this.connect(this.focusNode, 'onclick', this._open);
- },
-
- _onKeyPress: function(/*Event*/ e){
- // summary:
- // Handler for keypress events
-
- var p = this._picker, dk = dojo.keys;
- // Handle the key in the picker, if it has a handler. If the handler
- // returns false, then don't handle any other keys.
- if(p && this._opened && p.handleKey){
- if(p.handleKey(e) === false){ return; }
- }
- if(this._opened && e.charOrCode == dk.ESCAPE && !(e.shiftKey || e.ctrlKey || e.altKey || e.metaKey)){
- this._close();
- dojo.stopEvent(e);
- }else if(!this._opened && e.charOrCode == dk.DOWN_ARROW){
- this._open();
- dojo.stopEvent(e);
- }else if(e.charOrCode === dk.TAB){
- this._tabbingAway = true;
- }else if(this._opened && (e.keyChar || e.charOrCode === dk.BACKSPACE || e.charOrCode == dk.DELETE)){
- // Replace the element - but do it after a delay to allow for
- // filtering to occur
- setTimeout(dojo.hitch(this, function(){
- dijit.placeOnScreenAroundElement(p.domNode.parentNode, this.domNode, {'BL':'TL', 'TL':'BL'}, p.orient ? dojo.hitch(p, "orient") : null);
- }), 1);
- }
- }
- }
-);
-
-}
diff --git a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/form/_FormMixin.js b/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/form/_FormMixin.js
deleted file mode 100644
index 0e7c7d9..0000000
--- a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/form/_FormMixin.js
+++ /dev/null
@@ -1,414 +0,0 @@
-/*
- Copyright (c) 2004-2009, The Dojo Foundation All Rights Reserved.
- Available via Academic Free License >= 2.1 OR the modified BSD license.
- see: http://dojotoolkit.org/license for details
-*/
-
-
-if(!dojo._hasResource["dijit.form._FormMixin"]){ //_hasResource checks added by build. Do not use _hasResource directly in your code.
-dojo._hasResource["dijit.form._FormMixin"] = true;
-dojo.provide("dijit.form._FormMixin");
-
-dojo.declare("dijit.form._FormMixin", null,
- {
- // summary:
- // Mixin for containers of form widgets (i.e. widgets that represent a single value
- // and can be children of a <form> node or dijit.form.Form widget)
- // description:
- // Can extract all the form widgets
- // values and combine them into a single javascript object, or alternately
- // take such an object and set the values for all the contained
- // form widgets
-
-/*=====
- // value: Object
- // Name/value hash for each form element.
- // If there are multiple elements w/the same name, value is an array,
- // unless they are radio buttons in which case value is a scalar since only
- // one can be checked at a time.
- //
- // If the name is a dot separated list (like a.b.c.d), it's a nested structure.
- // Only works on widget form elements.
- // example:
- // | { name: "John Smith", interests: ["sports", "movies"] }
-=====*/
-
- // TODO:
- // * Repeater
- // * better handling for arrays. Often form elements have names with [] like
- // * people[3].sex (for a list of people [{name: Bill, sex: M}, ...])
- //
- //
-
- reset: function(){
- dojo.forEach(this.getDescendants(), function(widget){
- if(widget.reset){
- widget.reset();
- }
- });
- },
-
- validate: function(){
- // summary:
- // returns if the form is valid - same as isValid - but
- // provides a few additional (ui-specific) features.
- // 1 - it will highlight any sub-widgets that are not
- // valid
- // 2 - it will call focus() on the first invalid
- // sub-widget
- var didFocus = false;
- return dojo.every(dojo.map(this.getDescendants(), function(widget){
- // Need to set this so that "required" widgets get their
- // state set.
- widget._hasBeenBlurred = true;
- var valid = widget.disabled || !widget.validate || widget.validate();
- if(!valid && !didFocus){
- // Set focus of the first non-valid widget
- dijit.scrollIntoView(widget.containerNode || widget.domNode);
- widget.focus();
- didFocus = true;
- }
- return valid;
- }), function(item){ return item; });
- },
-
- setValues: function(val){
- dojo.deprecated(this.declaredClass+"::setValues() is deprecated. Use attr('value', val) instead.", "", "2.0");
- return this.attr('value', val);
- },
- _setValueAttr: function(/*object*/obj){
- // summary:
- // Fill in form values from according to an Object (in the format returned by attr('value'))
-
- // generate map from name --> [list of widgets with that name]
- var map = { };
- dojo.forEach(this.getDescendants(), function(widget){
- if(!widget.name){ return; }
- var entry = map[widget.name] || (map[widget.name] = [] );
- entry.push(widget);
- });
-
- for(var name in map){
- if(!map.hasOwnProperty(name)){
- continue;
- }
- var widgets = map[name], // array of widgets w/this name
- values = dojo.getObject(name, false, obj); // list of values for those widgets
-
- if(values === undefined){
- continue;
- }
- if(!dojo.isArray(values)){
- values = [ values ];
- }
- if(typeof widgets[0].checked == 'boolean'){
- // for checkbox/radio, values is a list of which widgets should be checked
- dojo.forEach(widgets, function(w, i){
- w.attr('value', dojo.indexOf(values, w.value) != -1);
- });
- }else if(widgets[0].multiple){
- // it takes an array (e.g. multi-select)
- widgets[0].attr('value', values);
- }else{
- // otherwise, values is a list of values to be assigned sequentially to each widget
- dojo.forEach(widgets, function(w, i){
- w.attr('value', values[i]);
- });
- }
- }
-
- /***
- * TODO: code for plain input boxes (this shouldn't run for inputs that are part of widgets)
-
- dojo.forEach(this.containerNode.elements, function(element){
- if(element.name == ''){return}; // like "continue"
- var namePath = element.name.split(".");
- var myObj=obj;
- var name=namePath[namePath.length-1];
- for(var j=1,len2=namePath.length;j<len2;++j){
- var p=namePath[j - 1];
- // repeater support block
- var nameA=p.split("[");
- if(nameA.length > 1){
- if(typeof(myObj[nameA[0]]) == "undefined"){
- myObj[nameA[0]]=[ ];
- } // if
-
- nameIndex=parseInt(nameA[1]);
- if(typeof(myObj[nameA[0]][nameIndex]) == "undefined"){
- myObj[nameA[0]][nameIndex] = { };
- }
- myObj=myObj[nameA[0]][nameIndex];
- continue;
- } // repeater support ends
-
- if(typeof(myObj[p]) == "undefined"){
- myObj=undefined;
- break;
- };
- myObj=myObj[p];
- }
-
- if(typeof(myObj) == "undefined"){
- return; // like "continue"
- }
- if(typeof(myObj[name]) == "undefined" && this.ignoreNullValues){
- return; // like "continue"
- }
-
- // TODO: widget values (just call attr('value', ...) on the widget)
-
- // TODO: maybe should call dojo.getNodeProp() instead
- switch(element.type){
- case "checkbox":
- element.checked = (name in myObj) &&
- dojo.some(myObj[name], function(val){ return val == element.value; });
- break;
- case "radio":
- element.checked = (name in myObj) && myObj[name] == element.value;
- break;
- case "select-multiple":
- element.selectedIndex=-1;
- dojo.forEach(element.options, function(option){
- option.selected = dojo.some(myObj[name], function(val){ return option.value == val; });
- });
- break;
- case "select-one":
- element.selectedIndex="0";
- dojo.forEach(element.options, function(option){
- option.selected = option.value == myObj[name];
- });
- break;
- case "hidden":
- case "text":
- case "textarea":
- case "password":
- element.value = myObj[name] || "";
- break;
- }
- });
- */
- },
-
- getValues: function(){
- dojo.deprecated(this.declaredClass+"::getValues() is deprecated. Use attr('value') instead.", "", "2.0");
- return this.attr('value');
- },
- _getValueAttr: function(){
- // summary:
- // Returns Object representing form values.
- // description:
- // Returns name/value hash for each form element.
- // If there are multiple elements w/the same name, value is an array,
- // unless they are radio buttons in which case value is a scalar since only
- // one can be checked at a time.
- //
- // If the name is a dot separated list (like a.b.c.d), creates a nested structure.
- // Only works on widget form elements.
- // example:
- // | { name: "John Smith", interests: ["sports", "movies"] }
-
- // get widget values
- var obj = { };
- dojo.forEach(this.getDescendants(), function(widget){
- var name = widget.name;
- if(!name || widget.disabled){ return; }
-
- // Single value widget (checkbox, radio, or plain <input> type widget
- var value = widget.attr('value');
-
- // Store widget's value(s) as a scalar, except for checkboxes which are automatically arrays
- if(typeof widget.checked == 'boolean'){
- if(/Radio/.test(widget.declaredClass)){
- // radio button
- if(value !== false){
- dojo.setObject(name, value, obj);
- }else{
- // give radio widgets a default of null
- value = dojo.getObject(name, false, obj);
- if(value === undefined){
- dojo.setObject(name, null, obj);
- }
- }
- }else{
- // checkbox/toggle button
- var ary=dojo.getObject(name, false, obj);
- if(!ary){
- ary=[];
- dojo.setObject(name, ary, obj);
- }
- if(value !== false){
- ary.push(value);
- }
- }
- }else{
- var prev=dojo.getObject(name, false, obj);
- if(typeof prev != "undefined"){
- if(dojo.isArray(prev)){
- prev.push(value);
- }else{
- dojo.setObject(name, [prev, value], obj);
- }
- }else{
- // unique name
- dojo.setObject(name, value, obj);
- }
- }
- });
-
- /***
- * code for plain input boxes (see also dojo.formToObject, can we use that instead of this code?
- * but it doesn't understand [] notation, presumably)
- var obj = { };
- dojo.forEach(this.containerNode.elements, function(elm){
- if(!elm.name) {
- return; // like "continue"
- }
- var namePath = elm.name.split(".");
- var myObj=obj;
- var name=namePath[namePath.length-1];
- for(var j=1,len2=namePath.length;j<len2;++j){
- var nameIndex = null;
- var p=namePath[j - 1];
- var nameA=p.split("[");
- if(nameA.length > 1){
- if(typeof(myObj[nameA[0]]) == "undefined"){
- myObj[nameA[0]]=[ ];
- } // if
- nameIndex=parseInt(nameA[1]);
- if(typeof(myObj[nameA[0]][nameIndex]) == "undefined"){
- myObj[nameA[0]][nameIndex] = { };
- }
- } else if(typeof(myObj[nameA[0]]) == "undefined"){
- myObj[nameA[0]] = { }
- } // if
-
- if(nameA.length == 1){
- myObj=myObj[nameA[0]];
- } else{
- myObj=myObj[nameA[0]][nameIndex];
- } // if
- } // for
-
- if((elm.type != "select-multiple" && elm.type != "checkbox" && elm.type != "radio") || (elm.type == "radio" && elm.checked)){
- if(name == name.split("[")[0]){
- myObj[name]=elm.value;
- } else{
- // can not set value when there is no name
- }
- } else if(elm.type == "checkbox" && elm.checked){
- if(typeof(myObj[name]) == 'undefined'){
- myObj[name]=[ ];
- }
- myObj[name].push(elm.value);
- } else if(elm.type == "select-multiple"){
- if(typeof(myObj[name]) == 'undefined'){
- myObj[name]=[ ];
- }
- for(var jdx=0,len3=elm.options.length; jdx<len3; ++jdx){
- if(elm.options[jdx].selected){
- myObj[name].push(elm.options[jdx].value);
- }
- }
- } // if
- name=undefined;
- }); // forEach
- ***/
- return obj;
- },
-
- // TODO: ComboBox might need time to process a recently input value. This should be async?
- isValid: function(){
- // summary:
- // Returns true if all of the widgets are valid
-
- // This also populate this._invalidWidgets[] array with list of invalid widgets...
- // TODO: put that into separate function? It's confusing to have that as a side effect
- // of a method named isValid().
-
- this._invalidWidgets = dojo.filter(this.getDescendants(), function(widget){
- return !widget.disabled && widget.isValid && !widget.isValid();
- });
- return !this._invalidWidgets.length;
- },
-
-
- onValidStateChange: function(isValid){
- // summary:
- // Stub function to connect to if you want to do something
- // (like disable/enable a submit button) when the valid
- // state changes on the form as a whole.
- },
-
- _widgetChange: function(widget){
- // summary:
- // Connected to a widget's onChange function - update our
- // valid state, if needed.
- var isValid = this._lastValidState;
- if(!widget || this._lastValidState === undefined){
- // We have passed a null widget, or we haven't been validated
- // yet - let's re-check all our children
- // This happens when we connect (or reconnect) our children
- isValid = this.isValid();
- if(this._lastValidState === undefined){
- // Set this so that we don't fire an onValidStateChange
- // the first time
- this._lastValidState = isValid;
- }
- }else if(widget.isValid){
- this._invalidWidgets = dojo.filter(this._invalidWidgets || [], function(w){
- return (w != widget);
- }, this);
- if(!widget.isValid() && !widget.attr("disabled")){
- this._invalidWidgets.push(widget);
- }
- isValid = (this._invalidWidgets.length === 0);
- }
- if(isValid !== this._lastValidState){
- this._lastValidState = isValid;
- this.onValidStateChange(isValid);
- }
- },
-
- connectChildren: function(){
- // summary:
- // Connects to the onChange function of all children to
- // track valid state changes. You can call this function
- // directly, ex. in the event that you programmatically
- // add a widget to the form *after* the form has been
- // initialized.
- dojo.forEach(this._changeConnections, dojo.hitch(this, "disconnect"));
- var _this = this;
-
- // we connect to validate - so that it better reflects the states
- // of the widgets - also, we only connect if it has a validate
- // function (to avoid too many unneeded connections)
- var conns = this._changeConnections = [];
- dojo.forEach(dojo.filter(this.getDescendants(),
- function(item){ return item.validate; }
- ),
- function(widget){
- // We are interested in whenever the widget is validated - or
- // whenever the disabled attribute on that widget is changed
- conns.push(_this.connect(widget, "validate",
- dojo.hitch(_this, "_widgetChange", widget)));
- conns.push(_this.connect(widget, "_setDisabledAttr",
- dojo.hitch(_this, "_widgetChange", widget)));
- });
-
- // Call the widget change function to update the valid state, in
- // case something is different now.
- this._widgetChange(null);
- },
-
- startup: function(){
- this.inherited(arguments);
- // Initialize our valid state tracking. Needs to be done in startup
- // because it's not guaranteed that our children are initialized
- // yet.
- this._changeConnections = [];
- this.connectChildren();
- }
- });
-
-}
diff --git a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/form/_FormSelectWidget.js b/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/form/_FormSelectWidget.js
deleted file mode 100644
index cae85e0..0000000
--- a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/form/_FormSelectWidget.js
+++ /dev/null
@@ -1,583 +0,0 @@
-/*
- Copyright (c) 2004-2009, The Dojo Foundation All Rights Reserved.
- Available via Academic Free License >= 2.1 OR the modified BSD license.
- see: http://dojotoolkit.org/license for details
-*/
-
-
-if(!dojo._hasResource["dijit.form._FormSelectWidget"]){ //_hasResource checks added by build. Do not use _hasResource directly in your code.
-dojo._hasResource["dijit.form._FormSelectWidget"] = true;
-dojo.provide("dijit.form._FormSelectWidget");
-
-dojo.require("dijit.form._FormWidget");
-dojo.require("dojo.data.util.sorter");
-
-/*=====
-dijit.form.__SelectOption = function(){
- // value: String
- // The value of the option. Setting to empty (or missing) will
- // place a separator at that location
- // label: String
- // The label for our option. It can contain html tags.
- // selected: Boolean
- // Whether or not we are a selected option
- // disabled: Boolean
- // Whether or not this specific option is disabled
- this.value = value;
- this.label = label;
- this.selected = selected;
- this.disabled = disabled;
-}
-=====*/
-
-dojo.declare("dijit.form._FormSelectWidget", dijit.form._FormValueWidget, {
- // summary:
- // Extends _FormValueWidget in order to provide "select-specific"
- // values - i.e., those values that are unique to <select> elements.
- // This also provides the mechanism for reading the elements from
- // a store, if desired.
-
- // multiple: Boolean
- // Whether or not we are multi-valued
- multiple: false,
-
- // options: dijit.form.__SelectOption[]
- // The set of options for our select item. Roughly corresponds to
- // the html <option> tag.
- options: null,
-
- // store: dojo.data.api.Identity
- // A store which, at the very least impelements dojo.data.api.Identity
- // to use for getting our list of options - rather than reading them
- // from the <option> html tags.
- store: null,
-
- // query: object
- // A query to use when fetching items from our store
- query: null,
-
- // queryOptions: object
- // Query options to use when fetching from the store
- queryOptions: null,
-
- // onFetch: Function
- // A callback to do with an onFetch - but before any items are actually
- // iterated over (i.e. to filter even futher what you want to add)
- onFetch: null,
-
- // sortByLabel: boolean
- // Flag to sort the options returned from a store by the label of
- // the store.
- sortByLabel: true,
-
-
- // loadChildrenOnOpen: boolean
- // By default loadChildren is called when the items are fetched from the
- // store. This property allows delaying loadChildren (and the creation
- // of the options/menuitems) until the user opens the click the button.
- // dropdown
- loadChildrenOnOpen: false,
-
- getOptions: function(/* anything */ valueOrIdx){
- // summary:
- // Returns a given option (or options).
- // valueOrIdx:
- // If passed in as a string, that string is used to look up the option
- // in the array of options - based on the value property.
- // (See dijit.form.__SelectOption).
- //
- // If passed in a number, then the option with the given index (0-based)
- // within this select will be returned.
- //
- // If passed in a dijit.form.__SelectOption, the same option will be
- // returned if and only if it exists within this select.
- //
- // If passed an array, then an array will be returned with each element
- // in the array being looked up.
- //
- // If not passed a value, then all options will be returned
- //
- // returns:
- // The option corresponding with the given value or index. null
- // is returned if any of the following are true:
- // - A string value is passed in which doesn't exist
- // - An index is passed in which is outside the bounds of the array of options
- // - A dijit.form.__SelectOption is passed in which is not a part of the select
-
- // NOTE: the compare for passing in a dijit.form.__SelectOption checks
- // if the value property matches - NOT if the exact option exists
- // NOTE: if passing in an array, null elements will be placed in the returned
- // array when a value is not found.
- var lookupValue = valueOrIdx, opts = this.options || [], l = opts.length;
-
- if(lookupValue === undefined){
- return opts; // dijit.form.__SelectOption[]
- }
- if(dojo.isArray(lookupValue)){
- return dojo.map(lookupValue, "return this.getOptions(item);", this); // dijit.form.__SelectOption[]
- }
- if(dojo.isObject(valueOrIdx)){
- // We were passed an option - so see if it's in our array (directly),
- // and if it's not, try and find it by value.
- if(!dojo.some(this.options, function(o, idx){
- if(o === lookupValue ||
- (o.value && o.value === lookupValue.value)){
- lookupValue = idx;
- return true;
- }
- return false;
- })){
- lookupValue = -1;
- }
- }
- if(typeof lookupValue == "string"){
- for(var i=0; i<l; i++){
- if(opts[i].value === lookupValue){
- lookupValue = i;
- break;
- }
- }
- }
- if(typeof lookupValue == "number" && lookupValue >= 0 && lookupValue < l){
- return this.options[lookupValue] // dijit.form.__SelectOption
- }
- return null; // null
- },
-
- addOption: function(/* dijit.form.__SelectOption, dijit.form.__SelectOption[] */ option){
- // summary:
- // Adds an option or options to the end of the select. If value
- // of the option is empty or missing, a separator is created instead.
- // Passing in an array of options will yield slightly better performance
- // since the children are only loaded once.
- if(!dojo.isArray(option)){ option = [option]; }
- dojo.forEach(option, function(i){
- if(i && dojo.isObject(i)){
- this.options.push(i);
- }
- }, this);
- this._loadChildren();
- },
-
- removeOption: function(/* string, dijit.form.__SelectOption, number, or array */ valueOrIdx){
- // summary:
- // Removes the given option or options. You can remove by string
- // (in which case the value is removed), number (in which case the
- // index in the options array is removed), or select option (in
- // which case, the select option with a matching value is removed).
- // You can also pass in an array of those values for a slightly
- // better performance since the children are only loaded once.
- if(!dojo.isArray(valueOrIdx)){ valueOrIdx = [valueOrIdx]; }
- var oldOpts = this.getOptions(valueOrIdx);
- dojo.forEach(oldOpts, function(i){
- // We can get null back in our array - if our option was not found. In
- // that case, we don't want to blow up...
- if(i){
- this.options = dojo.filter(this.options, function(node, idx){
- return (node.value !== i.value);
- });
- this._removeOptionItem(i);
- }
- }, this);
- this._loadChildren();
- },
-
- updateOption: function(/* dijit.form.__SelectOption, dijit.form.__SelectOption[] */ newOption){
- // summary:
- // Updates the values of the given option. The option to update
- // is matched based on the value of the entered option. Passing
- // in an array of new options will yeild better performance since
- // the children will only be loaded once.
- if(!dojo.isArray(newOption)){ newOption = [newOption]; }
- dojo.forEach(newOption, function(i){
- var oldOpt = this.getOptions(i), k;
- if(oldOpt){
- for(k in i){ oldOpt[k] = i[k]; }
- }
- }, this);
- this._loadChildren();
- },
-
- setStore: function(/* dojo.data.api.Identity */ store,
- /* anything? */ selectedValue,
- /* Object? */ fetchArgs){
- // summary:
- // Sets the store you would like to use with this select widget.
- // The selected value is the value of the new store to set. This
- // function returns the original store, in case you want to reuse
- // it or something.
- // store: dojo.data.api.Identity
- // The store you would like to use - it MUST implement Identity,
- // and MAY implement Notification.
- // selectedValue: anything?
- // The value that this widget should set itself to *after* the store
- // has been loaded
- // fetchArgs: Object?
- // The arguments that will be passed to the store's fetch() function
- var oStore = this.store;
- fetchArgs = fetchArgs || {};
- if(oStore !== store){
- // Our store has changed, so update our notifications
- dojo.forEach(this._notifyConnections || [], dojo.disconnect);
- delete this._notifyConnections;
- if(store && store.getFeatures()["dojo.data.api.Notification"]){
- this._notifyConnections = [
- dojo.connect(store, "onNew", this, "_onNewItem"),
- dojo.connect(store, "onDelete", this, "_onDeleteItem"),
- dojo.connect(store, "onSet", this, "_onSetItem")
- ];
- }
- this.store = store;
- }
-
- // Turn off change notifications while we make all these changes
- this._onChangeActive = false;
-
- // Remove existing options (if there are any)
- if(this.options && this.options.length){
- this.removeOption(this.options);
- }
-
- // Add our new options
- if(store){
- var cb = function(items){
- if(this.sortByLabel && !fetchArgs.sort && items.length){
- items.sort(dojo.data.util.sorter.createSortFunction([{
- attribute: store.getLabelAttributes(items[0])[0]
- }], store));
- }
-
- if(fetchArgs.onFetch){
- items = fetchArgs.onFetch(items);
- }
- // TODO: Add these guys as a batch, instead of separately
- dojo.forEach(items, function(i){
- this._addOptionForItem(i);
- }, this);
-
- // Set our value (which might be undefined), and then tweak
- // it to send a change event with the real value
- this._loadingStore = false;
- this.attr("value", (("_pendingValue" in this) ? this._pendingValue : selectedValue));
- delete this._pendingValue;
-
- if(!this.loadChildrenOnOpen){
- this._loadChildren();
- }else{
- this._pseudoLoadChildren(items);
- }
- this._fetchedWith = opts;
- this._lastValueReported = this.multiple ? [] : null;
- this._onChangeActive = true;
- this.onSetStore();
- this._handleOnChange(this.value);
- };
- var opts = dojo.mixin({onComplete:cb, scope: this}, fetchArgs);
- this._loadingStore = true;
- store.fetch(opts);
- }else{
- delete this._fetchedWith;
- }
- return oStore; // dojo.data.api.Identity
- },
-
- _setValueAttr: function(/*anything*/ newValue, /*Boolean, optional*/ priorityChange){
- // summary:
- // set the value of the widget.
- // If a string is passed, then we set our value from looking it up.
- if(this._loadingStore){
- // Our store is loading - so save our value, and we'll set it when
- // we're done
- this._pendingValue = newValue;
- return;
- }
- var opts = this.getOptions() || [];
- if(!dojo.isArray(newValue)){
- newValue = [newValue];
- }
- dojo.forEach(newValue, function(i, idx){
- if(!dojo.isObject(i)){
- i = i + "";
- }
- if(typeof i === "string"){
- newValue[idx] = dojo.filter(opts, function(node){
- return node.value === i;
- })[0] || {value: "", label: ""};
- }
- }, this);
-
- // Make sure some sane default is set
- newValue = dojo.filter(newValue, function(i){ return i && i.value; });
- if(!this.multiple && (!newValue[0] || !newValue[0].value) && opts.length){
- newValue[0] = opts[0];
- }
- dojo.forEach(opts, function(i){
- i.selected = dojo.some(newValue, function(v){ return v.value === i.value; });
- });
- var val = dojo.map(newValue, function(i){ return i.value; }),
- disp = dojo.map(newValue, function(i){ return i.label; });
-
- this.value = this.multiple ? val : val[0];
- this._setDisplay(this.multiple ? disp : disp[0]);
- this._updateSelection();
- this._handleOnChange(this.value, priorityChange);
- },
-
- _getDisplayedValueAttr: function(){
- // summary:
- // returns the displayed value of the widget
- var val = this.attr("value");
- if(!dojo.isArray(val)){
- val = [val];
- }
- var ret = dojo.map(this.getOptions(val), function(v){
- if(v && "label" in v){
- return v.label;
- }else if(v){
- return v.value;
- }
- return null;
- }, this);
- return this.multiple ? ret : ret[0];
- },
-
- _getValueDeprecated: false, // remove when _FormWidget:getValue is removed
- getValue: function(){
- // summary:
- // get the value of the widget.
- return this._lastValue;
- },
-
- undo: function(){
- // summary:
- // restore the value to the last value passed to onChange
- this._setValueAttr(this._lastValueReported, false);
- },
-
- _loadChildren: function(){
- // summary:
- // Loads the children represented by this widget's options.
- // reset the menu to make it "populatable on the next click
- if(this._loadingStore){ return; }
- dojo.forEach(this._getChildren(), function(child){
- child.destroyRecursive();
- });
- // Add each menu item
- dojo.forEach(this.options, this._addOptionItem, this);
-
- // Update states
- this._updateSelection();
- },
-
- _updateSelection: function(){
- // summary:
- // Sets the "selected" class on the item for styling purposes
- this.value = this._getValueFromOpts();
- var val = this.value;
- if(!dojo.isArray(val)){
- val = [val];
- }
- if(val && val[0]){
- dojo.forEach(this._getChildren(), function(child){
- var isSelected = dojo.some(val, function(v){
- return child.option && (v === child.option.value);
- });
- dojo.toggleClass(child.domNode, this.baseClass + "SelectedOption", isSelected);
- dijit.setWaiState(child.domNode, "selected", isSelected);
- }, this);
- }
- this._handleOnChange(this.value);
- },
-
- _getValueFromOpts: function(){
- // summary:
- // Returns the value of the widget by reading the options for
- // the selected flag
- var opts = this.getOptions() || [];
- if(!this.multiple && opts.length){
- // Mirror what a select does - choose the first one
- var opt = dojo.filter(opts, function(i){
- return i.selected;
- })[0];
- if(opt && opt.value){
- return opt.value
- }else{
- opts[0].selected = true;
- return opts[0].value;
- }
- }else if(this.multiple){
- // Set value to be the sum of all selected
- return dojo.map(dojo.filter(opts, function(i){
- return i.selected;
- }), function(i){
- return i.value;
- }) || [];
- }
- return "";
- },
-
- // Internal functions to call when we have store notifications come in
- _onNewItem: function(/* item */ item, /* Object? */ parentInfo){
- if(!parentInfo || !parentInfo.parent){
- // Only add it if we are top-level
- this._addOptionForItem(item);
- }
- },
- _onDeleteItem: function(/* item */ item){
- var store = this.store;
- this.removeOption(store.getIdentity(item));
- },
- _onSetItem: function(/* item */ item){
- this.updateOption(this._getOptionObjForItem(item));
- },
-
- _getOptionObjForItem: function(item){
- // summary:
- // Returns an option object based off the given item. The "value"
- // of the option item will be the identity of the item, the "label"
- // of the option will be the label of the item. If the item contains
- // children, the children value of the item will be set
- var store = this.store, label = store.getLabel(item),
- value = (label ? store.getIdentity(item) : null);
- return {value: value, label: label, item:item}; // dijit.form.__SelectOption
- },
-
- _addOptionForItem: function(/* item */ item){
- // summary:
- // Creates (and adds) the option for the given item
- var store = this.store;
- if(!store.isItemLoaded(item)){
- // We are not loaded - so let's load it and add later
- store.loadItem({item: item, onComplete: function(i){
- this._addOptionForItem(item);
- },
- scope: this});
- return;
- }
- var newOpt = this._getOptionObjForItem(item);
- this.addOption(newOpt);
- },
-
- constructor: function(/* Object */ keywordArgs){
- // summary:
- // Saves off our value, if we have an initial one set so we
- // can use it if we have a store as well (see startup())
- this._oValue = (keywordArgs || {}).value || null;
- },
-
- _fillContent: function(){
- // summary:
- // Loads our options and sets up our dropdown correctly. We
- // don't want any content, so we don't call any inherit chain
- // function.
- var opts = this.options;
- if(!opts){
- opts = this.options = this.srcNodeRef ? dojo.query(">",
- this.srcNodeRef).map(function(node){
- if(node.getAttribute("type") === "separator"){
- return { value: "", label: "", selected: false, disabled: false };
- }
- return { value: node.getAttribute("value"),
- label: String(node.innerHTML),
- selected: node.getAttribute("selected") || false,
- disabled: node.getAttribute("disabled") || false };
- }, this) : [];
- }
- if(!this.value){
- this.value = this._getValueFromOpts();
- }else if(this.multiple && typeof this.value == "string"){
- this.value = this.value.split(",");
- }
- },
-
- postCreate: function(){
- // summary:
- // sets up our event handling that we need for functioning
- // as a select
- dojo.setSelectable(this.focusNode, false);
- this.inherited(arguments);
-
- // Make our event connections for updating state
- this.connect(this, "onChange", "_updateSelection");
- this.connect(this, "startup", "_loadChildren");
-
- this._setValueAttr(this.value, null);
- },
-
- startup: function(){
- // summary:
- // Connects in our store, if we have one defined
- this.inherited(arguments);
- var store = this.store, fetchArgs = {};
- dojo.forEach(["query", "queryOptions", "onFetch"], function(i){
- if(this[i]){
- fetchArgs[i] = this[i];
- }
- delete this[i];
- }, this);
- if(store && store.getFeatures()["dojo.data.api.Identity"]){
- // Temporarily set our store to null so that it will get set
- // and connected appropriately
- this.store = null;
- this.setStore(store, this._oValue, fetchArgs);
- }
- },
-
- destroy: function(){
- // summary:
- // Clean up our connections
- dojo.forEach(this._notifyConnections || [], dojo.disconnect);
- this.inherited(arguments);
- },
-
- _addOptionItem: function(/* dijit.form.__SelectOption */ option){
- // summary:
- // User-overridable function which, for the given option, adds an
- // item to the select. If the option doesn't have a value, then a
- // separator is added in that place. Make sure to store the option
- // in the created option widget.
- },
-
- _removeOptionItem: function(/* dijit.form.__SelectOption */ option){
- // summary:
- // User-overridable function which, for the given option, removes
- // its item from the select.
- },
-
- _setDisplay: function(/*String or String[]*/ newDisplay){
- // summary:
- // Overridable function which will set the display for the
- // widget. newDisplay is either a string (in the case of
- // single selects) or array of strings (in the case of multi-selects)
- },
-
- _getChildren: function(){
- // summary:
- // Overridable function to return the children that this widget contains.
- return [];
- },
-
- _getSelectedOptionsAttr: function(){
- // summary:
- // hooks into this.attr to provide a mechanism for getting the
- // option items for the current value of the widget.
- return this.getOptions(this.attr("value"));
- },
-
- _pseudoLoadChildren: function(/* item[] */ items){
- // summary:
- // a function that will "fake" loading children, if needed, and
- // if we have set to not load children until the widget opens.
- // items:
- // An array of items that will be loaded, when needed
- },
-
- onSetStore: function(){
- // summary:
- // a function that can be connected to in order to receive a
- // notification that the store has finished loading and all options
- // from that store are available
- }
-});
-
-}
diff --git a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/form/_FormWidget.js b/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/form/_FormWidget.js
deleted file mode 100644
index fc00da7..0000000
--- a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/form/_FormWidget.js
+++ /dev/null
@@ -1,470 +0,0 @@
-/*
- Copyright (c) 2004-2009, The Dojo Foundation All Rights Reserved.
- Available via Academic Free License >= 2.1 OR the modified BSD license.
- see: http://dojotoolkit.org/license for details
-*/
-
-
-if(!dojo._hasResource["dijit.form._FormWidget"]){ //_hasResource checks added by build. Do not use _hasResource directly in your code.
-dojo._hasResource["dijit.form._FormWidget"] = true;
-dojo.provide("dijit.form._FormWidget");
-
-dojo.require("dijit._Widget");
-dojo.require("dijit._Templated");
-
-dojo.declare("dijit.form._FormWidget", [dijit._Widget, dijit._Templated],
- {
- // summary:
- // Base class for widgets corresponding to native HTML elements such as <checkbox> or <button>,
- // which can be children of a <form> node or a `dijit.form.Form` widget.
- //
- // description:
- // Represents a single HTML element.
- // All these widgets should have these attributes just like native HTML input elements.
- // You can set them during widget construction or afterwards, via `dijit._Widget.attr`.
- //
- // They also share some common methods.
-
- // baseClass: [protected] String
- // Root CSS class of the widget (ex: dijitTextBox), used to add CSS classes of widget
- // (ex: "dijitTextBox dijitTextBoxInvalid dijitTextBoxFocused dijitTextBoxInvalidFocused")
- // See _setStateClass().
- baseClass: "",
-
- // name: String
- // Name used when submitting form; same as "name" attribute or plain HTML elements
- name: "",
-
- // alt: String
- // Corresponds to the native HTML <input> element's attribute.
- alt: "",
-
- // value: String
- // Corresponds to the native HTML <input> element's attribute.
- value: "",
-
- // type: String
- // Corresponds to the native HTML <input> element's attribute.
- type: "text",
-
- // tabIndex: Integer
- // Order fields are traversed when user hits the tab key
- tabIndex: "0",
-
- // disabled: Boolean
- // Should this widget respond to user input?
- // In markup, this is specified as "disabled='disabled'", or just "disabled".
- disabled: false,
-
- // intermediateChanges: Boolean
- // Fires onChange for each value change or only on demand
- intermediateChanges: false,
-
- // scrollOnFocus: Boolean
- // On focus, should this widget scroll into view?
- scrollOnFocus: true,
-
- // These mixins assume that the focus node is an INPUT, as many but not all _FormWidgets are.
- attributeMap: dojo.delegate(dijit._Widget.prototype.attributeMap, {
- value: "focusNode",
- id: "focusNode",
- tabIndex: "focusNode",
- alt: "focusNode",
- title: "focusNode"
- }),
-
- postMixInProperties: function(){
- // Setup name=foo string to be referenced from the template (but only if a name has been specified)
- // Unfortunately we can't use attributeMap to set the name due to IE limitations, see #8660
- this.nameAttrSetting = this.name ? ("name='" + this.name + "'") : "";
- this.inherited(arguments);
- },
-
- _setDisabledAttr: function(/*Boolean*/ value){
- this.disabled = value;
- dojo.attr(this.focusNode, 'disabled', value);
- if(this.valueNode){
- dojo.attr(this.valueNode, 'disabled', value);
- }
- dijit.setWaiState(this.focusNode, "disabled", value);
-
- if(value){
- // reset those, because after the domNode is disabled, we can no longer receive
- // mouse related events, see #4200
- this._hovering = false;
- this._active = false;
- // remove the tabIndex, especially for FF
- this.focusNode.setAttribute('tabIndex', "-1");
- }else{
- this.focusNode.setAttribute('tabIndex', this.tabIndex);
- }
- this._setStateClass();
- },
-
- setDisabled: function(/*Boolean*/ disabled){
- // summary:
- // Deprecated. Use attr('disabled', ...) instead.
- dojo.deprecated("setDisabled("+disabled+") is deprecated. Use attr('disabled',"+disabled+") instead.", "", "2.0");
- this.attr('disabled', disabled);
- },
-
- _onFocus: function(e){
- if(this.scrollOnFocus){
- dijit.scrollIntoView(this.domNode);
- }
- this.inherited(arguments);
- },
-
- _onMouse : function(/*Event*/ event){
- // summary:
- // Sets _hovering, _active, and stateModifier properties depending on mouse state,
- // then calls setStateClass() to set appropriate CSS classes for this.domNode.
- //
- // To get a different CSS class for hover, send onmouseover and onmouseout events to this method.
- // To get a different CSS class while mouse button is depressed, send onmousedown to this method.
-
- var mouseNode = event.currentTarget;
- if(mouseNode && mouseNode.getAttribute){
- this.stateModifier = mouseNode.getAttribute("stateModifier") || "";
- }
-
- if(!this.disabled){
- switch(event.type){
- case "mouseenter":
- case "mouseover":
- this._hovering = true;
- this._active = this._mouseDown;
- break;
-
- case "mouseout":
- case "mouseleave":
- this._hovering = false;
- this._active = false;
- break;
-
- case "mousedown" :
- this._active = true;
- this._mouseDown = true;
- // set a global event to handle mouseup, so it fires properly
- // even if the cursor leaves the button
- var mouseUpConnector = this.connect(dojo.body(), "onmouseup", function(){
- // if user clicks on the button, even if the mouse is released outside of it,
- // this button should get focus (which mimics native browser buttons)
- if(this._mouseDown && this.isFocusable()){
- this.focus();
- }
- this._active = false;
- this._mouseDown = false;
- this._setStateClass();
- this.disconnect(mouseUpConnector);
- });
- break;
- }
- this._setStateClass();
- }
- },
-
- isFocusable: function(){
- // summary:
- // Tells if this widget is focusable or not. Used internally by dijit.
- // tags:
- // protected
- return !this.disabled && !this.readOnly && this.focusNode && (dojo.style(this.domNode, "display") != "none");
- },
-
- focus: function(){
- // summary:
- // Put focus on this widget
- dijit.focus(this.focusNode);
- },
-
- _setStateClass: function(){
- // summary:
- // Update the visual state of the widget by setting the css classes on this.domNode
- // (or this.stateNode if defined) by combining this.baseClass with
- // various suffixes that represent the current widget state(s).
- //
- // description:
- // In the case where a widget has multiple
- // states, it sets the class based on all possible
- // combinations. For example, an invalid form widget that is being hovered
- // will be "dijitInput dijitInputInvalid dijitInputHover dijitInputInvalidHover".
- //
- // For complex widgets with multiple regions, there can be various hover/active states,
- // such as "Hover" or "CloseButtonHover" (for tab buttons).
- // This is controlled by a stateModifier="CloseButton" attribute on the close button node.
- //
- // The widget may have one or more of the following states, determined
- // by this.state, this.checked, this.valid, and this.selected:
- // - Error - ValidationTextBox sets this.state to "Error" if the current input value is invalid
- // - Checked - ex: a checkmark or a ToggleButton in a checked state, will have this.checked==true
- // - Selected - ex: currently selected tab will have this.selected==true
- //
- // In addition, it may have one or more of the following states,
- // based on this.disabled and flags set in _onMouse (this._active, this._hovering, this._focused):
- // - Disabled - if the widget is disabled
- // - Active - if the mouse (or space/enter key?) is being pressed down
- // - Focused - if the widget has focus
- // - Hover - if the mouse is over the widget
-
- // Compute new set of classes
- var newStateClasses = this.baseClass.split(" ");
-
- function multiply(modifier){
- newStateClasses = newStateClasses.concat(dojo.map(newStateClasses, function(c){ return c+modifier; }), "dijit"+modifier);
- }
-
- if(this.checked){
- multiply("Checked");
- }
- if(this.state){
- multiply(this.state);
- }
- if(this.selected){
- multiply("Selected");
- }
-
- if(this.disabled){
- multiply("Disabled");
- }else if(this.readOnly){
- multiply("ReadOnly");
- }else if(this._active){
- multiply(this.stateModifier+"Active");
- }else{
- if(this._focused){
- multiply("Focused");
- }
- if(this._hovering){
- multiply(this.stateModifier+"Hover");
- }
- }
-
- // Remove old state classes and add new ones.
- // For performance concerns we only write into domNode.className once.
- var tn = this.stateNode || this.domNode,
- classHash = {}; // set of all classes (state and otherwise) for node
-
- dojo.forEach(tn.className.split(" "), function(c){ classHash[c] = true; });
-
- if("_stateClasses" in this){
- dojo.forEach(this._stateClasses, function(c){ delete classHash[c]; });
- }
-
- dojo.forEach(newStateClasses, function(c){ classHash[c] = true; });
-
- var newClasses = [];
- for(var c in classHash){
- newClasses.push(c);
- }
- tn.className = newClasses.join(" ");
-
- this._stateClasses = newStateClasses;
- },
-
- compare: function(/*anything*/val1, /*anything*/val2){
- // summary:
- // Compare 2 values (as returned by attr('value') for this widget).
- // tags:
- // protected
- if(typeof val1 == "number" && typeof val2 == "number"){
- return (isNaN(val1) && isNaN(val2)) ? 0 : val1 - val2;
- }else if(val1 > val2){
- return 1;
- }else if(val1 < val2){
- return -1;
- }else{
- return 0;
- }
- },
-
- onChange: function(newValue){
- // summary:
- // Callback when this widget's value is changed.
- // tags:
- // callback
- },
-
- // _onChangeActive: [private] Boolean
- // Indicates that changes to the value should call onChange() callback.
- // This is false during widget initialization, to avoid calling onChange()
- // when the initial value is set.
- _onChangeActive: false,
-
- _handleOnChange: function(/*anything*/ newValue, /* Boolean? */ priorityChange){
- // summary:
- // Called when the value of the widget is set. Calls onChange() if appropriate
- // newValue:
- // the new value
- // priorityChange:
- // For a slider, for example, dragging the slider is priorityChange==false,
- // but on mouse up, it's priorityChange==true. If intermediateChanges==true,
- // onChange is only called form priorityChange=true events.
- // tags:
- // private
- this._lastValue = newValue;
- if(this._lastValueReported == undefined && (priorityChange === null || !this._onChangeActive)){
- // this block executes not for a change, but during initialization,
- // and is used to store away the original value (or for ToggleButton, the original checked state)
- this._resetValue = this._lastValueReported = newValue;
- }
- if((this.intermediateChanges || priorityChange || priorityChange === undefined) &&
- ((typeof newValue != typeof this._lastValueReported) ||
- this.compare(newValue, this._lastValueReported) != 0)){
- this._lastValueReported = newValue;
- if(this._onChangeActive){
- if(this._onChangeHandle){
- clearTimeout(this._onChangeHandle);
- }
- // setTimout allows hidden value processing to run and
- // also the onChange handler can safely adjust focus, etc
- this._onChangeHandle = setTimeout(dojo.hitch(this,
- function(){
- this._onChangeHandle = null;
- this.onChange(newValue);
- }), 0); // try to collapse multiple onChange's fired faster than can be processed
- }
- }
- },
-
- create: function(){
- // Overrides _Widget.create()
- this.inherited(arguments);
- this._onChangeActive = true;
- this._setStateClass();
- },
-
- destroy: function(){
- if(this._onChangeHandle){ // destroy called before last onChange has fired
- clearTimeout(this._onChangeHandle);
- this.onChange(this._lastValueReported);
- }
- this.inherited(arguments);
- },
-
- setValue: function(/*String*/ value){
- // summary:
- // Deprecated. Use attr('value', ...) instead.
- dojo.deprecated("dijit.form._FormWidget:setValue("+value+") is deprecated. Use attr('value',"+value+") instead.", "", "2.0");
- this.attr('value', value);
- },
-
- getValue: function(){
- // summary:
- // Deprecated. Use attr('value') instead.
- dojo.deprecated(this.declaredClass+"::getValue() is deprecated. Use attr('value') instead.", "", "2.0");
- return this.attr('value');
- }
-});
-
-dojo.declare("dijit.form._FormValueWidget", dijit.form._FormWidget,
-{
- // summary:
- // Base class for widgets corresponding to native HTML elements such as <input> or <select> that have user changeable values.
- // description:
- // Each _FormValueWidget represents a single input value, and has a (possibly hidden) <input> element,
- // to which it serializes it's input value, so that form submission (either normal submission or via FormBind?)
- // works as expected.
-
- // Don't attempt to mixin the 'type', 'name' attributes here programatically -- they must be declared
- // directly in the template as read by the parser in order to function. IE is known to specifically
- // require the 'name' attribute at element creation time. See #8484, #8660.
- // TODO: unclear what that {value: ""} is for; FormWidget.attributeMap copies value to focusNode,
- // so maybe {value: ""} is so the value *doesn't* get copied to focusNode?
- // Seems like we really want value removed from attributeMap altogether
- // (although there's no easy way to do that now)
-
- // readOnly: Boolean
- // Should this widget respond to user input?
- // In markup, this is specified as "readOnly".
- // Similar to disabled except readOnly form values are submitted.
- readOnly: false,
-
- attributeMap: dojo.delegate(dijit.form._FormWidget.prototype.attributeMap, {
- value: "",
- readOnly: "focusNode"
- }),
-
- _setReadOnlyAttr: function(/*Boolean*/ value){
- this.readOnly = value;
- dojo.attr(this.focusNode, 'readOnly', value);
- dijit.setWaiState(this.focusNode, "readonly", value);
- this._setStateClass();
- },
-
- postCreate: function(){
- if(dojo.isIE){ // IE won't stop the event with keypress
- this.connect(this.focusNode || this.domNode, "onkeydown", this._onKeyDown);
- }
- // Update our reset value if it hasn't yet been set (because this.attr
- // is only called when there *is* a value
- if(this._resetValue === undefined){
- this._resetValue = this.value;
- }
- },
-
- _setValueAttr: function(/*anything*/ newValue, /*Boolean, optional*/ priorityChange){
- // summary:
- // Hook so attr('value', value) works.
- // description:
- // Sets the value of the widget.
- // If the value has changed, then fire onChange event, unless priorityChange
- // is specified as null (or false?)
- this.value = newValue;
- this._handleOnChange(newValue, priorityChange);
- },
-
- _getValueAttr: function(){
- // summary:
- // Hook so attr('value') works.
- return this._lastValue;
- },
-
- undo: function(){
- // summary:
- // Restore the value to the last value passed to onChange
- this._setValueAttr(this._lastValueReported, false);
- },
-
- reset: function(){
- // summary:
- // Reset the widget's value to what it was at initialization time
- this._hasBeenBlurred = false;
- this._setValueAttr(this._resetValue, true);
- },
-
- _onKeyDown: function(e){
- if(e.keyCode == dojo.keys.ESCAPE && !(e.ctrlKey || e.altKey || e.metaKey)){
- var te;
- if(dojo.isIE){
- e.preventDefault(); // default behavior needs to be stopped here since keypress is too late
- te = document.createEventObject();
- te.keyCode = dojo.keys.ESCAPE;
- te.shiftKey = e.shiftKey;
- e.srcElement.fireEvent('onkeypress', te);
- }
- }
- },
-
- _layoutHackIE7: function(){
- // summary:
- // Work around table sizing bugs on IE7 by forcing redraw
-
- if(dojo.isIE == 7){ // fix IE7 layout bug when the widget is scrolled out of sight
- var domNode = this.domNode;
- var parent = domNode.parentNode;
- var pingNode = domNode.firstChild || domNode; // target node most unlikely to have a custom filter
- var origFilter = pingNode.style.filter; // save custom filter, most likely nothing
- while(parent && parent.clientHeight == 0){ // search for parents that haven't rendered yet
- parent._disconnectHandle = this.connect(parent, "onscroll", dojo.hitch(this, function(e){
- this.disconnect(parent._disconnectHandle); // only call once
- parent.removeAttribute("_disconnectHandle"); // clean up DOM node
- pingNode.style.filter = (new Date()).getMilliseconds(); // set to anything that's unique
- setTimeout(function(){ pingNode.style.filter = origFilter }, 0); // restore custom filter, if any
- }));
- parent = parent.parentNode;
- }
- }
- }
-});
-
-}
diff --git a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/form/_Spinner.js b/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/form/_Spinner.js
deleted file mode 100644
index e4d37b3..0000000
--- a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/form/_Spinner.js
+++ /dev/null
@@ -1,147 +0,0 @@
-/*
- Copyright (c) 2004-2009, The Dojo Foundation All Rights Reserved.
- Available via Academic Free License >= 2.1 OR the modified BSD license.
- see: http://dojotoolkit.org/license for details
-*/
-
-
-if(!dojo._hasResource["dijit.form._Spinner"]){ //_hasResource checks added by build. Do not use _hasResource directly in your code.
-dojo._hasResource["dijit.form._Spinner"] = true;
-dojo.provide("dijit.form._Spinner");
-
-dojo.require("dijit.form.ValidationTextBox");
-
-dojo.declare(
- "dijit.form._Spinner",
- dijit.form.RangeBoundTextBox,
- {
- // summary:
- // Mixin for validation widgets with a spinner.
- // description:
- // This class basically (conceptually) extends `dijit.form.ValidationTextBox`.
- // It modifies the template to have up/down arrows, and provides related handling code.
-
- // defaultTimeout: Number
- // Number of milliseconds before a held arrow key or up/down button becomes typematic
- defaultTimeout: 500,
-
- // timeoutChangeRate: Number
- // Fraction of time used to change the typematic timer between events.
- // 1.0 means that each typematic event fires at defaultTimeout intervals.
- // < 1.0 means that each typematic event fires at an increasing faster rate.
- timeoutChangeRate: 0.90,
-
- // smallDelta: Number
- // Adjust the value by this much when spinning using the arrow keys/buttons
- smallDelta: 1,
-
- // largeDelta: Number
- // Adjust the value by this much when spinning using the PgUp/Dn keys
- largeDelta: 10,
-
- templateString: dojo.cache("dijit.form", "templates/Spinner.html", "<div class=\"dijit dijitReset dijitInlineTable dijitLeft\"\n\tid=\"widget_${id}\"\n\tdojoAttachEvent=\"onmouseenter:_onMouse,onmouseleave:_onMouse,onmousedown:_onMouse\" waiRole=\"presentation\"\n\t><div class=\"dijitInputLayoutContainer\"\n\t\t><div class=\"dijitReset dijitSpinnerButtonContainer\"\n\t\t\t> <div class=\"dijitReset dijitLeft dijitButtonNode dijitArrowButton dijitUpArrowButton\"\n\t\t\t\tdojoAttachPoint=\"upArrowNode\"\n\t\t\t\tdojoAttachEvent=\"onmouseenter:_onMouse,onmouseleave:_onMouse\"\n\t\t\t\tstateModifier=\"UpArrow\"\n\t\t\t\t><div class=\"dijitArrowButtonInner\"> </div\n\t\t\t\t><div class=\"dijitArrowButtonChar\">▲</div\n\t\t\t></div\n\t\t\t><div class=\"dijitReset dijitLeft dijitButtonNode dijitArrowButton dijitDownArrowButton\"\n\t\t\t\tdojoAttachPoint=\"downArrowNode\"\n\t\t\t\tdojoAttachEvent=\"onmouseenter:_onMouse,onmouseleave:_onMouse\"\n\t\t\t\tstateModifier=\"DownArrow\"\n\t\t\t\t><div class=\"dijitArrowButtonInner\"> </div\n\t\t\t\t><div class=\"dijitArrowButtonChar\">▼</div\n\t\t\t></div\n\t\t></div\n\t\t><div class=\"dijitReset dijitValidationIcon\"><br></div\n\t\t><div class=\"dijitReset dijitValidationIconText\">Χ</div\n\t\t><div class=\"dijitReset dijitInputField\"\n\t\t\t><input class='dijitReset' dojoAttachPoint=\"textbox,focusNode\" type=\"${type}\" dojoAttachEvent=\"onkeypress:_onKeyPress\"\n\t\t\t\twaiRole=\"spinbutton\" autocomplete=\"off\" ${nameAttrSetting}\n\t\t/></div\n\t></div\n></div>\n"),
- baseClass: "dijitSpinner",
-
- adjust: function(/* Object */ val, /*Number*/ delta){
- // summary:
- // Overridable function used to adjust a primitive value(Number/Date/...) by the delta amount specified.
- // The val is adjusted in a way that makes sense to the object type.
- // tags:
- // protected extension
- return val;
- },
-
- _arrowState: function(/*Node*/ node, /*Boolean*/ pressed){
- // summary:
- // Called when an arrow key is pressed to update the relevant CSS classes
- this._active = pressed;
- this.stateModifier = node.getAttribute("stateModifier") || "";
- this._setStateClass();
- },
-
- _arrowPressed: function(/*Node*/ nodePressed, /*Number*/ direction, /*Number*/ increment){
- // summary:
- // Handler for arrow button or arrow key being pressed
- if(this.disabled || this.readOnly){ return; }
- this._arrowState(nodePressed, true);
- this._setValueAttr(this.adjust(this.attr('value'), direction*increment), false);
- dijit.selectInputText(this.textbox, this.textbox.value.length);
- },
-
- _arrowReleased: function(/*Node*/ node){
- // summary:
- // Handler for arrow button or arrow key being released
- this._wheelTimer = null;
- if(this.disabled || this.readOnly){ return; }
- this._arrowState(node, false);
- },
-
- _typematicCallback: function(/*Number*/ count, /*DOMNode*/ node, /*Event*/ evt){
- var inc=this.smallDelta;
- if(node == this.textbox){
- var k=dojo.keys;
- var key = evt.charOrCode;
- inc = (key == k.PAGE_UP || key == k.PAGE_DOWN) ? this.largeDelta : this.smallDelta;
- node = (key == k.UP_ARROW || key == k.PAGE_UP) ? this.upArrowNode : this.downArrowNode;
- }
- if(count == -1){ this._arrowReleased(node); }
- else{ this._arrowPressed(node, (node == this.upArrowNode) ? 1 : -1, inc); }
- },
-
- _wheelTimer: null,
- _mouseWheeled: function(/*Event*/ evt){
- // summary:
- // Mouse wheel listener where supported
-
- dojo.stopEvent(evt);
- // FIXME: Safari bubbles
-
- // be nice to DOH and scroll as much as the event says to
- var scrollAmount = evt.detail ? (evt.detail * -1) : (evt.wheelDelta / 120);
- if(scrollAmount !== 0){
- var node = this[(scrollAmount > 0 ? "upArrowNode" : "downArrowNode" )];
-
- this._arrowPressed(node, scrollAmount, this.smallDelta);
-
- if(!this._wheelTimer){
- clearTimeout(this._wheelTimer);
- }
- this._wheelTimer = setTimeout(dojo.hitch(this,"_arrowReleased",node), 50);
- }
-
- },
-
- postCreate: function(){
- this.inherited(arguments);
-
- // extra listeners
- this.connect(this.domNode, !dojo.isMozilla ? "onmousewheel" : 'DOMMouseScroll', "_mouseWheeled");
- this._connects.push(dijit.typematic.addListener(this.upArrowNode, this.textbox, {charOrCode:dojo.keys.UP_ARROW,ctrlKey:false,altKey:false,shiftKey:false,metaKey:false}, this, "_typematicCallback", this.timeoutChangeRate, this.defaultTimeout));
- this._connects.push(dijit.typematic.addListener(this.downArrowNode, this.textbox, {charOrCode:dojo.keys.DOWN_ARROW,ctrlKey:false,altKey:false,shiftKey:false,metaKey:false}, this, "_typematicCallback", this.timeoutChangeRate, this.defaultTimeout));
- this._connects.push(dijit.typematic.addListener(this.upArrowNode, this.textbox, {charOrCode:dojo.keys.PAGE_UP,ctrlKey:false,altKey:false,shiftKey:false,metaKey:false}, this, "_typematicCallback", this.timeoutChangeRate, this.defaultTimeout));
- this._connects.push(dijit.typematic.addListener(this.downArrowNode, this.textbox, {charOrCode:dojo.keys.PAGE_DOWN,ctrlKey:false,altKey:false,shiftKey:false,metaKey:false}, this, "_typematicCallback", this.timeoutChangeRate, this.defaultTimeout));
- if(dojo.isIE){
- var _this = this;
- (function resize(){
- var sz = _this.upArrowNode.parentNode.offsetHeight;
- if(sz){
- _this.upArrowNode.style.height = sz >> 1;
- _this.downArrowNode.style.height = sz - (sz >> 1);
- _this.focusNode.parentNode.style.height = sz;
- }
- })();
- this.connect(this.domNode, "onresize",
- function(){ setTimeout(
- function(){
- resize();
- // cause IE to rerender when spinner is moved from hidden to visible
- _this._setStateClass();
- }, 0);
- }
- );
- this._layoutHackIE7();
- }
- }
-});
-
-}
diff --git a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/form/nls/ComboBox.js b/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/form/nls/ComboBox.js
deleted file mode 100644
index 49bba39..0000000
--- a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/form/nls/ComboBox.js
+++ /dev/null
@@ -1 +0,0 @@
-({"previousMessage":"Previous choices","nextMessage":"More choices"})
\ No newline at end of file
diff --git a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/form/nls/Textarea.js b/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/form/nls/Textarea.js
deleted file mode 100644
index 4b0e996..0000000
--- a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/form/nls/Textarea.js
+++ /dev/null
@@ -1 +0,0 @@
-({"iframeEditTitle":"edit area","iframeFocusTitle":"edit area frame"})
\ No newline at end of file
diff --git a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/form/nls/ar/ComboBox.js b/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/form/nls/ar/ComboBox.js
deleted file mode 100644
index 6a84531..0000000
--- a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/form/nls/ar/ComboBox.js
+++ /dev/null
@@ -1 +0,0 @@
-({"previousMessage":"الاختيارات السابقة","nextMessage":"مزيد من الاختيارات"})
\ No newline at end of file
diff --git a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/form/nls/ar/Textarea.js b/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/form/nls/ar/Textarea.js
deleted file mode 100644
index fe623c6..0000000
--- a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/form/nls/ar/Textarea.js
+++ /dev/null
@@ -1 +0,0 @@
-({"iframeEditTitle":"مساحة التحرير","iframeFocusTitle":"اطار مساحة التحرير"})
\ No newline at end of file
diff --git a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/form/nls/ar/validate.js b/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/form/nls/ar/validate.js
deleted file mode 100644
index 615e56b..0000000
--- a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/form/nls/ar/validate.js
+++ /dev/null
@@ -1 +0,0 @@
-({"rangeMessage":"هذه القيمة ليس بالمدى الصحيح.","invalidMessage":"القيمة التي تم ادخالها غير صحيحة.","missingMessage":"يجب ادخال هذه القيمة."})
\ No newline at end of file
diff --git a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/form/nls/ca/ComboBox.js b/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/form/nls/ca/ComboBox.js
deleted file mode 100644
index 1a37868..0000000
--- a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/form/nls/ca/ComboBox.js
+++ /dev/null
@@ -1 +0,0 @@
-({"previousMessage":"Opcions anteriors","nextMessage":"Més opcions"})
\ No newline at end of file
diff --git a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/form/nls/ca/Textarea.js b/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/form/nls/ca/Textarea.js
deleted file mode 100644
index 357f923..0000000
--- a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/form/nls/ca/Textarea.js
+++ /dev/null
@@ -1 +0,0 @@
-({"iframeEditTitle":"àrea d'edició","iframeFocusTitle":"Marc de l'àrea d'edició"})
\ No newline at end of file
diff --git a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/form/nls/ca/validate.js b/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/form/nls/ca/validate.js
deleted file mode 100644
index a0a592e..0000000
--- a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/form/nls/ca/validate.js
+++ /dev/null
@@ -1 +0,0 @@
-({"rangeMessage":"Aquest valor és fora de l'interval","invalidMessage":"El valor introduït no és vàlid","missingMessage":"Aquest valor és necessari"})
\ No newline at end of file
diff --git a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/form/nls/cs/ComboBox.js b/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/form/nls/cs/ComboBox.js
deleted file mode 100644
index 84e0841..0000000
--- a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/form/nls/cs/ComboBox.js
+++ /dev/null
@@ -1 +0,0 @@
-({"previousMessage":"Předchozí volby","nextMessage":"Další volby"})
\ No newline at end of file
diff --git a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/form/nls/cs/Textarea.js b/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/form/nls/cs/Textarea.js
deleted file mode 100644
index 8a75ddc..0000000
--- a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/form/nls/cs/Textarea.js
+++ /dev/null
@@ -1 +0,0 @@
-({"iframeEditTitle":"oblast úprav","iframeFocusTitle":"rámec oblasti úprav"})
\ No newline at end of file
diff --git a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/form/nls/cs/validate.js b/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/form/nls/cs/validate.js
deleted file mode 100644
index 7bb7b9e..0000000
--- a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/form/nls/cs/validate.js
+++ /dev/null
@@ -1 +0,0 @@
-({"rangeMessage":"Tato hodnota je mimo rozsah.","invalidMessage":"Zadaná hodnota není platná.","missingMessage":"Tato hodnota je vyžadována."})
\ No newline at end of file
diff --git a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/form/nls/da/ComboBox.js b/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/form/nls/da/ComboBox.js
deleted file mode 100644
index 4ddc10d..0000000
--- a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/form/nls/da/ComboBox.js
+++ /dev/null
@@ -1 +0,0 @@
-({"previousMessage":"Forrige valg","nextMessage":"Flere valg"})
\ No newline at end of file
diff --git a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/form/nls/da/Textarea.js b/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/form/nls/da/Textarea.js
deleted file mode 100644
index 244c210..0000000
--- a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/form/nls/da/Textarea.js
+++ /dev/null
@@ -1 +0,0 @@
-({"iframeEditTitle":"redigeringsområde","iframeFocusTitle":"ramme om redigeringsområde"})
\ No newline at end of file
diff --git a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/form/nls/da/validate.js b/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/form/nls/da/validate.js
deleted file mode 100644
index 2874dd8..0000000
--- a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/form/nls/da/validate.js
+++ /dev/null
@@ -1 +0,0 @@
-({"rangeMessage":"Værdien er uden for intervallet.","invalidMessage":"Den angivne værdi er ugyldig.","missingMessage":"Værdien er påkrævet."})
\ No newline at end of file
diff --git a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/form/nls/de/ComboBox.js b/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/form/nls/de/ComboBox.js
deleted file mode 100644
index 6cce34b..0000000
--- a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/form/nls/de/ComboBox.js
+++ /dev/null
@@ -1 +0,0 @@
-({"previousMessage":"Vorherige Auswahl","nextMessage":"Weitere Auswahlmöglichkeiten"})
\ No newline at end of file
diff --git a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/form/nls/de/Textarea.js b/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/form/nls/de/Textarea.js
deleted file mode 100644
index 2cf75db..0000000
--- a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/form/nls/de/Textarea.js
+++ /dev/null
@@ -1 +0,0 @@
-({"iframeEditTitle":"Editierbereich","iframeFocusTitle":"Rahmen für Editierbereich"})
\ No newline at end of file
diff --git a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/form/nls/de/validate.js b/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/form/nls/de/validate.js
deleted file mode 100644
index 597796d..0000000
--- a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/form/nls/de/validate.js
+++ /dev/null
@@ -1 +0,0 @@
-({"rangeMessage":"Dieser Wert liegt außerhalb des gültigen Bereichs. ","invalidMessage":"Der eingegebene Wert ist ungültig. ","missingMessage":"Dieser Wert ist erforderlich."})
\ No newline at end of file
diff --git a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/form/nls/el/ComboBox.js b/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/form/nls/el/ComboBox.js
deleted file mode 100644
index ec294d1..0000000
--- a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/form/nls/el/ComboBox.js
+++ /dev/null
@@ -1 +0,0 @@
-({"previousMessage":"Προηγούμενες επιλογές","nextMessage":"Περισσότερες επιλογές"})
\ No newline at end of file
diff --git a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/form/nls/el/Textarea.js b/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/form/nls/el/Textarea.js
deleted file mode 100644
index 9ce37a9..0000000
--- a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/form/nls/el/Textarea.js
+++ /dev/null
@@ -1 +0,0 @@
-({"iframeEditTitle":"περιοχή επεξεργασίας","iframeFocusTitle":"πλαίσιο περιοχής επεξεργασίας"})
\ No newline at end of file
diff --git a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/form/nls/el/validate.js b/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/form/nls/el/validate.js
deleted file mode 100644
index cc57d55..0000000
--- a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/form/nls/el/validate.js
+++ /dev/null
@@ -1 +0,0 @@
-({"rangeMessage":"Η τιμή αυτή δεν ανήκει στο εύρος έγκυρων τιμών.","invalidMessage":"Η τιμή που καταχωρήσατε δεν είναι έγκυρη.","missingMessage":"Η τιμή αυτή πρέπει απαραίτητα να καθοριστεί."})
\ No newline at end of file
diff --git a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/form/nls/es/ComboBox.js b/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/form/nls/es/ComboBox.js
deleted file mode 100644
index 5bf69f9..0000000
--- a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/form/nls/es/ComboBox.js
+++ /dev/null
@@ -1 +0,0 @@
-({"previousMessage":"Opciones anteriores","nextMessage":"Más opciones"})
\ No newline at end of file
diff --git a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/form/nls/es/Textarea.js b/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/form/nls/es/Textarea.js
deleted file mode 100644
index f92a50f..0000000
--- a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/form/nls/es/Textarea.js
+++ /dev/null
@@ -1 +0,0 @@
-({"iframeEditTitle":"área de edición","iframeFocusTitle":"marco del área de edición"})
\ No newline at end of file
diff --git a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/form/nls/es/validate.js b/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/form/nls/es/validate.js
deleted file mode 100644
index 65e190e..0000000
--- a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/form/nls/es/validate.js
+++ /dev/null
@@ -1 +0,0 @@
-({"rangeMessage":"Este valor está fuera del intervalo.","invalidMessage":"El valor especificado no es válido.","missingMessage":"Este valor es necesario."})
\ No newline at end of file
diff --git a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/form/nls/fi/ComboBox.js b/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/form/nls/fi/ComboBox.js
deleted file mode 100644
index 6d9b830..0000000
--- a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/form/nls/fi/ComboBox.js
+++ /dev/null
@@ -1 +0,0 @@
-({"previousMessage":"Edelliset valinnat","nextMessage":"Lisää valintoja"})
\ No newline at end of file
diff --git a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/form/nls/fi/Textarea.js b/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/form/nls/fi/Textarea.js
deleted file mode 100644
index 5efaee9..0000000
--- a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/form/nls/fi/Textarea.js
+++ /dev/null
@@ -1 +0,0 @@
-({"iframeEditTitle":"muokkausalue","iframeFocusTitle":"muokkausalueen kehys"})
\ No newline at end of file
diff --git a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/form/nls/fi/validate.js b/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/form/nls/fi/validate.js
deleted file mode 100644
index 276efcd..0000000
--- a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/form/nls/fi/validate.js
+++ /dev/null
@@ -1 +0,0 @@
-({"rangeMessage":"Tämä arvo on sallitun alueen ulkopuolella.","invalidMessage":"Annettu arvo ei kelpaa.","missingMessage":"Tämä arvo on pakollinen."})
\ No newline at end of file
diff --git a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/form/nls/fr/ComboBox.js b/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/form/nls/fr/ComboBox.js
deleted file mode 100644
index 14b3976..0000000
--- a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/form/nls/fr/ComboBox.js
+++ /dev/null
@@ -1 +0,0 @@
-({"previousMessage":"Choix précédents","nextMessage":"Plus de choix"})
\ No newline at end of file
diff --git a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/form/nls/fr/Textarea.js b/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/form/nls/fr/Textarea.js
deleted file mode 100644
index 4abb6c3..0000000
--- a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/form/nls/fr/Textarea.js
+++ /dev/null
@@ -1 +0,0 @@
-({"iframeEditTitle":"zone d'édition","iframeFocusTitle":"cadre de la zone d'édition"})
\ No newline at end of file
diff --git a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/form/nls/fr/validate.js b/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/form/nls/fr/validate.js
deleted file mode 100644
index 95a0169..0000000
--- a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/form/nls/fr/validate.js
+++ /dev/null
@@ -1 +0,0 @@
-({"rangeMessage":"Cette valeur n'est pas comprise dans la plage autorisée.","invalidMessage":"La valeur indiquée n'est pas correcte.","missingMessage":"Cette valeur est requise."})
\ No newline at end of file
diff --git a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/form/nls/he/ComboBox.js b/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/form/nls/he/ComboBox.js
deleted file mode 100644
index 169d0f5..0000000
--- a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/form/nls/he/ComboBox.js
+++ /dev/null
@@ -1 +0,0 @@
-({"previousMessage":"האפשרויות הקודמות","nextMessage":"אפשרויות נוספות"})
\ No newline at end of file
diff --git a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/form/nls/he/Textarea.js b/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/form/nls/he/Textarea.js
deleted file mode 100644
index 809eadf..0000000
--- a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/form/nls/he/Textarea.js
+++ /dev/null
@@ -1 +0,0 @@
-({"iframeEditTitle":"אזור עריכה","iframeFocusTitle":"מסגרת אזור עריכה"})
\ No newline at end of file
diff --git a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/form/nls/he/validate.js b/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/form/nls/he/validate.js
deleted file mode 100644
index 3d778e2..0000000
--- a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/form/nls/he/validate.js
+++ /dev/null
@@ -1 +0,0 @@
-({"rangeMessage":"הערך מחוץ לטווח.","invalidMessage":"הערך שצוין אינו חוקי.","missingMessage":"זהו ערך דרוש."})
\ No newline at end of file
diff --git a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/form/nls/hu/ComboBox.js b/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/form/nls/hu/ComboBox.js
deleted file mode 100644
index 4b6a620..0000000
--- a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/form/nls/hu/ComboBox.js
+++ /dev/null
@@ -1 +0,0 @@
-({"previousMessage":"Előző menüpontok","nextMessage":"További menüpontok"})
\ No newline at end of file
diff --git a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/form/nls/hu/Textarea.js b/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/form/nls/hu/Textarea.js
deleted file mode 100644
index 9b4ca01..0000000
--- a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/form/nls/hu/Textarea.js
+++ /dev/null
@@ -1 +0,0 @@
-({"iframeEditTitle":"szerkesztési terület","iframeFocusTitle":"szerkesztési terület keret"})
\ No newline at end of file
diff --git a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/form/nls/hu/validate.js b/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/form/nls/hu/validate.js
deleted file mode 100644
index b6d7996..0000000
--- a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/form/nls/hu/validate.js
+++ /dev/null
@@ -1 +0,0 @@
-({"rangeMessage":"Az érték kívül van a megengedett tartományon.","invalidMessage":"A megadott érték érvénytelen.","missingMessage":"Meg kell adni egy értéket."})
\ No newline at end of file
diff --git a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/form/nls/it/ComboBox.js b/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/form/nls/it/ComboBox.js
deleted file mode 100644
index 9f67072..0000000
--- a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/form/nls/it/ComboBox.js
+++ /dev/null
@@ -1 +0,0 @@
-({"previousMessage":"Scelte precedenti","nextMessage":"Altre scelte"})
\ No newline at end of file
diff --git a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/form/nls/it/Textarea.js b/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/form/nls/it/Textarea.js
deleted file mode 100644
index 1b14ecc..0000000
--- a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/form/nls/it/Textarea.js
+++ /dev/null
@@ -1 +0,0 @@
-({"iframeEditTitle":"modifica area","iframeFocusTitle":"modifica frame area"})
\ No newline at end of file
diff --git a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/form/nls/it/validate.js b/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/form/nls/it/validate.js
deleted file mode 100644
index af7227f..0000000
--- a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/form/nls/it/validate.js
+++ /dev/null
@@ -1 +0,0 @@
-({"rangeMessage":"Questo valore non è compreso nell'intervallo.","invalidMessage":"Il valore immesso non è valido.","missingMessage":"Questo valore è obbligatorio."})
\ No newline at end of file
diff --git a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/form/nls/ja/ComboBox.js b/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/form/nls/ja/ComboBox.js
deleted file mode 100644
index 6b34170..0000000
--- a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/form/nls/ja/ComboBox.js
+++ /dev/null
@@ -1 +0,0 @@
-({"previousMessage":"以前の選択項目","nextMessage":"追加の選択項目"})
\ No newline at end of file
diff --git a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/form/nls/ja/Textarea.js b/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/form/nls/ja/Textarea.js
deleted file mode 100644
index 8a52f4a..0000000
--- a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/form/nls/ja/Textarea.js
+++ /dev/null
@@ -1 +0,0 @@
-({"iframeEditTitle":"編集域","iframeFocusTitle":"編集域フレーム"})
\ No newline at end of file
diff --git a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/form/nls/ja/validate.js b/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/form/nls/ja/validate.js
deleted file mode 100644
index 450cd7e..0000000
--- a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/form/nls/ja/validate.js
+++ /dev/null
@@ -1 +0,0 @@
-({"rangeMessage":"この値は範囲外です。","invalidMessage":"入力した値は無効です。","missingMessage":"この値は必須です。"})
\ No newline at end of file
diff --git a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/form/nls/ko/ComboBox.js b/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/form/nls/ko/ComboBox.js
deleted file mode 100644
index 87d0f06..0000000
--- a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/form/nls/ko/ComboBox.js
+++ /dev/null
@@ -1 +0,0 @@
-({"previousMessage":"이전 선택사항","nextMessage":"기타 선택사항"})
\ No newline at end of file
diff --git a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/form/nls/ko/Textarea.js b/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/form/nls/ko/Textarea.js
deleted file mode 100644
index 5c4e916..0000000
--- a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/form/nls/ko/Textarea.js
+++ /dev/null
@@ -1 +0,0 @@
-({"iframeEditTitle":"편집 영역","iframeFocusTitle":"편집 영역 프레임"})
\ No newline at end of file
diff --git a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/form/nls/ko/validate.js b/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/form/nls/ko/validate.js
deleted file mode 100644
index c76c676..0000000
--- a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/form/nls/ko/validate.js
+++ /dev/null
@@ -1 +0,0 @@
-({"rangeMessage":"이 값은 범위를 벗어납니다.","invalidMessage":"입력된 값이 올바르지 않습니다.","missingMessage":"이 값은 필수입니다."})
\ No newline at end of file
diff --git a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/form/nls/nb/ComboBox.js b/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/form/nls/nb/ComboBox.js
deleted file mode 100644
index de14554..0000000
--- a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/form/nls/nb/ComboBox.js
+++ /dev/null
@@ -1 +0,0 @@
-({"previousMessage":"Tidligere valg","nextMessage":"Flere valg"})
\ No newline at end of file
diff --git a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/form/nls/nb/Textarea.js b/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/form/nls/nb/Textarea.js
deleted file mode 100644
index 16fadf5..0000000
--- a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/form/nls/nb/Textarea.js
+++ /dev/null
@@ -1 +0,0 @@
-({"iframeEditTitle":"redigeringsområde","iframeFocusTitle":"ramme for redigeringsområde"})
\ No newline at end of file
diff --git a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/form/nls/nb/validate.js b/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/form/nls/nb/validate.js
deleted file mode 100644
index 2fe96f2..0000000
--- a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/form/nls/nb/validate.js
+++ /dev/null
@@ -1 +0,0 @@
-({"rangeMessage":"Denne verdien er utenfor gyldig område.","invalidMessage":"Den angitte verdien er ikke gyldig.","missingMessage":"Denne verdien er obligatorisk."})
\ No newline at end of file
diff --git a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/form/nls/nl/ComboBox.js b/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/form/nls/nl/ComboBox.js
deleted file mode 100644
index b5885d7..0000000
--- a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/form/nls/nl/ComboBox.js
+++ /dev/null
@@ -1 +0,0 @@
-({"previousMessage":"Eerdere opties","nextMessage":"Meer opties"})
\ No newline at end of file
diff --git a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/form/nls/nl/Textarea.js b/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/form/nls/nl/Textarea.js
deleted file mode 100644
index d13c3a6..0000000
--- a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/form/nls/nl/Textarea.js
+++ /dev/null
@@ -1 +0,0 @@
-({"iframeEditTitle":"veld bewerken","iframeFocusTitle":"veldkader bewerken"})
\ No newline at end of file
diff --git a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/form/nls/nl/validate.js b/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/form/nls/nl/validate.js
deleted file mode 100644
index b3062c1..0000000
--- a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/form/nls/nl/validate.js
+++ /dev/null
@@ -1 +0,0 @@
-({"rangeMessage":"Deze waarde is niet toegestaan.","invalidMessage":"De opgegeven waarde is ongeldig.","missingMessage":"Deze waarde is verplicht."})
\ No newline at end of file
diff --git a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/form/nls/pl/ComboBox.js b/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/form/nls/pl/ComboBox.js
deleted file mode 100644
index f2b4b08..0000000
--- a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/form/nls/pl/ComboBox.js
+++ /dev/null
@@ -1 +0,0 @@
-({"previousMessage":"Poprzednie wybory","nextMessage":"Więcej wyborów"})
\ No newline at end of file
diff --git a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/form/nls/pl/Textarea.js b/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/form/nls/pl/Textarea.js
deleted file mode 100644
index d918f59..0000000
--- a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/form/nls/pl/Textarea.js
+++ /dev/null
@@ -1 +0,0 @@
-({"iframeEditTitle":"Obszar edycji","iframeFocusTitle":"Ramka obszaru edycji"})
\ No newline at end of file
diff --git a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/form/nls/pl/validate.js b/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/form/nls/pl/validate.js
deleted file mode 100644
index cf05d2f..0000000
--- a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/form/nls/pl/validate.js
+++ /dev/null
@@ -1 +0,0 @@
-({"rangeMessage":"Ta wartość jest spoza zakresu.","invalidMessage":"Wprowadzona wartość jest niepoprawna.","missingMessage":"Ta wartość jest wymagana."})
\ No newline at end of file
diff --git a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/form/nls/pt-pt/ComboBox.js b/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/form/nls/pt-pt/ComboBox.js
deleted file mode 100644
index 2540542..0000000
--- a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/form/nls/pt-pt/ComboBox.js
+++ /dev/null
@@ -1 +0,0 @@
-({"previousMessage":"Opções anteriores","nextMessage":"Mais opções"})
\ No newline at end of file
diff --git a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/form/nls/pt-pt/Textarea.js b/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/form/nls/pt-pt/Textarea.js
deleted file mode 100644
index bcd75e7..0000000
--- a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/form/nls/pt-pt/Textarea.js
+++ /dev/null
@@ -1 +0,0 @@
-({"iframeEditTitle":"área de edição","iframeFocusTitle":"painel da área de edição"})
\ No newline at end of file
diff --git a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/form/nls/pt-pt/validate.js b/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/form/nls/pt-pt/validate.js
deleted file mode 100644
index 3d92170..0000000
--- a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/form/nls/pt-pt/validate.js
+++ /dev/null
@@ -1 +0,0 @@
-({"rangeMessage":"Este valor encontra-se fora do intervalo.","invalidMessage":"O valor introduzido não é válido.","missingMessage":"Este valor é requerido."})
\ No newline at end of file
diff --git a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/form/nls/pt/ComboBox.js b/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/form/nls/pt/ComboBox.js
deleted file mode 100644
index 2540542..0000000
--- a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/form/nls/pt/ComboBox.js
+++ /dev/null
@@ -1 +0,0 @@
-({"previousMessage":"Opções anteriores","nextMessage":"Mais opções"})
\ No newline at end of file
diff --git a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/form/nls/pt/Textarea.js b/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/form/nls/pt/Textarea.js
deleted file mode 100644
index b4a0b0f..0000000
--- a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/form/nls/pt/Textarea.js
+++ /dev/null
@@ -1 +0,0 @@
-({"iframeEditTitle":"editar área","iframeFocusTitle":"editar quadro da área"})
\ No newline at end of file
diff --git a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/form/nls/pt/validate.js b/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/form/nls/pt/validate.js
deleted file mode 100644
index 3b43579..0000000
--- a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/form/nls/pt/validate.js
+++ /dev/null
@@ -1 +0,0 @@
-({"rangeMessage":"Este valor está fora do intervalo. ","invalidMessage":"O valor inserido não é válido.","missingMessage":"Este valor é necessário."})
\ No newline at end of file
diff --git a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/form/nls/ru/ComboBox.js b/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/form/nls/ru/ComboBox.js
deleted file mode 100644
index 193f4ee..0000000
--- a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/form/nls/ru/ComboBox.js
+++ /dev/null
@@ -1 +0,0 @@
-({"previousMessage":"Предыдущие варианты","nextMessage":"Следующие варианты"})
\ No newline at end of file
diff --git a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/form/nls/ru/Textarea.js b/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/form/nls/ru/Textarea.js
deleted file mode 100644
index ad7ad22..0000000
--- a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/form/nls/ru/Textarea.js
+++ /dev/null
@@ -1 +0,0 @@
-({"iframeEditTitle":"область редактирования","iframeFocusTitle":"фрейм области редактирования"})
\ No newline at end of file
diff --git a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/form/nls/ru/validate.js b/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/form/nls/ru/validate.js
deleted file mode 100644
index 35fb5ca..0000000
--- a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/form/nls/ru/validate.js
+++ /dev/null
@@ -1 +0,0 @@
-({"rangeMessage":"Это значение вне диапазона.","invalidMessage":"Указано недопустимое значение.","missingMessage":"Это обязательное значение."})
\ No newline at end of file
diff --git a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/form/nls/sk/ComboBox.js b/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/form/nls/sk/ComboBox.js
deleted file mode 100644
index a45c7f2..0000000
--- a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/form/nls/sk/ComboBox.js
+++ /dev/null
@@ -1 +0,0 @@
-({"previousMessage":"Predchádzajúce voľby","nextMessage":"Ďalšie voľby"})
\ No newline at end of file
diff --git a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/form/nls/sk/Textarea.js b/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/form/nls/sk/Textarea.js
deleted file mode 100644
index 3ee98c3..0000000
--- a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/form/nls/sk/Textarea.js
+++ /dev/null
@@ -1 +0,0 @@
-({"iframeEditTitle":"upraviť oblasť","iframeFocusTitle":"upraviť rám oblasti"})
\ No newline at end of file
diff --git a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/form/nls/sk/validate.js b/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/form/nls/sk/validate.js
deleted file mode 100644
index 612dab5..0000000
--- a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/form/nls/sk/validate.js
+++ /dev/null
@@ -1 +0,0 @@
-({"rangeMessage":"Táto hodnota je mimo rozsah.","invalidMessage":"Zadaná hodnota nie je platná.","missingMessage":"Táto hodnota je vyžadovaná."})
\ No newline at end of file
diff --git a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/form/nls/sl/ComboBox.js b/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/form/nls/sl/ComboBox.js
deleted file mode 100644
index e955688..0000000
--- a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/form/nls/sl/ComboBox.js
+++ /dev/null
@@ -1 +0,0 @@
-({"previousMessage":"Prejšnje možnosti","nextMessage":"Dodatne možnosti"})
\ No newline at end of file
diff --git a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/form/nls/sl/Textarea.js b/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/form/nls/sl/Textarea.js
deleted file mode 100644
index 912ee39..0000000
--- a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/form/nls/sl/Textarea.js
+++ /dev/null
@@ -1 +0,0 @@
-({"iframeEditTitle":"urejanje področja","iframeFocusTitle":"urejanje področja okvirja"})
\ No newline at end of file
diff --git a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/form/nls/sl/validate.js b/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/form/nls/sl/validate.js
deleted file mode 100644
index 7635724..0000000
--- a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/form/nls/sl/validate.js
+++ /dev/null
@@ -1 +0,0 @@
-({"rangeMessage":"Ta vrednost je zunaj obsega. ","invalidMessage":"Vnesena vrednost ni veljavna.","missingMessage":"Ta vrednost je zahtevana."})
\ No newline at end of file
diff --git a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/form/nls/sv/ComboBox.js b/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/form/nls/sv/ComboBox.js
deleted file mode 100644
index 860bf75..0000000
--- a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/form/nls/sv/ComboBox.js
+++ /dev/null
@@ -1 +0,0 @@
-({"previousMessage":"Föregående alternativ","nextMessage":"Fler alternativ"})
\ No newline at end of file
diff --git a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/form/nls/sv/Textarea.js b/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/form/nls/sv/Textarea.js
deleted file mode 100644
index 9e508ac..0000000
--- a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/form/nls/sv/Textarea.js
+++ /dev/null
@@ -1 +0,0 @@
-({"iframeEditTitle":"redigeringsområde","iframeFocusTitle":"redigeringsområdesram"})
\ No newline at end of file
diff --git a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/form/nls/sv/validate.js b/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/form/nls/sv/validate.js
deleted file mode 100644
index 8c1b537..0000000
--- a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/form/nls/sv/validate.js
+++ /dev/null
@@ -1 +0,0 @@
-({"rangeMessage":"Värdet är utanför intervallet.","invalidMessage":"Det angivna värdet är ogiltigt.","missingMessage":"Värdet är obligatoriskt."})
\ No newline at end of file
diff --git a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/form/nls/th/ComboBox.js b/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/form/nls/th/ComboBox.js
deleted file mode 100644
index ff32a4f..0000000
--- a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/form/nls/th/ComboBox.js
+++ /dev/null
@@ -1 +0,0 @@
-({"previousMessage":"การเลือกก่อนหน้า","nextMessage":"การเลือกเพิ่มเติม"})
\ No newline at end of file
diff --git a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/form/nls/th/Textarea.js b/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/form/nls/th/Textarea.js
deleted file mode 100644
index 4361183..0000000
--- a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/form/nls/th/Textarea.js
+++ /dev/null
@@ -1 +0,0 @@
-({"iframeEditTitle":"แก้ไขพื้นที่","iframeFocusTitle":"แก้ไขกรอบพื้นที่"})
\ No newline at end of file
diff --git a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/form/nls/th/validate.js b/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/form/nls/th/validate.js
deleted file mode 100644
index 86606b7..0000000
--- a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/form/nls/th/validate.js
+++ /dev/null
@@ -1 +0,0 @@
-({"rangeMessage":"ค่านี้เกินช่วง","invalidMessage":"ค่าที่ป้อนไม่ถูกต้อง","missingMessage":"จำเป็นต้องมีค่านี้"})
\ No newline at end of file
diff --git a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/form/nls/tr/ComboBox.js b/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/form/nls/tr/ComboBox.js
deleted file mode 100644
index 46f71dc..0000000
--- a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/form/nls/tr/ComboBox.js
+++ /dev/null
@@ -1 +0,0 @@
-({"previousMessage":"Önceki seçenekler","nextMessage":"Diğer seçenekler"})
\ No newline at end of file
diff --git a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/form/nls/tr/Textarea.js b/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/form/nls/tr/Textarea.js
deleted file mode 100644
index 3f2b5e7..0000000
--- a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/form/nls/tr/Textarea.js
+++ /dev/null
@@ -1 +0,0 @@
-({"iframeEditTitle":"düzenleme alanı","iframeFocusTitle":"düzenleme alanı çerçevesi"})
\ No newline at end of file
diff --git a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/form/nls/tr/validate.js b/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/form/nls/tr/validate.js
deleted file mode 100644
index 838dbda..0000000
--- a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/form/nls/tr/validate.js
+++ /dev/null
@@ -1 +0,0 @@
-({"rangeMessage":"Bu değer aralık dışında.","invalidMessage":"Girilen değer geçersiz.","missingMessage":"Bu değer gerekli."})
\ No newline at end of file
diff --git a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/form/nls/validate.js b/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/form/nls/validate.js
deleted file mode 100644
index 29a1a47..0000000
--- a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/form/nls/validate.js
+++ /dev/null
@@ -1 +0,0 @@
-({"rangeMessage":"This value is out of range.","invalidMessage":"The value entered is not valid.","missingMessage":"This value is required."})
\ No newline at end of file
diff --git a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/form/nls/zh-tw/ComboBox.js b/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/form/nls/zh-tw/ComboBox.js
deleted file mode 100644
index ead5fa6..0000000
--- a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/form/nls/zh-tw/ComboBox.js
+++ /dev/null
@@ -1 +0,0 @@
-({"previousMessage":"前一個選擇項","nextMessage":"其他選擇項"})
\ No newline at end of file
diff --git a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/form/nls/zh-tw/Textarea.js b/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/form/nls/zh-tw/Textarea.js
deleted file mode 100644
index cb7abda..0000000
--- a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/form/nls/zh-tw/Textarea.js
+++ /dev/null
@@ -1 +0,0 @@
-({"iframeEditTitle":"編輯區","iframeFocusTitle":"編輯區框"})
\ No newline at end of file
diff --git a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/form/nls/zh-tw/validate.js b/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/form/nls/zh-tw/validate.js
deleted file mode 100644
index b398a31..0000000
--- a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/form/nls/zh-tw/validate.js
+++ /dev/null
@@ -1 +0,0 @@
-({"rangeMessage":"此值超出範圍。","invalidMessage":"輸入的值無效。","missingMessage":"必須提供此值。"})
\ No newline at end of file
diff --git a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/form/nls/zh/ComboBox.js b/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/form/nls/zh/ComboBox.js
deleted file mode 100644
index 7cc92cf..0000000
--- a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/form/nls/zh/ComboBox.js
+++ /dev/null
@@ -1 +0,0 @@
-({"previousMessage":"先前选项","nextMessage":"更多选项"})
\ No newline at end of file
diff --git a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/form/nls/zh/Textarea.js b/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/form/nls/zh/Textarea.js
deleted file mode 100644
index e1cf172..0000000
--- a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/form/nls/zh/Textarea.js
+++ /dev/null
@@ -1 +0,0 @@
-({"iframeEditTitle":"编辑区","iframeFocusTitle":"编辑区框架"})
\ No newline at end of file
diff --git a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/form/nls/zh/validate.js b/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/form/nls/zh/validate.js
deleted file mode 100644
index e2c01f5..0000000
--- a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/form/nls/zh/validate.js
+++ /dev/null
@@ -1 +0,0 @@
-({"rangeMessage":"此值超出范围。","invalidMessage":"输入的值无效。","missingMessage":"此值是必需值。"})
\ No newline at end of file
diff --git a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/layout/AccordionContainer.js b/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/layout/AccordionContainer.js
deleted file mode 100644
index 0e22a8f..0000000
--- a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/layout/AccordionContainer.js
+++ /dev/null
@@ -1,346 +0,0 @@
-/*
- Copyright (c) 2004-2009, The Dojo Foundation All Rights Reserved.
- Available via Academic Free License >= 2.1 OR the modified BSD license.
- see: http://dojotoolkit.org/license for details
-*/
-
-
-if(!dojo._hasResource["dijit.layout.AccordionContainer"]){ //_hasResource checks added by build. Do not use _hasResource directly in your code.
-dojo._hasResource["dijit.layout.AccordionContainer"] = true;
-dojo.provide("dijit.layout.AccordionContainer");
-
-dojo.require("dojo.fx");
-
-dojo.require("dijit._Container");
-dojo.require("dijit._Templated");
-dojo.require("dijit.layout.StackContainer");
-dojo.require("dijit.layout.ContentPane");
-
-dojo.require("dijit.layout.AccordionPane"); // for back compat, remove for 2.0
-
-dojo.declare(
- "dijit.layout.AccordionContainer",
- dijit.layout.StackContainer,
- {
- // summary:
- // Holds a set of panes where every pane's title is visible, but only one pane's content is visible at a time,
- // and switching between panes is visualized by sliding the other panes up/down.
- // example:
- // | <div dojoType="dijit.layout.AccordionContainer">
- // | <div dojoType="dijit.layout.ContentPane" title="pane 1">
- // | </div>
- // | <div dojoType="dijit.layout.ContentPane" title="pane 2">
- // | <p>This is some text</p>
- // | </div>
- // | </div>
-
- // duration: Integer
- // Amount of time (in ms) it takes to slide panes
- duration: dijit.defaultDuration,
-
- // buttonWidget: [const] String
- // The name of the widget used to display the title of each pane
- buttonWidget: "dijit.layout._AccordionButton",
-
- // _verticalSpace: Number
- // Pixels of space available for the open pane
- // (my content box size minus the cumulative size of all the title bars)
- _verticalSpace: 0,
-
- baseClass: "dijitAccordionContainer",
-
- postCreate: function(){
- this.domNode.style.overflow = "hidden";
- this.inherited(arguments);
- dijit.setWaiRole(this.domNode, "tablist");
- },
-
- startup: function(){
- if(this._started){ return; }
- this.inherited(arguments);
- if(this.selectedChildWidget){
- var style = this.selectedChildWidget.containerNode.style;
- style.display = "";
- style.overflow = "auto";
- this.selectedChildWidget._buttonWidget._setSelectedState(true);
- }
- },
-
- _getTargetHeight: function(/* Node */ node){
- // summary:
- // For the given node, returns the height that should be
- // set to achieve our vertical space (subtract any padding
- // we may have).
- //
- // This is used by the animations.
- //
- // TODO: I don't think this works correctly in IE quirks when an elements
- // style.height including padding and borders
- var cs = dojo.getComputedStyle(node);
- return Math.max(this._verticalSpace - dojo._getPadBorderExtents(node, cs).h, 0);
- },
-
- layout: function(){
- // Implement _LayoutWidget.layout() virtual method.
- // Set the height of the open pane based on what room remains.
-
- var openPane = this.selectedChildWidget;
-
- // get cumulative height of all the title bars
- var totalCollapsedHeight = 0;
- dojo.forEach(this.getChildren(), function(child){
- totalCollapsedHeight += child._buttonWidget.getTitleHeight();
- });
- var mySize = this._contentBox;
- this._verticalSpace = mySize.h - totalCollapsedHeight;
-
- // Memo size to make displayed child
- this._containerContentBox = {
- h: this._verticalSpace,
- w: mySize.w
- };
-
- if(openPane){
- openPane.resize(this._containerContentBox);
- }
- },
-
- _setupChild: function(child){
- // Overrides _LayoutWidget._setupChild().
- // Setup clickable title to sit above the child widget,
- // and stash pointer to it inside the widget itself.
-
- var cls = dojo.getObject(this.buttonWidget);
- var button = (child._buttonWidget = new cls({
- contentWidget: child,
- label: child.title,
- title: child.tooltip,
- iconClass: child.iconClass,
- id: child.id + "_button",
- parent: this
- }));
-
- child._accordionConnectHandle = this.connect(child, 'attr', function(name, value){
- if(arguments.length == 2){
- switch(name){
- case 'title':
- case 'iconClass':
- button.attr(name, value);
- }
- }
- });
-
- dojo.place(child._buttonWidget.domNode, child.domNode, "before");
-
- this.inherited(arguments);
- },
-
- removeChild: function(child){
- // Overrides _LayoutWidget.removeChild().
- this.disconnect(child._accordionConnectHandle);
- delete child._accordionConnectHandle;
-
- child._buttonWidget.destroy();
- delete child._buttonWidget;
-
- this.inherited(arguments);
- },
-
- getChildren: function(){
- // Overrides _Container.getChildren() to ignore titles and only look at panes.
- return dojo.filter(this.inherited(arguments), function(child){
- return child.declaredClass != this.buttonWidget;
- }, this);
- },
-
- destroy: function(){
- dojo.forEach(this.getChildren(), function(child){
- child._buttonWidget.destroy();
- });
- this.inherited(arguments);
- },
-
- _transition: function(/*Widget?*/newWidget, /*Widget?*/oldWidget){
- // Overrides StackContainer._transition() to provide sliding of title bars etc.
-
-//TODO: should be able to replace this with calls to slideIn/slideOut
- if(this._inTransition){ return; }
- this._inTransition = true;
- var animations = [];
- var paneHeight = this._verticalSpace;
- if(newWidget){
- newWidget._buttonWidget.setSelected(true);
-
- this._showChild(newWidget); // prepare widget to be slid in
-
- // Size the new widget, in case this is the first time it's being shown,
- // or I have been resized since the last time it was shown.
- // Note that page must be visible for resizing to work.
- if(this.doLayout && newWidget.resize){
- newWidget.resize(this._containerContentBox);
- }
-
- var newContents = newWidget.domNode;
- dojo.addClass(newContents, "dijitVisible");
- dojo.removeClass(newContents, "dijitHidden");
- var newContentsOverflow = newContents.style.overflow;
- newContents.style.overflow = "hidden";
- animations.push(dojo.animateProperty({
- node: newContents,
- duration: this.duration,
- properties: {
- height: { start: 1, end: this._getTargetHeight(newContents) }
- },
- onEnd: dojo.hitch(this, function(){
- newContents.style.overflow = newContentsOverflow;
- delete this._inTransition;
- })
- }));
- }
- if(oldWidget){
- oldWidget._buttonWidget.setSelected(false);
- var oldContents = oldWidget.domNode,
- oldContentsOverflow = oldContents.style.overflow;
- oldContents.style.overflow = "hidden";
- animations.push(dojo.animateProperty({
- node: oldContents,
- duration: this.duration,
- properties: {
- height: { start: this._getTargetHeight(oldContents), end: 1 }
- },
- onEnd: function(){
- dojo.addClass(oldContents, "dijitHidden");
- dojo.removeClass(oldContents, "dijitVisible");
- oldContents.style.overflow = oldContentsOverflow;
- if(oldWidget.onHide){
- oldWidget.onHide();
- }
- }
- }));
- }
-
- dojo.fx.combine(animations).play();
- },
-
- // note: we are treating the container as controller here
- _onKeyPress: function(/*Event*/ e, /*dijit._Widget*/ fromTitle){
- // summary:
- // Handle keypress events
- // description:
- // This is called from a handler on AccordionContainer.domNode
- // (setup in StackContainer), and is also called directly from
- // the click handler for accordion labels
- if(this._inTransition || this.disabled || e.altKey || !(fromTitle || e.ctrlKey)){
- if(this._inTransition){
- dojo.stopEvent(e);
- }
- return;
- }
- var k = dojo.keys,
- c = e.charOrCode;
- if((fromTitle && (c == k.LEFT_ARROW || c == k.UP_ARROW)) ||
- (e.ctrlKey && c == k.PAGE_UP)){
- this._adjacent(false)._buttonWidget._onTitleClick();
- dojo.stopEvent(e);
- }else if((fromTitle && (c == k.RIGHT_ARROW || c == k.DOWN_ARROW)) ||
- (e.ctrlKey && (c == k.PAGE_DOWN || c == k.TAB))){
- this._adjacent(true)._buttonWidget._onTitleClick();
- dojo.stopEvent(e);
- }
- }
- }
-);
-
-dojo.declare("dijit.layout._AccordionButton",
- [dijit._Widget, dijit._Templated],
- {
- // summary:
- // The title bar to click to open up an accordion pane.
- // Internal widget used by AccordionContainer.
- // tags:
- // private
-
- templateString: dojo.cache("dijit.layout", "templates/AccordionButton.html", "<div dojoAttachPoint='titleNode,focusNode' dojoAttachEvent='ondijitclick:_onTitleClick,onkeypress:_onTitleKeyPress,onfocus:_handleFocus,onblur:_handleFocus,onmouseenter:_onTitleEnter,onmouseleave:_onTitleLeave'\n\t\tclass='dijitAccordionTitle' wairole=\"tab\" waiState=\"expanded-false\"\n\t\t><span class='dijitInline dijitAccordionArrow' waiRole=\"presentation\"></span\n\t\t><span class='arrowTextUp' waiRole=\"presentation\">+</span\n\t\t><span class='arrowTextDown' waiRole=\"presentation\">-</span\n\t\t><img src=\"${_blankGif}\" alt=\"\" dojoAttachPoint='iconNode' style=\"vertical-align: middle\" waiRole=\"presentation\"/>\n\t\t<span waiRole=\"presentation\" dojoAttachPoint='titleTextNode' class='dijitAccordionText'></span>\n</div>\n"),
- attributeMap: dojo.mixin(dojo.clone(dijit.layout.ContentPane.prototype.attributeMap), {
- label: {node: "titleTextNode", type: "innerHTML" },
- title: {node: "titleTextNode", type: "attribute", attribute: "title"},
- iconClass: { node: "iconNode", type: "class" }
- }),
-
- baseClass: "dijitAccordionTitle",
-
- getParent: function(){
- // summary:
- // Returns the parent.
- // tags:
- // private
- return this.parent;
- },
-
- postCreate: function(){
- this.inherited(arguments);
- dojo.setSelectable(this.domNode, false);
- this.setSelected(this.selected);
- var titleTextNodeId = dojo.attr(this.domNode,'id').replace(' ','_');
- dojo.attr(this.titleTextNode, "id", titleTextNodeId+"_title");
- dijit.setWaiState(this.focusNode, "labelledby", dojo.attr(this.titleTextNode, "id"));
- },
-
- getTitleHeight: function(){
- // summary:
- // Returns the height of the title dom node.
- return dojo.marginBox(this.titleNode).h; // Integer
- },
-
- _onTitleClick: function(){
- // summary:
- // Callback when someone clicks my title.
- var parent = this.getParent();
- if(!parent._inTransition){
- parent.selectChild(this.contentWidget);
- dijit.focus(this.focusNode);
- }
- },
-
- _onTitleEnter: function(){
- // summary:
- // Callback when someone hovers over my title.
- dojo.addClass(this.focusNode, "dijitAccordionTitle-hover");
- },
-
- _onTitleLeave: function(){
- // summary:
- // Callback when someone stops hovering over my title.
- dojo.removeClass(this.focusNode, "dijitAccordionTitle-hover");
- },
-
- _onTitleKeyPress: function(/*Event*/ evt){
- return this.getParent()._onKeyPress(evt, this.contentWidget);
- },
-
- _setSelectedState: function(/*Boolean*/ isSelected){
- this.selected = isSelected;
- dojo[(isSelected ? "addClass" : "removeClass")](this.titleNode,"dijitAccordionTitle-selected");
- dijit.setWaiState(this.focusNode, "expanded", isSelected);
- dijit.setWaiState(this.focusNode, "selected", isSelected);
- this.focusNode.setAttribute("tabIndex", isSelected ? "0" : "-1");
- },
-
- _handleFocus: function(/*Event*/ e){
- // summary:
- // Handle the blur and focus state of this widget.
- dojo.toggleClass(this.titleTextNode, "dijitAccordionFocused", e.type == "focus");
- },
-
- setSelected: function(/*Boolean*/ isSelected){
- // summary:
- // Change the selected state on this pane.
- this._setSelectedState(isSelected);
- if(isSelected){
- var cw = this.contentWidget;
- if(cw.onSelected){ cw.onSelected(); }
- }
- }
-});
-
-}
diff --git a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/layout/AccordionPane.js b/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/layout/AccordionPane.js
deleted file mode 100644
index 1b88a3f..0000000
--- a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/layout/AccordionPane.js
+++ /dev/null
@@ -1,30 +0,0 @@
-/*
- Copyright (c) 2004-2009, The Dojo Foundation All Rights Reserved.
- Available via Academic Free License >= 2.1 OR the modified BSD license.
- see: http://dojotoolkit.org/license for details
-*/
-
-
-if(!dojo._hasResource["dijit.layout.AccordionPane"]){ //_hasResource checks added by build. Do not use _hasResource directly in your code.
-dojo._hasResource["dijit.layout.AccordionPane"] = true;
-dojo.provide("dijit.layout.AccordionPane");
-
-dojo.require("dijit.layout.ContentPane");
-
-dojo.declare("dijit.layout.AccordionPane", dijit.layout.ContentPane, {
- // summary:
- // Deprecated widget. Use `dijit.layout.ContentPane` instead.
- // tags:
- // deprecated
-
- constructor: function(){
- dojo.deprecated("dijit.layout.AccordionPane deprecated, use ContentPane instead", "", "2.0");
- },
-
- onSelected: function(){
- // summary:
- // called when this pane is selected
- }
-});
-
-}
diff --git a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/layout/BorderContainer.js b/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/layout/BorderContainer.js
deleted file mode 100644
index 5785f9b..0000000
--- a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/layout/BorderContainer.js
+++ /dev/null
@@ -1,648 +0,0 @@
-/*
- Copyright (c) 2004-2009, The Dojo Foundation All Rights Reserved.
- Available via Academic Free License >= 2.1 OR the modified BSD license.
- see: http://dojotoolkit.org/license for details
-*/
-
-
-if(!dojo._hasResource["dijit.layout.BorderContainer"]){ //_hasResource checks added by build. Do not use _hasResource directly in your code.
-dojo._hasResource["dijit.layout.BorderContainer"] = true;
-dojo.provide("dijit.layout.BorderContainer");
-
-dojo.require("dijit.layout._LayoutWidget");
-dojo.require("dojo.cookie");
-
-dojo.declare(
- "dijit.layout.BorderContainer",
- dijit.layout._LayoutWidget,
-{
- // summary:
- // Provides layout in up to 5 regions, a mandatory center with optional borders along its 4 sides.
- //
- // description:
- // A BorderContainer is a box with a specified size, such as style="width: 500px; height: 500px;",
- // that contains a child widget marked region="center" and optionally children widgets marked
- // region equal to "top", "bottom", "leading", "trailing", "left" or "right".
- // Children along the edges will be laid out according to width or height dimensions and may
- // include optional splitters (splitter="true") to make them resizable by the user. The remaining
- // space is designated for the center region.
- //
- // NOTE: Splitters must not be more than 50 pixels in width.
- //
- // The outer size must be specified on the BorderContainer node. Width must be specified for the sides
- // and height for the top and bottom, respectively. No dimensions should be specified on the center;
- // it will fill the remaining space. Regions named "leading" and "trailing" may be used just like
- // "left" and "right" except that they will be reversed in right-to-left environments.
- //
- // example:
- // | <div dojoType="dijit.layout.BorderContainer" design="sidebar" gutters="false"
- // | style="width: 400px; height: 300px;">
- // | <div dojoType="ContentPane" region="top">header text</div>
- // | <div dojoType="ContentPane" region="right" splitter="true" style="width: 200px;">table of contents</div>
- // | <div dojoType="ContentPane" region="center">client area</div>
- // | </div>
-
- // design: String
- // Which design is used for the layout:
- // - "headline" (default) where the top and bottom extend
- // the full width of the container
- // - "sidebar" where the left and right sides extend from top to bottom.
- design: "headline",
-
- // gutters: Boolean
- // Give each pane a border and margin.
- // Margin determined by domNode.paddingLeft.
- // When false, only resizable panes have a gutter (i.e. draggable splitter) for resizing.
- gutters: true,
-
- // liveSplitters: Boolean
- // Specifies whether splitters resize as you drag (true) or only upon mouseup (false)
- liveSplitters: true,
-
- // persist: Boolean
- // Save splitter positions in a cookie.
- persist: false,
-
- baseClass: "dijitBorderContainer",
-
- // _splitterClass: String
- // Optional hook to override the default Splitter widget used by BorderContainer
- _splitterClass: "dijit.layout._Splitter",
-
- postMixInProperties: function(){
- // change class name to indicate that BorderContainer is being used purely for
- // layout (like LayoutContainer) rather than for pretty formatting.
- if(!this.gutters){
- this.baseClass += "NoGutter";
- }
- this.inherited(arguments);
- },
-
- postCreate: function(){
- this.inherited(arguments);
-
- this._splitters = {};
- this._splitterThickness = {};
- },
-
- startup: function(){
- if(this._started){ return; }
- dojo.forEach(this.getChildren(), this._setupChild, this);
- this.inherited(arguments);
- },
-
- _setupChild: function(/*dijit._Widget*/ child){
- // Override _LayoutWidget._setupChild().
-
- var region = child.region;
- if(region){
- this.inherited(arguments);
-
- dojo.addClass(child.domNode, this.baseClass+"Pane");
-
- var ltr = this.isLeftToRight();
- if(region == "leading"){ region = ltr ? "left" : "right"; }
- if(region == "trailing"){ region = ltr ? "right" : "left"; }
-
- //FIXME: redundant?
- this["_"+region] = child.domNode;
- this["_"+region+"Widget"] = child;
-
- // Create draggable splitter for resizing pane,
- // or alternately if splitter=false but BorderContainer.gutters=true then
- // insert dummy div just for spacing
- if((child.splitter || this.gutters) && !this._splitters[region]){
- var _Splitter = dojo.getObject(child.splitter ? this._splitterClass : "dijit.layout._Gutter");
- var splitter = new _Splitter({
- container: this,
- child: child,
- region: region,
- live: this.liveSplitters
- });
- splitter.isSplitter = true;
- this._splitters[region] = splitter.domNode;
- dojo.place(this._splitters[region], child.domNode, "after");
-
- // Splitters arent added as Contained children, so we need to call startup explicitly
- splitter.startup();
- }
- child.region = region;
- }
- },
-
- _computeSplitterThickness: function(region){
- this._splitterThickness[region] = this._splitterThickness[region] ||
- dojo.marginBox(this._splitters[region])[(/top|bottom/.test(region) ? 'h' : 'w')];
- },
-
- layout: function(){
- // Implement _LayoutWidget.layout() virtual method.
- for(var region in this._splitters){ this._computeSplitterThickness(region); }
- this._layoutChildren();
- },
-
- addChild: function(/*dijit._Widget*/ child, /*Integer?*/ insertIndex){
- // Override _LayoutWidget.addChild().
- this.inherited(arguments);
- if(this._started){
- this.layout(); //OPT
- }
- },
-
- removeChild: function(/*dijit._Widget*/ child){
- // Override _LayoutWidget.removeChild().
- var region = child.region;
- var splitter = this._splitters[region];
- if(splitter){
- dijit.byNode(splitter).destroy();
- delete this._splitters[region];
- delete this._splitterThickness[region];
- }
- this.inherited(arguments);
- delete this["_"+region];
- delete this["_" +region+"Widget"];
- if(this._started){
- this._layoutChildren(child.region);
- }
- dojo.removeClass(child.domNode, this.baseClass+"Pane");
- },
-
- getChildren: function(){
- // Override _LayoutWidget.getChildren() to only return real children, not the splitters.
- return dojo.filter(this.inherited(arguments), function(widget){
- return !widget.isSplitter;
- });
- },
-
- getSplitter: function(/*String*/region){
- // summary:
- // Returns the widget responsible for rendering the splitter associated with region
- var splitter = this._splitters[region];
- return splitter ? dijit.byNode(splitter) : null;
- },
-
- resize: function(newSize, currentSize){
- // Overrides _LayoutWidget.resize().
-
- // resetting potential padding to 0px to provide support for 100% width/height + padding
- // TODO: this hack doesn't respect the box model and is a temporary fix
- if(!this.cs || !this.pe){
- var node = this.domNode;
- this.cs = dojo.getComputedStyle(node);
- this.pe = dojo._getPadExtents(node, this.cs);
- this.pe.r = dojo._toPixelValue(node, this.cs.paddingRight);
- this.pe.b = dojo._toPixelValue(node, this.cs.paddingBottom);
-
- dojo.style(node, "padding", "0px");
- }
-
- this.inherited(arguments);
- },
-
- _layoutChildren: function(/*String?*/changedRegion){
- // summary:
- // This is the main routine for setting size/position of each child
-
- if(!this._borderBox || !this._borderBox.h){
- // We are currently hidden, or we haven't been sized by our parent yet.
- // Abort. Someone will resize us later.
- return;
- }
-
- var sidebarLayout = (this.design == "sidebar");
- var topHeight = 0, bottomHeight = 0, leftWidth = 0, rightWidth = 0;
- var topStyle = {}, leftStyle = {}, rightStyle = {}, bottomStyle = {},
- centerStyle = (this._center && this._center.style) || {};
-
- var changedSide = /left|right/.test(changedRegion);
-
- var layoutSides = !changedRegion || (!changedSide && !sidebarLayout);
- var layoutTopBottom = !changedRegion || (changedSide && sidebarLayout);
-
- // Ask browser for width/height of side panes.
- // Would be nice to cache this but height can change according to width
- // (because words wrap around). I don't think width will ever change though
- // (except when the user drags a splitter).
- if(this._top){
- topStyle = layoutTopBottom && this._top.style;
- topHeight = dojo.marginBox(this._top).h;
- }
- if(this._left){
- leftStyle = layoutSides && this._left.style;
- leftWidth = dojo.marginBox(this._left).w;
- }
- if(this._right){
- rightStyle = layoutSides && this._right.style;
- rightWidth = dojo.marginBox(this._right).w;
- }
- if(this._bottom){
- bottomStyle = layoutTopBottom && this._bottom.style;
- bottomHeight = dojo.marginBox(this._bottom).h;
- }
-
- var splitters = this._splitters;
- var topSplitter = splitters.top, bottomSplitter = splitters.bottom,
- leftSplitter = splitters.left, rightSplitter = splitters.right;
- var splitterThickness = this._splitterThickness;
- var topSplitterThickness = splitterThickness.top || 0,
- leftSplitterThickness = splitterThickness.left || 0,
- rightSplitterThickness = splitterThickness.right || 0,
- bottomSplitterThickness = splitterThickness.bottom || 0;
-
- // Check for race condition where CSS hasn't finished loading, so
- // the splitter width == the viewport width (#5824)
- if(leftSplitterThickness > 50 || rightSplitterThickness > 50){
- setTimeout(dojo.hitch(this, function(){
- // Results are invalid. Clear them out.
- this._splitterThickness = {};
-
- for(var region in this._splitters){
- this._computeSplitterThickness(region);
- }
- this._layoutChildren();
- }), 50);
- return false;
- }
-
- var pe = this.pe;
-
- var splitterBounds = {
- left: (sidebarLayout ? leftWidth + leftSplitterThickness: 0) + pe.l + "px",
- right: (sidebarLayout ? rightWidth + rightSplitterThickness: 0) + pe.r + "px"
- };
-
- if(topSplitter){
- dojo.mixin(topSplitter.style, splitterBounds);
- topSplitter.style.top = topHeight + pe.t + "px";
- }
-
- if(bottomSplitter){
- dojo.mixin(bottomSplitter.style, splitterBounds);
- bottomSplitter.style.bottom = bottomHeight + pe.b + "px";
- }
-
- splitterBounds = {
- top: (sidebarLayout ? 0 : topHeight + topSplitterThickness) + pe.t + "px",
- bottom: (sidebarLayout ? 0 : bottomHeight + bottomSplitterThickness) + pe.b + "px"
- };
-
- if(leftSplitter){
- dojo.mixin(leftSplitter.style, splitterBounds);
- leftSplitter.style.left = leftWidth + pe.l + "px";
- }
-
- if(rightSplitter){
- dojo.mixin(rightSplitter.style, splitterBounds);
- rightSplitter.style.right = rightWidth + pe.r + "px";
- }
-
- dojo.mixin(centerStyle, {
- top: pe.t + topHeight + topSplitterThickness + "px",
- left: pe.l + leftWidth + leftSplitterThickness + "px",
- right: pe.r + rightWidth + rightSplitterThickness + "px",
- bottom: pe.b + bottomHeight + bottomSplitterThickness + "px"
- });
-
- var bounds = {
- top: sidebarLayout ? pe.t + "px" : centerStyle.top,
- bottom: sidebarLayout ? pe.b + "px" : centerStyle.bottom
- };
- dojo.mixin(leftStyle, bounds);
- dojo.mixin(rightStyle, bounds);
- leftStyle.left = pe.l + "px"; rightStyle.right = pe.r + "px"; topStyle.top = pe.t + "px"; bottomStyle.bottom = pe.b + "px";
- if(sidebarLayout){
- topStyle.left = bottomStyle.left = leftWidth + leftSplitterThickness + pe.l + "px";
- topStyle.right = bottomStyle.right = rightWidth + rightSplitterThickness + pe.r + "px";
- }else{
- topStyle.left = bottomStyle.left = pe.l + "px";
- topStyle.right = bottomStyle.right = pe.r + "px";
- }
-
- // More calculations about sizes of panes
- var containerHeight = this._borderBox.h - pe.t - pe.b,
- middleHeight = containerHeight - ( topHeight + topSplitterThickness + bottomHeight + bottomSplitterThickness),
- sidebarHeight = sidebarLayout ? containerHeight : middleHeight;
-
- var containerWidth = this._borderBox.w - pe.l - pe.r,
- middleWidth = containerWidth - (leftWidth + leftSplitterThickness + rightWidth + rightSplitterThickness),
- sidebarWidth = sidebarLayout ? middleWidth : containerWidth;
-
- // New margin-box size of each pane
- var dim = {
- top: { w: sidebarWidth, h: topHeight },
- bottom: { w: sidebarWidth, h: bottomHeight },
- left: { w: leftWidth, h: sidebarHeight },
- right: { w: rightWidth, h: sidebarHeight },
- center: { h: middleHeight, w: middleWidth }
- };
-
- // Nodes in IE<8 don't respond to t/l/b/r, and TEXTAREA doesn't respond in any browser
- var janky = dojo.isIE < 8 || (dojo.isIE && dojo.isQuirks) || dojo.some(this.getChildren(), function(child){
- return child.domNode.tagName == "TEXTAREA" || child.domNode.tagName == "INPUT";
- });
- if(janky){
- // Set the size of the children the old fashioned way, by setting
- // CSS width and height
-
- var resizeWidget = function(widget, changes, result){
- if(widget){
- (widget.resize ? widget.resize(changes, result) : dojo.marginBox(widget.domNode, changes));
- }
- };
-
- if(leftSplitter){ leftSplitter.style.height = sidebarHeight; }
- if(rightSplitter){ rightSplitter.style.height = sidebarHeight; }
- resizeWidget(this._leftWidget, {h: sidebarHeight}, dim.left);
- resizeWidget(this._rightWidget, {h: sidebarHeight}, dim.right);
-
- if(topSplitter){ topSplitter.style.width = sidebarWidth; }
- if(bottomSplitter){ bottomSplitter.style.width = sidebarWidth; }
- resizeWidget(this._topWidget, {w: sidebarWidth}, dim.top);
- resizeWidget(this._bottomWidget, {w: sidebarWidth}, dim.bottom);
-
- resizeWidget(this._centerWidget, dim.center);
- }else{
- // We've already sized the children by setting style.top/bottom/left/right...
- // Now just need to call resize() on those children telling them their new size,
- // so they can re-layout themselves
-
- // Calculate which panes need a notification
- var resizeList = {};
- if(changedRegion){
- resizeList[changedRegion] = resizeList.center = true;
- if(/top|bottom/.test(changedRegion) && this.design != "sidebar"){
- resizeList.left = resizeList.right = true;
- }else if(/left|right/.test(changedRegion) && this.design == "sidebar"){
- resizeList.top = resizeList.bottom = true;
- }
- }
-
- dojo.forEach(this.getChildren(), function(child){
- if(child.resize && (!changedRegion || child.region in resizeList)){
- child.resize(null, dim[child.region]);
- }
- }, this);
- }
- },
-
- destroy: function(){
- for(var region in this._splitters){
- var splitter = this._splitters[region];
- dijit.byNode(splitter).destroy();
- dojo.destroy(splitter);
- }
- delete this._splitters;
- delete this._splitterThickness;
- this.inherited(arguments);
- }
-});
-
-// This argument can be specified for the children of a BorderContainer.
-// Since any widget can be specified as a LayoutContainer child, mix it
-// into the base widget class. (This is a hack, but it's effective.)
-dojo.extend(dijit._Widget, {
- // region: [const] String
- // Parameter for children of `dijit.layout.BorderContainer`.
- // Values: "top", "bottom", "leading", "trailing", "left", "right", "center".
- // See the `dijit.layout.BorderContainer` description for details.
- region: '',
-
- // splitter: [const] Boolean
- // Parameter for child of `dijit.layout.BorderContainer` where region != "center".
- // If true, enables user to resize the widget by putting a draggable splitter between
- // this widget and the region=center widget.
- splitter: false,
-
- // minSize: [const] Number
- // Parameter for children of `dijit.layout.BorderContainer`.
- // Specifies a minimum size (in pixels) for this widget when resized by a splitter.
- minSize: 0,
-
- // maxSize: [const] Number
- // Parameter for children of `dijit.layout.BorderContainer`.
- // Specifies a maximum size (in pixels) for this widget when resized by a splitter.
- maxSize: Infinity
-});
-
-dojo.require("dijit._Templated");
-
-dojo.declare("dijit.layout._Splitter", [ dijit._Widget, dijit._Templated ],
-{
- // summary:
- // A draggable spacer between two items in a `dijit.layout.BorderContainer`.
- // description:
- // This is instantiated by `dijit.layout.BorderContainer`. Users should not
- // create it directly.
- // tags:
- // private
-
-/*=====
- // container: [const] dijit.layout.BorderContainer
- // Pointer to the parent BorderContainer
- container: null,
-
- // child: [const] dijit.layout._LayoutWidget
- // Pointer to the pane associated with this splitter
- child: null,
-
- // region: String
- // Region of pane associated with this splitter.
- // "top", "bottom", "left", "right".
- region: null,
-=====*/
-
- // live: [const] Boolean
- // If true, the child's size changes and the child widget is redrawn as you drag the splitter;
- // otherwise, the size doesn't change until you drop the splitter (by mouse-up)
- live: true,
-
- templateString: '<div class="dijitSplitter" dojoAttachEvent="onkeypress:_onKeyPress,onmousedown:_startDrag,onmouseenter:_onMouse,onmouseleave:_onMouse" tabIndex="0" waiRole="separator"><div class="dijitSplitterThumb"></div></div>',
-
- postCreate: function(){
- this.inherited(arguments);
- this.horizontal = /top|bottom/.test(this.region);
- dojo.addClass(this.domNode, "dijitSplitter" + (this.horizontal ? "H" : "V"));
-// dojo.addClass(this.child.domNode, "dijitSplitterPane");
-// dojo.setSelectable(this.domNode, false); //TODO is this necessary?
-
- this._factor = /top|left/.test(this.region) ? 1 : -1;
-
- this._cookieName = this.container.id + "_" + this.region;
- if(this.container.persist){
- // restore old size
- var persistSize = dojo.cookie(this._cookieName);
- if(persistSize){
- this.child.domNode.style[this.horizontal ? "height" : "width"] = persistSize;
- }
- }
- },
-
- _computeMaxSize: function(){
- // summary:
- // Compute the maximum size that my corresponding pane can be set to
-
- var dim = this.horizontal ? 'h' : 'w',
- thickness = this.container._splitterThickness[this.region];
-
- // Get DOMNode of opposite pane, if an opposite pane exists.
- // Ex: if I am the _Splitter for the left pane, then get the right pane.
- var flip = {left:'right', right:'left', top:'bottom', bottom:'top', leading:'trailing', trailing:'leading'},
- oppNode = this.container["_" + flip[this.region]];
-
- // I can expand up to the edge of the opposite pane, or if there's no opposite pane, then to
- // edge of BorderContainer
- var available = dojo.contentBox(this.container.domNode)[dim] -
- (oppNode ? dojo.marginBox(oppNode)[dim] : 0) -
- 20 - thickness * 2;
-
- return Math.min(this.child.maxSize, available);
- },
-
- _startDrag: function(e){
- if(!this.cover){
- this.cover = dojo.doc.createElement('div');
- dojo.addClass(this.cover, "dijitSplitterCover");
- dojo.place(this.cover, this.child.domNode, "after");
- }
- dojo.addClass(this.cover, "dijitSplitterCoverActive");
-
- // Safeguard in case the stop event was missed. Shouldn't be necessary if we always get the mouse up.
- if(this.fake){ dojo.destroy(this.fake); }
- if(!(this._resize = this.live)){ //TODO: disable live for IE6?
- // create fake splitter to display at old position while we drag
- (this.fake = this.domNode.cloneNode(true)).removeAttribute("id");
- dojo.addClass(this.domNode, "dijitSplitterShadow");
- dojo.place(this.fake, this.domNode, "after");
- }
- dojo.addClass(this.domNode, "dijitSplitterActive");
- dojo.addClass(this.domNode, "dijitSplitter" + (this.horizontal ? "H" : "V") + "Active");
- if(this.fake){
- dojo.removeClass(this.fake, "dijitSplitterHover");
- dojo.removeClass(this.fake, "dijitSplitter" + (this.horizontal ? "H" : "V") + "Hover");
- }
-
- //Performance: load data info local vars for onmousevent function closure
- var factor = this._factor,
- max = this._computeMaxSize(),
- min = this.child.minSize || 20,
- isHorizontal = this.horizontal,
- axis = isHorizontal ? "pageY" : "pageX",
- pageStart = e[axis],
- splitterStyle = this.domNode.style,
- dim = isHorizontal ? 'h' : 'w',
- childStart = dojo.marginBox(this.child.domNode)[dim],
- region = this.region,
- splitterStart = parseInt(this.domNode.style[region], 10),
- resize = this._resize,
- mb = {},
- childNode = this.child.domNode,
- layoutFunc = dojo.hitch(this.container, this.container._layoutChildren),
- de = dojo.doc.body;
-
- this._handlers = (this._handlers || []).concat([
- dojo.connect(de, "onmousemove", this._drag = function(e, forceResize){
- var delta = e[axis] - pageStart,
- childSize = factor * delta + childStart,
- boundChildSize = Math.max(Math.min(childSize, max), min);
-
- if(resize || forceResize){
- mb[dim] = boundChildSize;
- // TODO: inefficient; we set the marginBox here and then immediately layoutFunc() needs to query it
- dojo.marginBox(childNode, mb);
- layoutFunc(region);
- }
- splitterStyle[region] = factor * delta + splitterStart + (boundChildSize - childSize) + "px";
- }),
- dojo.connect(dojo.doc, "ondragstart", dojo.stopEvent),
- dojo.connect(dojo.body(), "onselectstart", dojo.stopEvent),
- dojo.connect(de, "onmouseup", this, "_stopDrag")
- ]);
- dojo.stopEvent(e);
- },
-
- _onMouse: function(e){
- var o = (e.type == "mouseover" || e.type == "mouseenter");
- dojo.toggleClass(this.domNode, "dijitSplitterHover", o);
- dojo.toggleClass(this.domNode, "dijitSplitter" + (this.horizontal ? "H" : "V") + "Hover", o);
- },
-
- _stopDrag: function(e){
- try{
- if(this.cover){
- dojo.removeClass(this.cover, "dijitSplitterCoverActive");
- }
- if(this.fake){ dojo.destroy(this.fake); }
- dojo.removeClass(this.domNode, "dijitSplitterActive");
- dojo.removeClass(this.domNode, "dijitSplitter" + (this.horizontal ? "H" : "V") + "Active");
- dojo.removeClass(this.domNode, "dijitSplitterShadow");
- this._drag(e); //TODO: redundant with onmousemove?
- this._drag(e, true);
- }finally{
- this._cleanupHandlers();
- delete this._drag;
- }
-
- if(this.container.persist){
- dojo.cookie(this._cookieName, this.child.domNode.style[this.horizontal ? "height" : "width"], {expires:365});
- }
- },
-
- _cleanupHandlers: function(){
- dojo.forEach(this._handlers, dojo.disconnect);
- delete this._handlers;
- },
-
- _onKeyPress: function(/*Event*/ e){
- // should we apply typematic to this?
- this._resize = true;
- var horizontal = this.horizontal;
- var tick = 1;
- var dk = dojo.keys;
- switch(e.charOrCode){
- case horizontal ? dk.UP_ARROW : dk.LEFT_ARROW:
- tick *= -1;
-// break;
- case horizontal ? dk.DOWN_ARROW : dk.RIGHT_ARROW:
- break;
- default:
-// this.inherited(arguments);
- return;
- }
- var childSize = dojo.marginBox(this.child.domNode)[ horizontal ? 'h' : 'w' ] + this._factor * tick;
- var mb = {};
- mb[ this.horizontal ? "h" : "w"] = Math.max(Math.min(childSize, this._computeMaxSize()), this.child.minSize);
- dojo.marginBox(this.child.domNode, mb);
- this.container._layoutChildren(this.region);
- dojo.stopEvent(e);
- },
-
- destroy: function(){
- this._cleanupHandlers();
- delete this.child;
- delete this.container;
- delete this.cover;
- delete this.fake;
- this.inherited(arguments);
- }
-});
-
-dojo.declare("dijit.layout._Gutter", [dijit._Widget, dijit._Templated ],
-{
- // summary:
- // Just a spacer div to separate side pane from center pane.
- // Basically a trick to lookup the gutter/splitter width from the theme.
- // description:
- // Instantiated by `dijit.layout.BorderContainer`. Users should not
- // create directly.
- // tags:
- // private
-
- templateString: '<div class="dijitGutter" waiRole="presentation"></div>',
-
- postCreate: function(){
- this.horizontal = /top|bottom/.test(this.region);
- dojo.addClass(this.domNode, "dijitGutter" + (this.horizontal ? "H" : "V"));
- }
-});
-
-}
diff --git a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/layout/ContentPane.js b/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/layout/ContentPane.js
deleted file mode 100644
index b35b70b..0000000
--- a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/layout/ContentPane.js
+++ /dev/null
@@ -1,732 +0,0 @@
-/*
- Copyright (c) 2004-2009, The Dojo Foundation All Rights Reserved.
- Available via Academic Free License >= 2.1 OR the modified BSD license.
- see: http://dojotoolkit.org/license for details
-*/
-
-
-if(!dojo._hasResource["dijit.layout.ContentPane"]){ //_hasResource checks added by build. Do not use _hasResource directly in your code.
-dojo._hasResource["dijit.layout.ContentPane"] = true;
-dojo.provide("dijit.layout.ContentPane");
-
-dojo.require("dijit._Widget");
-dojo.require("dijit._Contained");
-dojo.require("dijit.layout._LayoutWidget"); // for dijit.layout.marginBox2contentBox()
-
-dojo.require("dojo.parser");
-dojo.require("dojo.string");
-dojo.require("dojo.html");
-dojo.requireLocalization("dijit", "loading", null, "ROOT,ar,ca,cs,da,de,el,es,fi,fr,he,hu,it,ja,ko,nb,nl,pl,pt,pt-pt,ru,sk,sl,sv,th,tr,zh,zh-tw");
-
-dojo.declare(
- "dijit.layout.ContentPane", dijit._Widget,
-{
- // summary:
- // A widget that acts as a container for mixed HTML and widgets, and includes an Ajax interface
- // description:
- // A widget that can be used as a stand alone widget
- // or as a base class for other widgets.
- //
- // Handles replacement of document fragment using either external uri or javascript
- // generated markup or DOM content, instantiating widgets within that content.
- // Don't confuse it with an iframe, it only needs/wants document fragments.
- // It's useful as a child of LayoutContainer, SplitContainer, or TabContainer.
- // But note that those classes can contain any widget as a child.
- // example:
- // Some quick samples:
- // To change the innerHTML use .attr('content', '<b>new content</b>')
- //
- // Or you can send it a NodeList, .attr('content', dojo.query('div [class=selected]', userSelection))
- // please note that the nodes in NodeList will copied, not moved
- //
- // To do a ajax update use .attr('href', url)
-
- // href: String
- // The href of the content that displays now.
- // Set this at construction if you want to load data externally when the
- // pane is shown. (Set preload=true to load it immediately.)
- // Changing href after creation doesn't have any effect; use attr('href', ...);
- href: "",
-
-/*=====
- // content: String || DomNode || NodeList || dijit._Widget
- // The innerHTML of the ContentPane.
- // Note that the initialization parameter / argument to attr("content", ...)
- // can be a String, DomNode, Nodelist, or _Widget.
- content: "",
-=====*/
-
- // extractContent: Boolean
- // Extract visible content from inside of <body> .... </body>.
- // I.e., strip <html> and <head> (and it's contents) from the href
- extractContent: false,
-
- // parseOnLoad: Boolean
- // Parse content and create the widgets, if any.
- parseOnLoad: true,
-
- // preventCache: Boolean
- // Prevent caching of data from href's by appending a timestamp to the href.
- preventCache: false,
-
- // preload: Boolean
- // Force load of data on initialization even if pane is hidden.
- preload: false,
-
- // refreshOnShow: Boolean
- // Refresh (re-download) content when pane goes from hidden to shown
- refreshOnShow: false,
-
- // loadingMessage: String
- // Message that shows while downloading
- loadingMessage: "<span class='dijitContentPaneLoading'>${loadingState}</span>",
-
- // errorMessage: String
- // Message that shows if an error occurs
- errorMessage: "<span class='dijitContentPaneError'>${errorState}</span>",
-
- // isLoaded: [readonly] Boolean
- // True if the ContentPane has data in it, either specified
- // during initialization (via href or inline content), or set
- // via attr('content', ...) / attr('href', ...)
- //
- // False if it doesn't have any content, or if ContentPane is
- // still in the process of downloading href.
- isLoaded: false,
-
- baseClass: "dijitContentPane",
-
- // doLayout: Boolean
- // - false - don't adjust size of children
- // - true - if there is a single visible child widget, set it's size to
- // however big the ContentPane is
- doLayout: true,
-
- // ioArgs: Object
- // Parameters to pass to xhrGet() request, for example:
- // | <div dojoType="dijit.layout.ContentPane" href="./bar" ioArgs="{timeout: 500}">
- ioArgs: {},
-
- // isContainer: [protected] Boolean
- // Indicates that this widget acts as a "parent" to the descendant widgets.
- // When the parent is started it will call startup() on the child widgets.
- // See also `isLayoutContainer`.
- isContainer: true,
-
- // isLayoutContainer: [protected] Boolean
- // Indicates that this widget will call resize() on it's child widgets
- // when they become visible.
- isLayoutContainer: true,
-
- // onLoadDeferred: [readonly] dojo.Deferred
- // This is the `dojo.Deferred` returned by attr('href', ...) and refresh().
- // Calling onLoadDeferred.addCallback() or addErrback() registers your
- // callback to be called only once, when the prior attr('href', ...) call or
- // the initial href parameter to the constructor finishes loading.
- //
- // This is different than an onLoad() handler which gets called any time any href is loaded.
- onLoadDeferred: null,
-
- // Override _Widget's attributeMap because we don't want the title attribute (used to specify
- // tab labels) to be copied to ContentPane.domNode... otherwise a tooltip shows up over the
- // entire pane.
- attributeMap: dojo.delegate(dijit._Widget.prototype.attributeMap, {
- title: []
- }),
-
- postMixInProperties: function(){
- this.inherited(arguments);
- var messages = dojo.i18n.getLocalization("dijit", "loading", this.lang);
- this.loadingMessage = dojo.string.substitute(this.loadingMessage, messages);
- this.errorMessage = dojo.string.substitute(this.errorMessage, messages);
-
- // Detect if we were initialized with data
- if(!this.href && this.srcNodeRef && this.srcNodeRef.innerHTML){
- this.isLoaded = true;
- }
- },
-
- buildRendering: function(){
- // Overrides Widget.buildRendering().
- // Since we have no template we need to set this.containerNode ourselves.
- // For subclasses of ContentPane do have a template, does nothing.
- this.inherited(arguments);
- if(!this.containerNode){
- // make getDescendants() work
- this.containerNode = this.domNode;
- }
- },
-
- postCreate: function(){
- // remove the title attribute so it doesn't show up when hovering
- // over a node
- this.domNode.title = "";
-
- if(!dojo.attr(this.domNode,"role")){
- dijit.setWaiRole(this.domNode, "group");
- }
-
- dojo.addClass(this.domNode, this.baseClass);
- },
-
- startup: function(){
- // summary:
- // See `dijit.layout._LayoutWidget.startup` for description.
- // Although ContentPane doesn't extend _LayoutWidget, it does implement
- // the same API.
- if(this._started){ return; }
-
- var parent = dijit._Contained.prototype.getParent.call(this);
- this._childOfLayoutWidget = parent && parent.isLayoutContainer;
-
- // I need to call resize() on my child/children (when I become visible), unless
- // I'm the child of a layout widget in which case my parent will call resize() on me and I'll do it then.
- this._needLayout = !this._childOfLayoutWidget;
-
- if(this.isLoaded){
- dojo.forEach(this.getChildren(), function(child){
- child.startup();
- });
- }
-
- if(this._isShown() || this.preload){
- this._onShow();
- }
-
- this.inherited(arguments);
- },
-
- _checkIfSingleChild: function(){
- // summary:
- // Test if we have exactly one visible widget as a child,
- // and if so assume that we are a container for that widget,
- // and should propogate startup() and resize() calls to it.
- // Skips over things like data stores since they aren't visible.
-
- var childNodes = dojo.query("> *", this.containerNode).filter(function(node){
- return node.tagName !== "SCRIPT"; // or a regexp for hidden elements like script|area|map|etc..
- }),
- childWidgetNodes = childNodes.filter(function(node){
- return dojo.hasAttr(node, "dojoType") || dojo.hasAttr(node, "widgetId");
- }),
- candidateWidgets = dojo.filter(childWidgetNodes.map(dijit.byNode), function(widget){
- return widget && widget.domNode && widget.resize;
- });
-
- if(
- // all child nodes are widgets
- childNodes.length == childWidgetNodes.length &&
-
- // all but one are invisible (like dojo.data)
- candidateWidgets.length == 1
- ){
- this._singleChild = candidateWidgets[0];
- }else{
- delete this._singleChild;
- }
-
- // So we can set overflow: hidden to avoid a safari bug w/scrollbars showing up (#9449)
- dojo.toggleClass(this.containerNode, this.baseClass + "SingleChild", !!this._singleChild);
- },
-
- setHref: function(/*String|Uri*/ href){
- // summary:
- // Deprecated. Use attr('href', ...) instead.
- dojo.deprecated("dijit.layout.ContentPane.setHref() is deprecated. Use attr('href', ...) instead.", "", "2.0");
- return this.attr("href", href);
- },
- _setHrefAttr: function(/*String|Uri*/ href){
- // summary:
- // Hook so attr("href", ...) works.
- // description:
- // Reset the (external defined) content of this pane and replace with new url
- // Note: It delays the download until widget is shown if preload is false.
- // href:
- // url to the page you want to get, must be within the same domain as your mainpage
-
- // Cancel any in-flight requests (an attr('href') will cancel any in-flight attr('href', ...))
- this.cancel();
-
- this.onLoadDeferred = new dojo.Deferred(dojo.hitch(this, "cancel"));
-
- this.href = href;
-
- // _setHrefAttr() is called during creation and by the user, after creation.
- // only in the second case do we actually load the URL; otherwise it's done in startup()
- if(this._created && (this.preload || this._isShown())){
- this._load();
- }else{
- // Set flag to indicate that href needs to be loaded the next time the
- // ContentPane is made visible
- this._hrefChanged = true;
- }
-
- return this.onLoadDeferred; // dojo.Deferred
- },
-
- setContent: function(/*String|DomNode|Nodelist*/data){
- // summary:
- // Deprecated. Use attr('content', ...) instead.
- dojo.deprecated("dijit.layout.ContentPane.setContent() is deprecated. Use attr('content', ...) instead.", "", "2.0");
- this.attr("content", data);
- },
- _setContentAttr: function(/*String|DomNode|Nodelist*/data){
- // summary:
- // Hook to make attr("content", ...) work.
- // Replaces old content with data content, include style classes from old content
- // data:
- // the new Content may be String, DomNode or NodeList
- //
- // if data is a NodeList (or an array of nodes) nodes are copied
- // so you can import nodes from another document implicitly
-
- // clear href so we can't run refresh and clear content
- // refresh should only work if we downloaded the content
- this.href = "";
-
- // Cancel any in-flight requests (an attr('content') will cancel any in-flight attr('href', ...))
- this.cancel();
-
- // Even though user is just setting content directly, still need to define an onLoadDeferred
- // because the _onLoadHandler() handler is still getting called from setContent()
- this.onLoadDeferred = new dojo.Deferred(dojo.hitch(this, "cancel"));
-
- this._setContent(data || "");
-
- this._isDownloaded = false; // mark that content is from a attr('content') not an attr('href')
-
- return this.onLoadDeferred; // dojo.Deferred
- },
- _getContentAttr: function(){
- // summary:
- // Hook to make attr("content") work
- return this.containerNode.innerHTML;
- },
-
- cancel: function(){
- // summary:
- // Cancels an in-flight download of content
- if(this._xhrDfd && (this._xhrDfd.fired == -1)){
- this._xhrDfd.cancel();
- }
- delete this._xhrDfd; // garbage collect
-
- this.onLoadDeferred = null;
- },
-
- uninitialize: function(){
- if(this._beingDestroyed){
- this.cancel();
- }
- this.inherited(arguments);
- },
-
- destroyRecursive: function(/*Boolean*/ preserveDom){
- // summary:
- // Destroy the ContentPane and its contents
-
- // if we have multiple controllers destroying us, bail after the first
- if(this._beingDestroyed){
- return;
- }
- this.inherited(arguments);
- },
-
- resize: function(changeSize, resultSize){
- // summary:
- // See `dijit.layout._LayoutWidget.resize` for description.
- // Although ContentPane doesn't extend _LayoutWidget, it does implement
- // the same API.
-
- // For the TabContainer --> BorderContainer --> ContentPane case, _onShow() is
- // never called, so resize() is our trigger to do the initial href download.
- if(!this._wasShown){
- this._onShow();
- }
-
- this._resizeCalled = true;
-
- // Set margin box size, unless it wasn't specified, in which case use current size.
- if(changeSize){
- dojo.marginBox(this.domNode, changeSize);
- }
-
- // Compute content box size of containerNode in case we [later] need to size our single child.
- var cn = this.containerNode;
- if(cn === this.domNode){
- // If changeSize or resultSize was passed to this method and this.containerNode ==
- // this.domNode then we can compute the content-box size without querying the node,
- // which is more reliable (similar to LayoutWidget.resize) (see for example #9449).
- var mb = resultSize || {};
- dojo.mixin(mb, changeSize || {}); // changeSize overrides resultSize
- if(!("h" in mb) || !("w" in mb)){
- mb = dojo.mixin(dojo.marginBox(cn), mb); // just use dojo.marginBox() to fill in missing values
- }
- this._contentBox = dijit.layout.marginBox2contentBox(cn, mb);
- }else{
- this._contentBox = dojo.contentBox(cn);
- }
-
- // Make my children layout, or size my single child widget
- this._layoutChildren();
- },
-
- _isShown: function(){
- // summary:
- // Returns true if the content is currently shown.
- // description:
- // If I am a child of a layout widget then it actually returns true if I've ever been visible,
- // not whether I'm currently visible, since that's much faster than tracing up the DOM/widget
- // tree every call, and at least solves the performance problem on page load by deferring loading
- // hidden ContentPanes until they are first shown
-
- if(this._childOfLayoutWidget){
- // If we are TitlePane, etc - we return that only *IF* we've been resized
- if(this._resizeCalled && "open" in this){
- return this.open;
- }
- return this._resizeCalled;
- }else if("open" in this){
- return this.open; // for TitlePane, etc.
- }else{
- // TODO: with _childOfLayoutWidget check maybe this branch no longer necessary?
- var node = this.domNode;
- return (node.style.display != 'none') && (node.style.visibility != 'hidden') && !dojo.hasClass(node, "dijitHidden");
- }
- },
-
- _onShow: function(){
- // summary:
- // Called when the ContentPane is made visible
- // description:
- // For a plain ContentPane, this is called on initialization, from startup().
- // If the ContentPane is a hidden pane of a TabContainer etc., then it's
- // called whenever the pane is made visible.
- //
- // Does necessary processing, including href download and layout/resize of
- // child widget(s)
-
- if(this.href){
- if(!this._xhrDfd && // if there's an href that isn't already being loaded
- (!this.isLoaded || this._hrefChanged || this.refreshOnShow)
- ){
- this.refresh();
- }
- }else{
- // If we are the child of a layout widget then the layout widget will call resize() on
- // us, and then we will size our child/children. Otherwise, we need to do it now.
- if(!this._childOfLayoutWidget && this._needLayout){
- // If a layout has been scheduled for when we become visible, do it now
- this._layoutChildren();
- }
- }
-
- this.inherited(arguments);
-
- // Need to keep track of whether ContentPane has been shown (which is different than
- // whether or not it's currently visible).
- this._wasShown = true;
- },
-
- refresh: function(){
- // summary:
- // [Re]download contents of href and display
- // description:
- // 1. cancels any currently in-flight requests
- // 2. posts "loading..." message
- // 3. sends XHR to download new data
-
- // Cancel possible prior in-flight request
- this.cancel();
-
- this.onLoadDeferred = new dojo.Deferred(dojo.hitch(this, "cancel"));
- this._load();
- return this.onLoadDeferred;
- },
-
- _load: function(){
- // summary:
- // Load/reload the href specified in this.href
-
- // display loading message
- this._setContent(this.onDownloadStart(), true);
-
- var self = this;
- var getArgs = {
- preventCache: (this.preventCache || this.refreshOnShow),
- url: this.href,
- handleAs: "text"
- };
- if(dojo.isObject(this.ioArgs)){
- dojo.mixin(getArgs, this.ioArgs);
- }
-
- var hand = (this._xhrDfd = (this.ioMethod || dojo.xhrGet)(getArgs));
-
- hand.addCallback(function(html){
- try{
- self._isDownloaded = true;
- self._setContent(html, false);
- self.onDownloadEnd();
- }catch(err){
- self._onError('Content', err); // onContentError
- }
- delete self._xhrDfd;
- return html;
- });
-
- hand.addErrback(function(err){
- if(!hand.canceled){
- // show error message in the pane
- self._onError('Download', err); // onDownloadError
- }
- delete self._xhrDfd;
- return err;
- });
-
- // Remove flag saying that a load is needed
- delete this._hrefChanged;
- },
-
- _onLoadHandler: function(data){
- // summary:
- // This is called whenever new content is being loaded
- this.isLoaded = true;
- try{
- this.onLoadDeferred.callback(data);
- this.onLoad(data);
- }catch(e){
- console.error('Error '+this.widgetId+' running custom onLoad code: ' + e.message);
- }
- },
-
- _onUnloadHandler: function(){
- // summary:
- // This is called whenever the content is being unloaded
- this.isLoaded = false;
- try{
- this.onUnload();
- }catch(e){
- console.error('Error '+this.widgetId+' running custom onUnload code: ' + e.message);
- }
- },
-
- destroyDescendants: function(){
- // summary:
- // Destroy all the widgets inside the ContentPane and empty containerNode
-
- // Make sure we call onUnload (but only when the ContentPane has real content)
- if(this.isLoaded){
- this._onUnloadHandler();
- }
-
- // Even if this.isLoaded == false there might still be a "Loading..." message
- // to erase, so continue...
-
- // For historical reasons we need to delete all widgets under this.containerNode,
- // even ones that the user has created manually.
- var setter = this._contentSetter;
- dojo.forEach(this.getChildren(), function(widget){
- if(widget.destroyRecursive){
- widget.destroyRecursive();
- }
- });
- if(setter){
- // Most of the widgets in setter.parseResults have already been destroyed, but
- // things like Menu that have been moved to <body> haven't yet
- dojo.forEach(setter.parseResults, function(widget){
- if(widget.destroyRecursive && widget.domNode && widget.domNode.parentNode == dojo.body()){
- widget.destroyRecursive();
- }
- });
- delete setter.parseResults;
- }
-
- // And then clear away all the DOM nodes
- dojo.html._emptyNode(this.containerNode);
-
- // Delete any state information we have about current contents
- delete this._singleChild;
- },
-
- _setContent: function(cont, isFakeContent){
- // summary:
- // Insert the content into the container node
-
- // first get rid of child widgets
- this.destroyDescendants();
-
- // dojo.html.set will take care of the rest of the details
- // we provide an override for the error handling to ensure the widget gets the errors
- // configure the setter instance with only the relevant widget instance properties
- // NOTE: unless we hook into attr, or provide property setters for each property,
- // we need to re-configure the ContentSetter with each use
- var setter = this._contentSetter;
- if(! (setter && setter instanceof dojo.html._ContentSetter)){
- setter = this._contentSetter = new dojo.html._ContentSetter({
- node: this.containerNode,
- _onError: dojo.hitch(this, this._onError),
- onContentError: dojo.hitch(this, function(e){
- // fires if a domfault occurs when we are appending this.errorMessage
- // like for instance if domNode is a UL and we try append a DIV
- var errMess = this.onContentError(e);
- try{
- this.containerNode.innerHTML = errMess;
- }catch(e){
- console.error('Fatal '+this.id+' could not change content due to '+e.message, e);
- }
- })/*,
- _onError */
- });
- };
-
- var setterParams = dojo.mixin({
- cleanContent: this.cleanContent,
- extractContent: this.extractContent,
- parseContent: this.parseOnLoad
- }, this._contentSetterParams || {});
-
- dojo.mixin(setter, setterParams);
-
- setter.set( (dojo.isObject(cont) && cont.domNode) ? cont.domNode : cont );
-
- // setter params must be pulled afresh from the ContentPane each time
- delete this._contentSetterParams;
-
- if(!isFakeContent){
- // Startup each top level child widget (and they will start their children, recursively)
- dojo.forEach(this.getChildren(), function(child){
- // The parser has already called startup on all widgets *without* a getParent() method
- if(!this.parseOnLoad || child.getParent){
- child.startup();
- }
- }, this);
-
- // Call resize() on each of my child layout widgets,
- // or resize() on my single child layout widget...
- // either now (if I'm currently visible)
- // or when I become visible
- this._scheduleLayout();
-
- this._onLoadHandler(cont);
- }
- },
-
- _onError: function(type, err, consoleText){
- this.onLoadDeferred.errback(err);
-
- // shows user the string that is returned by on[type]Error
- // overide on[type]Error and return your own string to customize
- var errText = this['on' + type + 'Error'].call(this, err);
- if(consoleText){
- console.error(consoleText, err);
- }else if(errText){// a empty string won't change current content
- this._setContent(errText, true);
- }
- },
-
- _scheduleLayout: function(){
- // summary:
- // Call resize() on each of my child layout widgets, either now
- // (if I'm currently visible) or when I become visible
- if(this._isShown()){
- this._layoutChildren();
- }else{
- this._needLayout = true;
- }
- },
-
- _layoutChildren: function(){
- // summary:
- // Since I am a Container widget, each of my children expects me to
- // call resize() or layout() on them.
- // description:
- // Should be called on initialization and also whenever we get new content
- // (from an href, or from attr('content', ...))... but deferred until
- // the ContentPane is visible
-
- if(this.doLayout){
- this._checkIfSingleChild();
- }
-
- if(this._singleChild && this._singleChild.resize){
- var cb = this._contentBox || dojo.contentBox(this.containerNode);
-
- // note: if widget has padding this._contentBox will have l and t set,
- // but don't pass them to resize() or it will doubly-offset the child
- this._singleChild.resize({w: cb.w, h: cb.h});
- }else{
- // All my child widgets are independently sized (rather than matching my size),
- // but I still need to call resize() on each child to make it layout.
- dojo.forEach(this.getChildren(), function(widget){
- if(widget.resize){
- widget.resize();
- }
- });
- }
- delete this._needLayout;
- },
-
- // EVENT's, should be overide-able
- onLoad: function(data){
- // summary:
- // Event hook, is called after everything is loaded and widgetified
- // tags:
- // callback
- },
-
- onUnload: function(){
- // summary:
- // Event hook, is called before old content is cleared
- // tags:
- // callback
- },
-
- onDownloadStart: function(){
- // summary:
- // Called before download starts.
- // description:
- // The string returned by this function will be the html
- // that tells the user we are loading something.
- // Override with your own function if you want to change text.
- // tags:
- // extension
- return this.loadingMessage;
- },
-
- onContentError: function(/*Error*/ error){
- // summary:
- // Called on DOM faults, require faults etc. in content.
- //
- // In order to display an error message in the pane, return
- // the error message from this method, as an HTML string.
- //
- // By default (if this method is not overriden), it returns
- // nothing, so the error message is just printed to the console.
- // tags:
- // extension
- },
-
- onDownloadError: function(/*Error*/ error){
- // summary:
- // Called when download error occurs.
- //
- // In order to display an error message in the pane, return
- // the error message from this method, as an HTML string.
- //
- // Default behavior (if this method is not overriden) is to display
- // the error message inside the pane.
- // tags:
- // extension
- return this.errorMessage;
- },
-
- onDownloadEnd: function(){
- // summary:
- // Called when download is finished.
- // tags:
- // callback
- }
-});
-
-}
diff --git a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/layout/LayoutContainer.js b/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/layout/LayoutContainer.js
deleted file mode 100644
index 26a1255..0000000
--- a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/layout/LayoutContainer.js
+++ /dev/null
@@ -1,86 +0,0 @@
-/*
- Copyright (c) 2004-2009, The Dojo Foundation All Rights Reserved.
- Available via Academic Free License >= 2.1 OR the modified BSD license.
- see: http://dojotoolkit.org/license for details
-*/
-
-
-if(!dojo._hasResource["dijit.layout.LayoutContainer"]){ //_hasResource checks added by build. Do not use _hasResource directly in your code.
-dojo._hasResource["dijit.layout.LayoutContainer"] = true;
-dojo.provide("dijit.layout.LayoutContainer");
-
-dojo.require("dijit.layout._LayoutWidget");
-
-dojo.declare("dijit.layout.LayoutContainer",
- dijit.layout._LayoutWidget,
- {
- // summary:
- // Deprecated. Use `dijit.layout.BorderContainer` instead.
- //
- // description:
- // Provides Delphi-style panel layout semantics.
- //
- // A LayoutContainer is a box with a specified size (like style="width: 500px; height: 500px;"),
- // that contains children widgets marked with "layoutAlign" of "left", "right", "bottom", "top", and "client".
- // It takes it's children marked as left/top/bottom/right, and lays them out along the edges of the box,
- // and then it takes the child marked "client" and puts it into the remaining space in the middle.
- //
- // Left/right positioning is similar to CSS's "float: left" and "float: right",
- // and top/bottom positioning would be similar to "float: top" and "float: bottom", if there were such
- // CSS.
- //
- // Note that there can only be one client element, but there can be multiple left, right, top,
- // or bottom elements.
- //
- // example:
- // | <style>
- // | html, body{ height: 100%; width: 100%; }
- // | </style>
- // | <div dojoType="dijit.layout.LayoutContainer" style="width: 100%; height: 100%">
- // | <div dojoType="dijit.layout.ContentPane" layoutAlign="top">header text</div>
- // | <div dojoType="dijit.layout.ContentPane" layoutAlign="left" style="width: 200px;">table of contents</div>
- // | <div dojoType="dijit.layout.ContentPane" layoutAlign="client">client area</div>
- // | </div>
- //
- // Lays out each child in the natural order the children occur in.
- // Basically each child is laid out into the "remaining space", where "remaining space" is initially
- // the content area of this widget, but is reduced to a smaller rectangle each time a child is added.
- // tags:
- // deprecated
-
- baseClass: "dijitLayoutContainer",
-
- constructor: function(){
- dojo.deprecated("dijit.layout.LayoutContainer is deprecated", "use BorderContainer instead", 2.0);
- },
-
- layout: function(){
- dijit.layout.layoutChildren(this.domNode, this._contentBox, this.getChildren());
- },
-
- addChild: function(/*dijit._Widget*/ child, /*Integer?*/ insertIndex){
- this.inherited(arguments);
- if(this._started){
- dijit.layout.layoutChildren(this.domNode, this._contentBox, this.getChildren());
- }
- },
-
- removeChild: function(/*dijit._Widget*/ widget){
- this.inherited(arguments);
- if(this._started){
- dijit.layout.layoutChildren(this.domNode, this._contentBox, this.getChildren());
- }
- }
-});
-
-// This argument can be specified for the children of a LayoutContainer.
-// Since any widget can be specified as a LayoutContainer child, mix it
-// into the base widget class. (This is a hack, but it's effective.)
-dojo.extend(dijit._Widget, {
- // layoutAlign: String
- // "none", "left", "right", "bottom", "top", and "client".
- // See the LayoutContainer description for details on this parameter.
- layoutAlign: 'none'
-});
-
-}
diff --git a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/layout/LinkPane.js b/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/layout/LinkPane.js
deleted file mode 100644
index 5cdcabd..0000000
--- a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/layout/LinkPane.js
+++ /dev/null
@@ -1,51 +0,0 @@
-/*
- Copyright (c) 2004-2009, The Dojo Foundation All Rights Reserved.
- Available via Academic Free License >= 2.1 OR the modified BSD license.
- see: http://dojotoolkit.org/license for details
-*/
-
-
-if(!dojo._hasResource["dijit.layout.LinkPane"]){ //_hasResource checks added by build. Do not use _hasResource directly in your code.
-dojo._hasResource["dijit.layout.LinkPane"] = true;
-dojo.provide("dijit.layout.LinkPane");
-
-dojo.require("dijit.layout.ContentPane");
-dojo.require("dijit._Templated");
-
-dojo.declare("dijit.layout.LinkPane",
- [dijit.layout.ContentPane, dijit._Templated],
- {
- // summary:
- // A ContentPane with an href where (when declared in markup)
- // the title is specified as innerHTML rather than as a title attribute.
- // description:
- // LinkPane is just a ContentPane that is declared in markup similarly
- // to an anchor. The anchor's body (the words between `<a>` and `</a>`)
- // become the title of the widget (used for TabContainer, AccordionContainer, etc.)
- // example:
- // | <a href="foo.html">my title</a>
-
- // I'm using a template because the user may specify the input as
- // <a href="foo.html">title</a>, in which case we need to get rid of the
- // <a> because we don't want a link.
- templateString: '<div class="dijitLinkPane" dojoAttachPoint="containerNode"></div>',
-
- postMixInProperties: function(){
- // If user has specified node contents, they become the title
- // (the link must be plain text)
- if(this.srcNodeRef){
- this.title += this.srcNodeRef.innerHTML;
- }
- this.inherited(arguments);
- },
-
- _fillContent: function(/*DomNode*/ source){
- // Overrides _Templated._fillContent().
-
- // _Templated._fillContent() relocates srcNodeRef innerHTML to templated container node,
- // but in our case the srcNodeRef innerHTML is the title, so shouldn't be
- // copied
- }
-});
-
-}
diff --git a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/layout/ScrollingTabController.js b/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/layout/ScrollingTabController.js
deleted file mode 100644
index 3067e2c..0000000
--- a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/layout/ScrollingTabController.js
+++ /dev/null
@@ -1,467 +0,0 @@
-/*
- Copyright (c) 2004-2009, The Dojo Foundation All Rights Reserved.
- Available via Academic Free License >= 2.1 OR the modified BSD license.
- see: http://dojotoolkit.org/license for details
-*/
-
-
-if(!dojo._hasResource["dijit.layout.ScrollingTabController"]){ //_hasResource checks added by build. Do not use _hasResource directly in your code.
-dojo._hasResource["dijit.layout.ScrollingTabController"] = true;
-dojo.provide("dijit.layout.ScrollingTabController");
-
-dojo.require("dijit.layout.TabController");
-dojo.require("dijit.Menu");
-
-dojo.declare("dijit.layout.ScrollingTabController",
- dijit.layout.TabController,
- {
- // summary:
- // Set of tabs with left/right arrow keys and a menu to switch between tabs not
- // all fitting on a single row.
- // Works only for horizontal tabs (either above or below the content, not to the left
- // or right).
- // tags:
- // private
-
- templateString: dojo.cache("dijit.layout", "templates/ScrollingTabController.html", "<div class=\"dijitTabListContainer-${tabPosition}\" style=\"visibility:hidden\">\n\t<div dojoType=\"dijit.layout._ScrollingTabControllerButton\" buttonType=\"menuBtn\" buttonClass=\"tabStripMenuButton\"\n\t\t\ttabPosition=\"${tabPosition}\" dojoAttachPoint=\"_menuBtn\" showLabel=false>↓</div>\n\t<div dojoType=\"dijit.layout._ScrollingTabControllerButton\" buttonType=\"leftBtn\" buttonClass=\"tabStripSlideButtonLeft\"\n\t\t\ttabPosition=\"${tabPosition}\" dojoAttachPoint=\"_leftBtn\" dojoAttachEvent=\"onClick: doSlideLeft\" showLabel=false>←</div>\n\t<div dojoType=\"dijit.layout._ScrollingTabControllerButton\" buttonType=\"rightBtn\" buttonClass=\"tabStripSlideButtonRight\"\n\t\t\ttabPosition=\"${tabPosition}\" dojoAttachPoint=\"_rightBtn\" dojoAttachEvent=\"onClick: doSlideRight\" showLabel=false>→</div>\n\t<div class='dijitTabListWrapper' dojoAttachPoint='tablistWrapper'>\n\t\t<div wairole='tablist' dojoAttachEvent='onkeypress:onkeypress'\n\t\t\t\tdojoAttachPoint='containerNode' class='nowrapTabStrip'>\n\t\t</div>\n\t</div>\n</div>\n"),
-
- // useMenu:[const] Boolean
- // True if a menu should be used to select tabs when they are too
- // wide to fit the TabContainer, false otherwise.
- useMenu: true,
-
- // useSlider: [const] Boolean
- // True if a slider should be used to select tabs when they are too
- // wide to fit the TabContainer, false otherwise.
- useSlider: true,
-
- // tabStripClass: String
- // The css class to apply to the tab strip, if it is visible.
- tabStripClass: "",
-
- widgetsInTemplate: true,
-
- // _minScroll: Number
- // The distance in pixels from the edge of the tab strip which,
- // if a scroll animation is less than, forces the scroll to
- // go all the way to the left/right.
- _minScroll: 5,
-
- attributeMap: dojo.delegate(dijit._Widget.prototype.attributeMap, {
- "class": "containerNode"
- }),
-
- postCreate: function(){
- this.inherited(arguments);
- var n = this.domNode;
-
- this.scrollNode = this.tablistWrapper;
- this._initButtons();
-
- if(!this.tabStripClass){
- this.tabStripClass = "dijitTabContainer" +
- this.tabPosition.charAt(0).toUpperCase() +
- this.tabPosition.substr(1).replace(/-.*/, "") +
- "None";
- dojo.addClass(n, "tabStrip-disabled")
- }
-
- dojo.addClass(this.tablistWrapper, this.tabStripClass);
- },
-
- onStartup: function(){
- this.inherited(arguments);
-
- // Do not show the TabController until the related
- // StackController has added it's children. This gives
- // a less visually jumpy instantiation.
- dojo.style(this.domNode, "visibility", "visible");
- this._postStartup = true;
- },
-
- onAddChild: function(page, insertIndex){
- this.inherited(arguments);
- var menuItem;
- if(this.useMenu){
- menuItem = new dijit.MenuItem({
- label: page.title,
- onClick: dojo.hitch(this, function(){
- this.onSelectChild(page);
- })
- });
- this._menuChildren[page.id] = menuItem;
- this._menu.addChild(menuItem, insertIndex);
- }
-
- // update the menuItem label when the button label is updated
- this.pane2handles[page.id].push(
- this.connect(this.pane2button[page.id], "attr", function(name, value){
- if(this._postStartup){
- if(arguments.length == 2 && name == "label"){
- if(menuItem){
- menuItem.attr(name, value);
- }
-
- // The changed label will have changed the width of the
- // buttons, so do a resize
- if(this._dim){
- this.resize(this._dim);
- }
- }
- }
- })
- );
-
- // Increment the width of the wrapper when a tab is added
- // This makes sure that the buttons never wrap.
- // The value 200 is chosen as it should be bigger than most
- // Tab button widths.
- dojo.style(this.containerNode, "width",
- (dojo.style(this.containerNode, "width") + 200) + "px");
- },
-
- onRemoveChild: function(page, insertIndex){
- // null out _selectedTab because we are about to delete that dom node
- var button = this.pane2button[page.id];
- if(this._selectedTab === button.domNode){
- this._selectedTab = null;
- }
-
- // delete menu entry corresponding to pane that was removed from TabContainer
- if(this.useMenu && page && page.id && this._menuChildren[page.id]){
- this._menu.removeChild(this._menuChildren[page.id]);
- this._menuChildren[page.id].destroy();
- delete this._menuChildren[page.id];
- }
-
- this.inherited(arguments);
- },
-
- _initButtons: function(){
- // summary:
- // Creates the buttons used to scroll to view tabs that
- // may not be visible if the TabContainer is too narrow.
- this._menuChildren = {};
-
- // Make a list of the buttons to display when the tab labels become
- // wider than the TabContainer, and hide the other buttons.
- // Also gets the total width of the displayed buttons.
- this._btnWidth = 0;
- this._buttons = dojo.query("> .tabStripButton", this.domNode).filter(function(btn){
- if((this.useMenu && btn == this._menuBtn.domNode) ||
- (this.useSlider && (btn == this._rightBtn.domNode || btn == this._leftBtn.domNode))){
- this._btnWidth += dojo.marginBox(btn).w;
- return true;
- }else{
- dojo.style(btn, "display", "none");
- return false;
- }
- }, this);
-
- if(this.useMenu){
- // Create the menu that is used to select tabs.
- this._menu = new dijit.Menu({
- id: this.id + "_menu",
- targetNodeIds: [this._menuBtn.domNode],
- leftClickToOpen: true,
- refocus: false // selecting a menu item sets focus to a TabButton
- });
- this._supportingWidgets.push(this._menu);
- }
- },
-
- _getTabsWidth: function(){
- var children = this.getChildren();
- if(children.length){
- var leftTab = children[this.isLeftToRight() ? 0 : children.length - 1].domNode,
- rightTab = children[this.isLeftToRight() ? children.length - 1 : 0].domNode;
- return rightTab.offsetLeft + dojo.style(rightTab, "width") - leftTab.offsetLeft;
- }else{
- return 0;
- }
- },
-
- _enableBtn: function(width){
- // summary:
- // Determines if the tabs are wider than the width of the TabContainer, and
- // thus that we need to display left/right/menu navigation buttons.
- var tabsWidth = this._getTabsWidth();
- width = width || dojo.style(this.scrollNode, "width");
- return tabsWidth > 0 && width < tabsWidth;
- },
-
- resize: function(dim){
- // summary:
- // Hides or displays the buttons used to scroll the tab list and launch the menu
- // that selects tabs.
-
- if(this.domNode.offsetWidth == 0){
- return;
- }
-
- // Save the dimensions to be used when a child is renamed.
- this._dim = dim;
-
- // Set my height to be my natural height (tall enough for one row of tab labels),
- // and my content-box width based on margin-box width specified in dim parameter.
- // But first reset scrollNode.height in case it was set by layoutChildren() call
- // in a previous run of this method.
- this.scrollNode.style.height = "auto";
- this._contentBox = dijit.layout.marginBox2contentBox(this.domNode, {h: 0, w: dim.w});
- this._contentBox.h = this.scrollNode.offsetHeight;
- dojo.contentBox(this.domNode, this._contentBox);
-
- // Show/hide the left/right/menu navigation buttons depending on whether or not they
- // are needed.
- var enable = this._enableBtn(this._contentBox.w);
- this._buttons.style("display", enable ? "" : "none");
-
- // Position and size the navigation buttons and the tablist
- this._leftBtn.layoutAlign = "left";
- this._rightBtn.layoutAlign = "right";
- this._menuBtn.layoutAlign = this.isLeftToRight() ? "right" : "left";
- dijit.layout.layoutChildren(this.domNode, this._contentBox,
- [this._menuBtn, this._leftBtn, this._rightBtn, {domNode: this.scrollNode, layoutAlign: "client"}]);
-
- // set proper scroll so that selected tab is visible
- if(this._selectedTab){
- var w = this.scrollNode,
- sl = this._convertToScrollLeft(this._getScrollForSelectedTab());
- w.scrollLeft = sl;
- }
-
- // Enable/disabled left right buttons depending on whether or not user can scroll to left or right
- this._setButtonClass(this._getScroll());
- },
-
- _getScroll: function(){
- // summary:
- // Returns the current scroll of the tabs where 0 means
- // "scrolled all the way to the left" and some positive number, based on #
- // of pixels of possible scroll (ex: 1000) means "scrolled all the way to the right"
- var sl = (this.isLeftToRight() || dojo.isIE < 8 || dojo.isQuirks || dojo.isWebKit) ? this.scrollNode.scrollLeft :
- dojo.style(this.containerNode, "width") - dojo.style(this.scrollNode, "width")
- + (dojo.isIE == 8 ? -1 : 1) * this.scrollNode.scrollLeft;
- return sl;
- },
-
- _convertToScrollLeft: function(val){
- // summary:
- // Given a scroll value where 0 means "scrolled all the way to the left"
- // and some positive number, based on # of pixels of possible scroll (ex: 1000)
- // means "scrolled all the way to the right", return value to set this.scrollNode.scrollLeft
- // to achieve that scroll.
- //
- // This method is to adjust for RTL funniness in various browsers and versions.
- if(this.isLeftToRight() || dojo.isIE < 8 || dojo.isQuirks || dojo.isWebKit){
- return val;
- }else{
- var maxScroll = dojo.style(this.containerNode, "width") - dojo.style(this.scrollNode, "width");
- return (dojo.isIE == 8 ? -1 : 1) * (val - maxScroll);
- }
- },
-
- onSelectChild: function(/*dijit._Widget*/ page){
- // summary:
- // Smoothly scrolls to a tab when it is selected.
-
- var tab = this.pane2button[page.id];
- if(!tab || !page){return;}
-
- var node = tab.domNode;
- if(node != this._selectedTab){
- this._selectedTab = node;
-
- var sl = this._getScroll();
-
- if(sl > node.offsetLeft ||
- sl + dojo.style(this.scrollNode, "width") <
- node.offsetLeft + dojo.style(node, "width")){
- this.createSmoothScroll().play();
- }
- }
-
- this.inherited(arguments);
- },
-
- _getScrollBounds: function(){
- // summary:
- // Returns the minimum and maximum scroll setting to show the leftmost and rightmost
- // tabs (respectively)
- var children = this.getChildren(),
- scrollNodeWidth = dojo.style(this.scrollNode, "width"), // about 500px
- containerWidth = dojo.style(this.containerNode, "width"), // 50,000px
- maxPossibleScroll = containerWidth - scrollNodeWidth, // scrolling until right edge of containerNode visible
- tabsWidth = this._getTabsWidth();
-
- if(children.length && tabsWidth > scrollNodeWidth){
- // Scrolling should happen
- return {
- min: this.isLeftToRight() ? 0 : children[children.length-1].domNode.offsetLeft,
- max: this.isLeftToRight() ?
- (children[children.length-1].domNode.offsetLeft + dojo.style(children[children.length-1].domNode, "width")) - scrollNodeWidth :
- maxPossibleScroll
- };
- }else{
- // No scrolling needed, all tabs visible, we stay either scrolled to far left or far right (depending on dir)
- var onlyScrollPosition = this.isLeftToRight() ? 0 : maxPossibleScroll;
- return {
- min: onlyScrollPosition,
- max: onlyScrollPosition
- };
- }
- },
-
- _getScrollForSelectedTab: function(){
- // summary:
- // Returns the scroll value setting so that the selected tab
- // will appear in the center
- var w = this.scrollNode,
- n = this._selectedTab,
- scrollNodeWidth = dojo.style(this.scrollNode, "width"),
- scrollBounds = this._getScrollBounds();
-
- // TODO: scroll minimal amount (to either right or left) so that
- // selected tab is fully visible, and just return if it's already visible?
- var pos = (n.offsetLeft + dojo.style(n, "width")/2) - scrollNodeWidth/2;
- pos = Math.min(Math.max(pos, scrollBounds.min), scrollBounds.max);
-
- // TODO:
- // If scrolling close to the left side or right side, scroll
- // all the way to the left or right. See this._minScroll.
- // (But need to make sure that doesn't scroll the tab out of view...)
- return pos;
- },
-
- createSmoothScroll : function(x){
- // summary:
- // Creates a dojo._Animation object that smoothly scrolls the tab list
- // either to a fixed horizontal pixel value, or to the selected tab.
- // description:
- // If an number argument is passed to the function, that horizontal
- // pixel position is scrolled to. Otherwise the currently selected
- // tab is scrolled to.
- // x: Integer?
- // An optional pixel value to scroll to, indicating distance from left.
-
- // Calculate position to scroll to
- if(arguments.length > 0){
- // position specified by caller, just make sure it's within bounds
- var scrollBounds = this._getScrollBounds();
- x = Math.min(Math.max(x, scrollBounds.min), scrollBounds.max);
- }else{
- // scroll to center the current tab
- x = this._getScrollForSelectedTab();
- }
-
- if(this._anim && this._anim.status() == "playing"){
- this._anim.stop();
- }
-
- var self = this,
- w = this.scrollNode,
- anim = new dojo._Animation({
- beforeBegin: function(){
- if(this.curve){ delete this.curve; }
- var oldS = w.scrollLeft,
- newS = self._convertToScrollLeft(x);
- anim.curve = new dojo._Line(oldS, newS);
- },
- onAnimate: function(val){
- w.scrollLeft = val;
- }
- });
- this._anim = anim;
-
- // Disable/enable left/right buttons according to new scroll position
- this._setButtonClass(x);
-
- return anim; // dojo._Animation
- },
-
- _getBtnNode: function(e){
- // summary:
- // Gets a button DOM node from a mouse click event.
- // e:
- // The mouse click event.
- var n = e.target;
- while(n && !dojo.hasClass(n, "tabStripButton")){
- n = n.parentNode;
- }
- return n;
- },
-
- doSlideRight: function(e){
- // summary:
- // Scrolls the menu to the right.
- // e:
- // The mouse click event.
- this.doSlide(1, this._getBtnNode(e));
- },
-
- doSlideLeft: function(e){
- // summary:
- // Scrolls the menu to the left.
- // e:
- // The mouse click event.
- this.doSlide(-1,this._getBtnNode(e));
- },
-
- doSlide: function(direction, node){
- // summary:
- // Scrolls the tab list to the left or right by 75% of the widget width.
- // direction:
- // If the direction is 1, the widget scrolls to the right, if it is
- // -1, it scrolls to the left.
-
- if(node && dojo.hasClass(node, "dijitTabBtnDisabled")){return;}
-
- var sWidth = dojo.style(this.scrollNode, "width");
- var d = (sWidth * 0.75) * direction;
-
- var to = this._getScroll() + d;
-
- this._setButtonClass(to);
-
- this.createSmoothScroll(to).play();
- },
-
- _setButtonClass: function(scroll){
- // summary:
- // Adds or removes a class to the left and right scroll buttons
- // to indicate whether each one is enabled/disabled.
- // description:
- // If the tabs are scrolled all the way to the left, the class
- // 'dijitTabBtnDisabled' is added to the left button.
- // If the tabs are scrolled all the way to the right, the class
- // 'dijitTabBtnDisabled' is added to the right button.
- // scroll: Integer
- // amount of horizontal scroll
-
- var cls = "dijitTabBtnDisabled",
- scrollBounds = this._getScrollBounds();
- dojo.toggleClass(this._leftBtn.domNode, cls, scroll <= scrollBounds.min);
- dojo.toggleClass(this._rightBtn.domNode, cls, scroll >= scrollBounds.max);
- }
-});
-
-dojo.declare("dijit.layout._ScrollingTabControllerButton",
- dijit.form.Button,
- {
- baseClass: "dijitTab",
-
- buttonType: "",
-
- buttonClass: "",
-
- tabPosition: "top",
-
- templateString: dojo.cache("dijit.layout", "templates/_ScrollingTabControllerButton.html", "<div id=\"${id}-${buttonType}\" class=\"tabStripButton dijitTab ${buttonClass} tabStripButton-${tabPosition}\"\n\t\tdojoAttachEvent=\"onclick:_onButtonClick,onmouseenter:_onMouse,onmouseleave:_onMouse,onmousedown:_onMouse\">\n\t<div role=\"presentation\" wairole=\"presentation\" class=\"dijitTabInnerDiv\" dojoattachpoint=\"innerDiv,focusNode\">\n\t\t<div role=\"presentation\" wairole=\"presentation\" class=\"dijitTabContent dijitButtonContents\" dojoattachpoint=\"tabContent\">\n\t\t\t<img src=\"${_blankGif}\"/>\n\t\t\t<span dojoAttachPoint=\"containerNode,titleNode\" class=\"dijitButtonText\"></span>\n\t\t</div>\n\t</div>\n</div>\n"),
-
- // Override inherited tabIndex: 0 from dijit.form.Button, because user shouldn't be
- // able to tab to the left/right/menu buttons
- tabIndex: ""
- }
-);
-
-}
diff --git a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/layout/SplitContainer.js b/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/layout/SplitContainer.js
deleted file mode 100644
index 1b4d8a3..0000000
--- a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/layout/SplitContainer.js
+++ /dev/null
@@ -1,589 +0,0 @@
-/*
- Copyright (c) 2004-2009, The Dojo Foundation All Rights Reserved.
- Available via Academic Free License >= 2.1 OR the modified BSD license.
- see: http://dojotoolkit.org/license for details
-*/
-
-
-if(!dojo._hasResource["dijit.layout.SplitContainer"]){ //_hasResource checks added by build. Do not use _hasResource directly in your code.
-dojo._hasResource["dijit.layout.SplitContainer"] = true;
-dojo.provide("dijit.layout.SplitContainer");
-
-//
-// FIXME: make it prettier
-// FIXME: active dragging upwards doesn't always shift other bars (direction calculation is wrong in this case)
-//
-
-dojo.require("dojo.cookie");
-dojo.require("dijit.layout._LayoutWidget");
-
-dojo.declare("dijit.layout.SplitContainer",
- dijit.layout._LayoutWidget,
- {
- // summary:
- // Deprecated. Use `dijit.layout.BorderContainer` instead.
- // description:
- // A Container widget with sizing handles in-between each child.
- // Contains multiple children widgets, all of which are displayed side by side
- // (either horizontally or vertically); there's a bar between each of the children,
- // and you can adjust the relative size of each child by dragging the bars.
- //
- // You must specify a size (width and height) for the SplitContainer.
- // tags:
- // deprecated
-
- constructor: function(){
- dojo.deprecated("dijit.layout.SplitContainer is deprecated", "use BorderContainer with splitter instead", 2.0);
- },
-
- // activeSizing: Boolean
- // If true, the children's size changes as you drag the bar;
- // otherwise, the sizes don't change until you drop the bar (by mouse-up)
- activeSizing: false,
-
- // sizerWidth: Integer
- // Size in pixels of the bar between each child
- sizerWidth: 7, // FIXME: this should be a CSS attribute (at 7 because css wants it to be 7 until we fix to css)
-
- // orientation: String
- // either 'horizontal' or vertical; indicates whether the children are
- // arranged side-by-side or up/down.
- orientation: 'horizontal',
-
- // persist: Boolean
- // Save splitter positions in a cookie
- persist: true,
-
- baseClass: "dijitSplitContainer",
-
- postMixInProperties: function(){
- this.inherited("postMixInProperties",arguments);
- this.isHorizontal = (this.orientation == 'horizontal');
- },
-
- postCreate: function(){
- this.inherited(arguments);
- this.sizers = [];
-
- // overflow has to be explicitly hidden for splitContainers using gekko (trac #1435)
- // to keep other combined css classes from inadvertantly making the overflow visible
- if(dojo.isMozilla){
- this.domNode.style.overflow = '-moz-scrollbars-none'; // hidden doesn't work
- }
-
- // create the fake dragger
- if(typeof this.sizerWidth == "object"){
- try{ //FIXME: do this without a try/catch
- this.sizerWidth = parseInt(this.sizerWidth.toString());
- }catch(e){ this.sizerWidth = 7; }
- }
- var sizer = dojo.doc.createElement('div');
- this.virtualSizer = sizer;
- sizer.style.position = 'relative';
-
- // #1681: work around the dreaded 'quirky percentages in IE' layout bug
- // If the splitcontainer's dimensions are specified in percentages, it
- // will be resized when the virtualsizer is displayed in _showSizingLine
- // (typically expanding its bounds unnecessarily). This happens because
- // we use position: relative for .dijitSplitContainer.
- // The workaround: instead of changing the display style attribute,
- // switch to changing the zIndex (bring to front/move to back)
-
- sizer.style.zIndex = 10;
- sizer.className = this.isHorizontal ? 'dijitSplitContainerVirtualSizerH' : 'dijitSplitContainerVirtualSizerV';
- this.domNode.appendChild(sizer);
- dojo.setSelectable(sizer, false);
- },
-
- destroy: function(){
- delete this.virtualSizer;
- dojo.forEach(this._ownconnects, dojo.disconnect);
- this.inherited(arguments);
- },
- startup: function(){
- if(this._started){ return; }
-
- dojo.forEach(this.getChildren(), function(child, i, children){
- // attach the children and create the draggers
- this._setupChild(child);
-
- if(i < children.length-1){
- this._addSizer();
- }
- }, this);
-
- if(this.persist){
- this._restoreState();
- }
-
- this.inherited(arguments);
- },
-
- _setupChild: function(/*dijit._Widget*/ child){
- this.inherited(arguments);
- child.domNode.style.position = "absolute";
- dojo.addClass(child.domNode, "dijitSplitPane");
- },
-
- _onSizerMouseDown: function(e){
- if(e.target.id){
- for(var i=0;i<this.sizers.length;i++){
- if(this.sizers[i].id == e.target.id){
- break;
- }
- }
- if(i<this.sizers.length){
- this.beginSizing(e,i);
- }
- }
- },
- _addSizer: function(index){
- index = index === undefined ? this.sizers.length : index;
-
- // TODO: use a template for this!!!
- var sizer = dojo.doc.createElement('div');
- sizer.id=dijit.getUniqueId('dijit_layout_SplitterContainer_Splitter');
- this.sizers.splice(index,0,sizer);
- this.domNode.appendChild(sizer);
-
- sizer.className = this.isHorizontal ? 'dijitSplitContainerSizerH' : 'dijitSplitContainerSizerV';
-
- // add the thumb div
- var thumb = dojo.doc.createElement('div');
- thumb.className = 'thumb';
- thumb.id = sizer.id;
- sizer.appendChild(thumb);
-
- // FIXME: are you serious? why aren't we using mover start/stop combo?
- this.connect(sizer, "onmousedown", '_onSizerMouseDown');
-
- dojo.setSelectable(sizer, false);
- },
-
- removeChild: function(widget){
- // summary:
- // Remove sizer, but only if widget is really our child and
- // we have at least one sizer to throw away
- if(this.sizers.length){
- var i=dojo.indexOf(this.getChildren(), widget)
- if(i != -1){
- if(i == this.sizers.length){
- i--;
- }
- dojo.destroy(this.sizers[i]);
- this.sizers.splice(i,1);
- }
- }
-
- // Remove widget and repaint
- this.inherited(arguments);
- if(this._started){
- this.layout();
- }
- },
-
- addChild: function(/*dijit._Widget*/ child, /*Integer?*/ insertIndex){
- // summary:
- // Add a child widget to the container
- // child:
- // a widget to add
- // insertIndex:
- // postion in the "stack" to add the child widget
-
- this.inherited(arguments);
-
- if(this._started){
- // Do the stuff that startup() does for each widget
- var children = this.getChildren();
- if(children.length > 1){
- this._addSizer(insertIndex);
- }
-
- // and then reposition (ie, shrink) every pane to make room for the new guy
- this.layout();
- }
- },
-
- layout: function(){
- // summary:
- // Do layout of panels
-
- // base class defines this._contentBox on initial creation and also
- // on resize
- this.paneWidth = this._contentBox.w;
- this.paneHeight = this._contentBox.h;
-
- var children = this.getChildren();
- if(!children.length){ return; }
-
- //
- // calculate space
- //
-
- var space = this.isHorizontal ? this.paneWidth : this.paneHeight;
- if(children.length > 1){
- space -= this.sizerWidth * (children.length - 1);
- }
-
- //
- // calculate total of SizeShare values
- //
- var outOf = 0;
- dojo.forEach(children, function(child){
- outOf += child.sizeShare;
- });
-
- //
- // work out actual pixels per sizeshare unit
- //
- var pixPerUnit = space / outOf;
-
- //
- // set the SizeActual member of each pane
- //
- var totalSize = 0;
- dojo.forEach(children.slice(0, children.length - 1), function(child){
- var size = Math.round(pixPerUnit * child.sizeShare);
- child.sizeActual = size;
- totalSize += size;
- });
-
- children[children.length-1].sizeActual = space - totalSize;
-
- //
- // make sure the sizes are ok
- //
- this._checkSizes();
-
- //
- // now loop, positioning each pane and letting children resize themselves
- //
-
- var pos = 0;
- var size = children[0].sizeActual;
- this._movePanel(children[0], pos, size);
- children[0].position = pos;
- pos += size;
-
- // if we don't have any sizers, our layout method hasn't been called yet
- // so bail until we are called..TODO: REVISIT: need to change the startup
- // algorithm to guaranteed the ordering of calls to layout method
- if(!this.sizers){
- return;
- }
-
- dojo.some(children.slice(1), function(child, i){
- // error-checking
- if(!this.sizers[i]){
- return true;
- }
- // first we position the sizing handle before this pane
- this._moveSlider(this.sizers[i], pos, this.sizerWidth);
- this.sizers[i].position = pos;
- pos += this.sizerWidth;
-
- size = child.sizeActual;
- this._movePanel(child, pos, size);
- child.position = pos;
- pos += size;
- }, this);
- },
-
- _movePanel: function(panel, pos, size){
- if(this.isHorizontal){
- panel.domNode.style.left = pos + 'px'; // TODO: resize() takes l and t parameters too, don't need to set manually
- panel.domNode.style.top = 0;
- var box = {w: size, h: this.paneHeight};
- if(panel.resize){
- panel.resize(box);
- }else{
- dojo.marginBox(panel.domNode, box);
- }
- }else{
- panel.domNode.style.left = 0; // TODO: resize() takes l and t parameters too, don't need to set manually
- panel.domNode.style.top = pos + 'px';
- var box = {w: this.paneWidth, h: size};
- if(panel.resize){
- panel.resize(box);
- }else{
- dojo.marginBox(panel.domNode, box);
- }
- }
- },
-
- _moveSlider: function(slider, pos, size){
- if(this.isHorizontal){
- slider.style.left = pos + 'px';
- slider.style.top = 0;
- dojo.marginBox(slider, { w: size, h: this.paneHeight });
- }else{
- slider.style.left = 0;
- slider.style.top = pos + 'px';
- dojo.marginBox(slider, { w: this.paneWidth, h: size });
- }
- },
-
- _growPane: function(growth, pane){
- if(growth > 0){
- if(pane.sizeActual > pane.sizeMin){
- if((pane.sizeActual - pane.sizeMin) > growth){
-
- // stick all the growth in this pane
- pane.sizeActual = pane.sizeActual - growth;
- growth = 0;
- }else{
- // put as much growth in here as we can
- growth -= pane.sizeActual - pane.sizeMin;
- pane.sizeActual = pane.sizeMin;
- }
- }
- }
- return growth;
- },
-
- _checkSizes: function(){
-
- var totalMinSize = 0;
- var totalSize = 0;
- var children = this.getChildren();
-
- dojo.forEach(children, function(child){
- totalSize += child.sizeActual;
- totalMinSize += child.sizeMin;
- });
-
- // only make adjustments if we have enough space for all the minimums
-
- if(totalMinSize <= totalSize){
-
- var growth = 0;
-
- dojo.forEach(children, function(child){
- if(child.sizeActual < child.sizeMin){
- growth += child.sizeMin - child.sizeActual;
- child.sizeActual = child.sizeMin;
- }
- });
-
- if(growth > 0){
- var list = this.isDraggingLeft ? children.reverse() : children;
- dojo.forEach(list, function(child){
- growth = this._growPane(growth, child);
- }, this);
- }
- }else{
- dojo.forEach(children, function(child){
- child.sizeActual = Math.round(totalSize * (child.sizeMin / totalMinSize));
- });
- }
- },
-
- beginSizing: function(e, i){
- var children = this.getChildren();
- this.paneBefore = children[i];
- this.paneAfter = children[i+1];
-
- this.isSizing = true;
- this.sizingSplitter = this.sizers[i];
-
- if(!this.cover){
- this.cover = dojo.create('div', {
- style: {
- position:'absolute',
- zIndex:5,
- top: 0,
- left: 0,
- width: "100%",
- height: "100%"
- }
- }, this.domNode);
- }else{
- this.cover.style.zIndex = 5;
- }
- this.sizingSplitter.style.zIndex = 6;
-
- // TODO: REVISIT - we want MARGIN_BOX and core hasn't exposed that yet (but can't we use it anyway if we pay attention? we do elsewhere.)
- this.originPos = dojo.position(children[0].domNode, true);
- if(this.isHorizontal){
- var client = e.layerX || e.offsetX || 0;
- var screen = e.pageX;
- this.originPos = this.originPos.x;
- }else{
- var client = e.layerY || e.offsetY || 0;
- var screen = e.pageY;
- this.originPos = this.originPos.y;
- }
- this.startPoint = this.lastPoint = screen;
- this.screenToClientOffset = screen - client;
- this.dragOffset = this.lastPoint - this.paneBefore.sizeActual - this.originPos - this.paneBefore.position;
-
- if(!this.activeSizing){
- this._showSizingLine();
- }
-
- //
- // attach mouse events
- //
- this._ownconnects = [];
- this._ownconnects.push(dojo.connect(dojo.doc.documentElement, "onmousemove", this, "changeSizing"));
- this._ownconnects.push(dojo.connect(dojo.doc.documentElement, "onmouseup", this, "endSizing"));
-
- dojo.stopEvent(e);
- },
-
- changeSizing: function(e){
- if(!this.isSizing){ return; }
- this.lastPoint = this.isHorizontal ? e.pageX : e.pageY;
- this.movePoint();
- if(this.activeSizing){
- this._updateSize();
- }else{
- this._moveSizingLine();
- }
- dojo.stopEvent(e);
- },
-
- endSizing: function(e){
- if(!this.isSizing){ return; }
- if(this.cover){
- this.cover.style.zIndex = -1;
- }
- if(!this.activeSizing){
- this._hideSizingLine();
- }
-
- this._updateSize();
-
- this.isSizing = false;
-
- if(this.persist){
- this._saveState(this);
- }
-
- dojo.forEach(this._ownconnects, dojo.disconnect);
- },
-
- movePoint: function(){
-
- // make sure lastPoint is a legal point to drag to
- var p = this.lastPoint - this.screenToClientOffset;
-
- var a = p - this.dragOffset;
- a = this.legaliseSplitPoint(a);
- p = a + this.dragOffset;
-
- this.lastPoint = p + this.screenToClientOffset;
- },
-
- legaliseSplitPoint: function(a){
-
- a += this.sizingSplitter.position;
-
- this.isDraggingLeft = !!(a > 0);
-
- if(!this.activeSizing){
- var min = this.paneBefore.position + this.paneBefore.sizeMin;
- if(a < min){
- a = min;
- }
-
- var max = this.paneAfter.position + (this.paneAfter.sizeActual - (this.sizerWidth + this.paneAfter.sizeMin));
- if(a > max){
- a = max;
- }
- }
-
- a -= this.sizingSplitter.position;
-
- this._checkSizes();
-
- return a;
- },
-
- _updateSize: function(){
- //FIXME: sometimes this.lastPoint is NaN
- var pos = this.lastPoint - this.dragOffset - this.originPos;
-
- var start_region = this.paneBefore.position;
- var end_region = this.paneAfter.position + this.paneAfter.sizeActual;
-
- this.paneBefore.sizeActual = pos - start_region;
- this.paneAfter.position = pos + this.sizerWidth;
- this.paneAfter.sizeActual = end_region - this.paneAfter.position;
-
- dojo.forEach(this.getChildren(), function(child){
- child.sizeShare = child.sizeActual;
- });
-
- if(this._started){
- this.layout();
- }
- },
-
- _showSizingLine: function(){
-
- this._moveSizingLine();
-
- dojo.marginBox(this.virtualSizer,
- this.isHorizontal ? { w: this.sizerWidth, h: this.paneHeight } : { w: this.paneWidth, h: this.sizerWidth });
-
- this.virtualSizer.style.display = 'block';
- },
-
- _hideSizingLine: function(){
- this.virtualSizer.style.display = 'none';
- },
-
- _moveSizingLine: function(){
- var pos = (this.lastPoint - this.startPoint) + this.sizingSplitter.position;
- dojo.style(this.virtualSizer,(this.isHorizontal ? "left" : "top"),pos+"px");
- // this.virtualSizer.style[ this.isHorizontal ? "left" : "top" ] = pos + 'px'; // FIXME: remove this line if the previous is better
- },
-
- _getCookieName: function(i){
- return this.id + "_" + i;
- },
-
- _restoreState: function(){
- dojo.forEach(this.getChildren(), function(child, i){
- var cookieName = this._getCookieName(i);
- var cookieValue = dojo.cookie(cookieName);
- if(cookieValue){
- var pos = parseInt(cookieValue);
- if(typeof pos == "number"){
- child.sizeShare = pos;
- }
- }
- }, this);
- },
-
- _saveState: function(){
- if(!this.persist){
- return;
- }
- dojo.forEach(this.getChildren(), function(child, i){
- dojo.cookie(this._getCookieName(i), child.sizeShare, {expires:365});
- }, this);
- }
-});
-
-// These arguments can be specified for the children of a SplitContainer.
-// Since any widget can be specified as a SplitContainer child, mix them
-// into the base widget class. (This is a hack, but it's effective.)
-dojo.extend(dijit._Widget, {
- // sizeMin: [deprecated] Integer
- // Deprecated. Parameter for children of `dijit.layout.SplitContainer`.
- // Minimum size (width or height) of a child of a SplitContainer.
- // The value is relative to other children's sizeShare properties.
- sizeMin: 10,
-
- // sizeShare: [deprecated] Integer
- // Deprecated. Parameter for children of `dijit.layout.SplitContainer`.
- // Size (width or height) of a child of a SplitContainer.
- // The value is relative to other children's sizeShare properties.
- // For example, if there are two children and each has sizeShare=10, then
- // each takes up 50% of the available space.
- sizeShare: 10
-});
-
-}
diff --git a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/layout/StackContainer.js b/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/layout/StackContainer.js
deleted file mode 100644
index 0bac766..0000000
--- a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/layout/StackContainer.js
+++ /dev/null
@@ -1,336 +0,0 @@
-/*
- Copyright (c) 2004-2009, The Dojo Foundation All Rights Reserved.
- Available via Academic Free License >= 2.1 OR the modified BSD license.
- see: http://dojotoolkit.org/license for details
-*/
-
-
-if(!dojo._hasResource["dijit.layout.StackContainer"]){ //_hasResource checks added by build. Do not use _hasResource directly in your code.
-dojo._hasResource["dijit.layout.StackContainer"] = true;
-dojo.provide("dijit.layout.StackContainer");
-
-dojo.require("dijit._Templated");
-dojo.require("dijit.layout._LayoutWidget");
-dojo.requireLocalization("dijit", "common", null, "ROOT,ar,ca,cs,da,de,el,es,fi,fr,he,hu,it,ja,ko,nb,nl,pl,pt,pt-pt,ru,sk,sl,sv,th,tr,zh,zh-tw");
-dojo.require("dojo.cookie");
-
-dojo.declare(
- "dijit.layout.StackContainer",
- dijit.layout._LayoutWidget,
- {
- // summary:
- // A container that has multiple children, but shows only
- // one child at a time
- //
- // description:
- // A container for widgets (ContentPanes, for example) That displays
- // only one Widget at a time.
- //
- // Publishes topics [widgetId]-addChild, [widgetId]-removeChild, and [widgetId]-selectChild
- //
- // Can be base class for container, Wizard, Show, etc.
-
- // doLayout: Boolean
- // If true, change the size of my currently displayed child to match my size
- doLayout: true,
-
- // persist: Boolean
- // Remembers the selected child across sessions
- persist: false,
-
- baseClass: "dijitStackContainer",
-
-/*=====
- // selectedChildWidget: [readonly] dijit._Widget
- // References the currently selected child widget, if any.
- // Adjust selected child with selectChild() method.
- selectedChildWidget: null,
-=====*/
-
- postCreate: function(){
- this.inherited(arguments);
- dojo.addClass(this.domNode, "dijitLayoutContainer");
- dijit.setWaiRole(this.containerNode, "tabpanel");
- this.connect(this.domNode, "onkeypress", this._onKeyPress);
- },
-
- startup: function(){
- if(this._started){ return; }
-
- var children = this.getChildren();
-
- // Setup each page panel to be initially hidden
- dojo.forEach(children, this._setupChild, this);
-
- // Figure out which child to initially display, defaulting to first one
- if(this.persist){
- this.selectedChildWidget = dijit.byId(dojo.cookie(this.id + "_selectedChild"));
- }else{
- dojo.some(children, function(child){
- if(child.selected){
- this.selectedChildWidget = child;
- }
- return child.selected;
- }, this);
- }
- var selected = this.selectedChildWidget;
- if(!selected && children[0]){
- selected = this.selectedChildWidget = children[0];
- selected.selected = true;
- }
-
- // Publish information about myself so any StackControllers can initialize.
- // This needs to happen before this.inherited(arguments) so that for
- // TabContainer, this._contentBox doesn't include the space for the tab labels.
- dojo.publish(this.id+"-startup", [{children: children, selected: selected}]);
-
- // Startup each child widget, and do initial layout like setting this._contentBox,
- // then calls this.resize() which does the initial sizing on the selected child.
- this.inherited(arguments);
- },
-
- resize: function(){
- // Resize is called when we are first made visible (it's called from startup()
- // if we are initially visible). If this is the first time we've been made
- // visible then show our first child.
- var selected = this.selectedChildWidget;
- if(selected && !this._hasBeenShown){
- this._hasBeenShown = true;
- this._showChild(selected);
- }
- this.inherited(arguments);
- },
-
- _setupChild: function(/*dijit._Widget*/ child){
- // Overrides _LayoutWidget._setupChild()
-
- this.inherited(arguments);
-
- dojo.removeClass(child.domNode, "dijitVisible");
- dojo.addClass(child.domNode, "dijitHidden");
-
- // remove the title attribute so it doesn't show up when i hover
- // over a node
- child.domNode.title = "";
- },
-
- addChild: function(/*dijit._Widget*/ child, /*Integer?*/ insertIndex){
- // Overrides _Container.addChild() to do layout and publish events
-
- this.inherited(arguments);
-
- if(this._started){
- dojo.publish(this.id+"-addChild", [child, insertIndex]);
-
- // in case the tab titles have overflowed from one line to two lines
- // (or, if this if first child, from zero lines to one line)
- // TODO: w/ScrollingTabController this is no longer necessary, although
- // ScrollTabController.resize() does need to get called to show/hide
- // the navigation buttons as appropriate, but that's handled in ScrollingTabController.onAddChild()
- this.layout();
-
- // if this is the first child, then select it
- if(!this.selectedChildWidget){
- this.selectChild(child);
- }
- }
- },
-
- removeChild: function(/*dijit._Widget*/ page){
- // Overrides _Container.removeChild() to do layout and publish events
-
- this.inherited(arguments);
-
- if(this._started){
- // this will notify any tablists to remove a button; do this first because it may affect sizing
- dojo.publish(this.id + "-removeChild", [page]);
- }
-
- // If we are being destroyed than don't run the code below (to select another page), because we are deleting
- // every page one by one
- if(this._beingDestroyed){ return; }
-
- if(this._started){
- // in case the tab titles now take up one line instead of two lines
- // TODO: this is overkill in most cases since ScrollingTabController never changes size (for >= 1 tab)
- this.layout();
- }
-
- if(this.selectedChildWidget === page){
- this.selectedChildWidget = undefined;
- if(this._started){
- var children = this.getChildren();
- if(children.length){
- this.selectChild(children[0]);
- }
- }
- }
- },
-
- selectChild: function(/*dijit._Widget|String*/ page){
- // summary:
- // Show the given widget (which must be one of my children)
- // page:
- // Reference to child widget or id of child widget
-
- page = dijit.byId(page);
-
- if(this.selectedChildWidget != page){
- // Deselect old page and select new one
- this._transition(page, this.selectedChildWidget);
- this.selectedChildWidget = page;
- dojo.publish(this.id+"-selectChild", [page]);
-
- if(this.persist){
- dojo.cookie(this.id + "_selectedChild", this.selectedChildWidget.id);
- }
- }
- },
-
- _transition: function(/*dijit._Widget*/newWidget, /*dijit._Widget*/oldWidget){
- // summary:
- // Hide the old widget and display the new widget.
- // Subclasses should override this.
- // tags:
- // protected extension
- if(oldWidget){
- this._hideChild(oldWidget);
- }
- this._showChild(newWidget);
-
- // Size the new widget, in case this is the first time it's being shown,
- // or I have been resized since the last time it was shown.
- // Note that page must be visible for resizing to work.
- if(newWidget.resize){
- if(this.doLayout){
- newWidget.resize(this._containerContentBox || this._contentBox);
- }else{
- // the child should pick it's own size but we still need to call resize()
- // (with no arguments) to let the widget lay itself out
- newWidget.resize();
- }
- }
- },
-
- _adjacent: function(/*Boolean*/ forward){
- // summary:
- // Gets the next/previous child widget in this container from the current selection.
- var children = this.getChildren();
- var index = dojo.indexOf(children, this.selectedChildWidget);
- index += forward ? 1 : children.length - 1;
- return children[ index % children.length ]; // dijit._Widget
- },
-
- forward: function(){
- // summary:
- // Advance to next page.
- this.selectChild(this._adjacent(true));
- },
-
- back: function(){
- // summary:
- // Go back to previous page.
- this.selectChild(this._adjacent(false));
- },
-
- _onKeyPress: function(e){
- dojo.publish(this.id+"-containerKeyPress", [{ e: e, page: this}]);
- },
-
- layout: function(){
- // Implement _LayoutWidget.layout() virtual method.
- if(this.doLayout && this.selectedChildWidget && this.selectedChildWidget.resize){
- this.selectedChildWidget.resize(this._contentBox);
- }
- },
-
- _showChild: function(/*dijit._Widget*/ page){
- // summary:
- // Show the specified child by changing it's CSS, and call _onShow()/onShow() so
- // it can do any updates it needs regarding loading href's etc.
- var children = this.getChildren();
- page.isFirstChild = (page == children[0]);
- page.isLastChild = (page == children[children.length-1]);
- page.selected = true;
-
- dojo.removeClass(page.domNode, "dijitHidden");
- dojo.addClass(page.domNode, "dijitVisible");
-
- page._onShow();
- },
-
- _hideChild: function(/*dijit._Widget*/ page){
- // summary:
- // Hide the specified child by changing it's CSS, and call _onHide() so
- // it's notified.
- page.selected=false;
- dojo.removeClass(page.domNode, "dijitVisible");
- dojo.addClass(page.domNode, "dijitHidden");
-
- page.onHide();
- },
-
- closeChild: function(/*dijit._Widget*/ page){
- // summary:
- // Callback when user clicks the [X] to remove a page.
- // If onClose() returns true then remove and destroy the child.
- // tags:
- // private
- var remove = page.onClose(this, page);
- if(remove){
- this.removeChild(page);
- // makes sure we can clean up executeScripts in ContentPane onUnLoad
- page.destroyRecursive();
- }
- },
-
- destroyDescendants: function(/*Boolean*/preserveDom){
- dojo.forEach(this.getChildren(), function(child){
- this.removeChild(child);
- child.destroyRecursive(preserveDom);
- }, this);
- }
-});
-
-// For back-compat, remove for 2.0
-dojo.require("dijit.layout.StackController");
-
-
-// These arguments can be specified for the children of a StackContainer.
-// Since any widget can be specified as a StackContainer child, mix them
-// into the base widget class. (This is a hack, but it's effective.)
-dojo.extend(dijit._Widget, {
- // selected: Boolean
- // Parameter for children of `dijit.layout.StackContainer` or subclasses.
- // Specifies that this widget should be the initially displayed pane.
- // Note: to change the selected child use `dijit.layout.StackContainer.selectChild`
- selected: false,
-
- // closable: Boolean
- // Parameter for children of `dijit.layout.StackContainer` or subclasses.
- // True if user can close (destroy) this child, such as (for example) clicking the X on the tab.
- closable: false,
-
- // iconClass: String
- // Parameter for children of `dijit.layout.StackContainer` or subclasses.
- // CSS Class specifying icon to use in label associated with this pane.
- iconClass: "",
-
- // showTitle: Boolean
- // Parameter for children of `dijit.layout.StackContainer` or subclasses.
- // When true, display title of this widget as tab label etc., rather than just using
- // icon specified in iconClass
- showTitle: true,
-
- onClose: function(){
- // summary:
- // Parameter for children of `dijit.layout.StackContainer` or subclasses.
- // Callback if a user tries to close the child. Child will be closed if this function returns true.
- // tags:
- // extension
-
- return true; // Boolean
- }
-});
-
-}
diff --git a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/layout/StackController.js b/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/layout/StackController.js
deleted file mode 100644
index 5a9f168..0000000
--- a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/layout/StackController.js
+++ /dev/null
@@ -1,314 +0,0 @@
-/*
- Copyright (c) 2004-2009, The Dojo Foundation All Rights Reserved.
- Available via Academic Free License >= 2.1 OR the modified BSD license.
- see: http://dojotoolkit.org/license for details
-*/
-
-
-if(!dojo._hasResource["dijit.layout.StackController"]){ //_hasResource checks added by build. Do not use _hasResource directly in your code.
-dojo._hasResource["dijit.layout.StackController"] = true;
-dojo.provide("dijit.layout.StackController");
-
-dojo.require("dijit._Widget");
-dojo.require("dijit._Templated");
-dojo.require("dijit._Container");
-dojo.require("dijit.form.ToggleButton");
-dojo.requireLocalization("dijit", "common", null, "ROOT,ar,ca,cs,da,de,el,es,fi,fr,he,hu,it,ja,ko,nb,nl,pl,pt,pt-pt,ru,sk,sl,sv,th,tr,zh,zh-tw");
-
-dojo.declare(
- "dijit.layout.StackController",
- [dijit._Widget, dijit._Templated, dijit._Container],
- {
- // summary:
- // Set of buttons to select a page in a page list.
- // description:
- // Monitors the specified StackContainer, and whenever a page is
- // added, deleted, or selected, updates itself accordingly.
-
- templateString: "<span wairole='tablist' dojoAttachEvent='onkeypress' class='dijitStackController'></span>",
-
- // containerId: [const] String
- // The id of the page container that I point to
- containerId: "",
-
- // buttonWidget: [const] String
- // The name of the button widget to create to correspond to each page
- buttonWidget: "dijit.layout._StackButton",
-
- postCreate: function(){
- dijit.setWaiRole(this.domNode, "tablist");
-
- this.pane2button = {}; // mapping from pane id to buttons
- this.pane2handles = {}; // mapping from pane id to this.connect() handles
-
- // Listen to notifications from StackContainer
- this.subscribe(this.containerId+"-startup", "onStartup");
- this.subscribe(this.containerId+"-addChild", "onAddChild");
- this.subscribe(this.containerId+"-removeChild", "onRemoveChild");
- this.subscribe(this.containerId+"-selectChild", "onSelectChild");
- this.subscribe(this.containerId+"-containerKeyPress", "onContainerKeyPress");
- },
-
- onStartup: function(/*Object*/ info){
- // summary:
- // Called after StackContainer has finished initializing
- // tags:
- // private
- dojo.forEach(info.children, this.onAddChild, this);
- if(info.selected){
- // Show button corresponding to selected pane (unless selected
- // is null because there are no panes)
- this.onSelectChild(info.selected);
- }
- },
-
- destroy: function(){
- for(var pane in this.pane2button){
- this.onRemoveChild(dijit.byId(pane));
- }
- this.inherited(arguments);
- },
-
- onAddChild: function(/*dijit._Widget*/ page, /*Integer?*/ insertIndex){
- // summary:
- // Called whenever a page is added to the container.
- // Create button corresponding to the page.
- // tags:
- // private
-
- // add a node that will be promoted to the button widget
- var refNode = dojo.doc.createElement("span");
- this.domNode.appendChild(refNode);
- // create an instance of the button widget
- var cls = dojo.getObject(this.buttonWidget);
- var button = new cls({
- id: this.id + "_" + page.id,
- label: page.title,
- showLabel: page.showTitle,
- iconClass: page.iconClass,
- closeButton: page.closable,
- title: page.tooltip
- }, refNode);
- dijit.setWaiState(button.focusNode,"selected", "false");
- this.pane2handles[page.id] = [
- this.connect(page, 'attr', function(name, value){
- if(arguments.length == 2){
- var buttonAttr = {
- title: 'label',
- showTitle: 'showLabel',
- iconClass: 'iconClass',
- closable: 'closeButton',
- tooltip: 'title'
- }[name];
- if(buttonAttr){
- button.attr(buttonAttr, value);
- }
- }
- }),
- this.connect(button, 'onClick', dojo.hitch(this,"onButtonClick", page)),
- this.connect(button, 'onClickCloseButton', dojo.hitch(this,"onCloseButtonClick", page))
- ];
- this.addChild(button, insertIndex);
- this.pane2button[page.id] = button;
- page.controlButton = button; // this value might be overwritten if two tabs point to same container
- if(!this._currentChild){ // put the first child into the tab order
- button.focusNode.setAttribute("tabIndex", "0");
- dijit.setWaiState(button.focusNode, "selected", "true");
- this._currentChild = page;
- }
- // make sure all tabs have the same length
- if(!this.isLeftToRight() && dojo.isIE && this._rectifyRtlTabList){
- this._rectifyRtlTabList();
- }
- },
-
- onRemoveChild: function(/*dijit._Widget*/ page){
- // summary:
- // Called whenever a page is removed from the container.
- // Remove the button corresponding to the page.
- // tags:
- // private
-
- if(this._currentChild === page){ this._currentChild = null; }
- dojo.forEach(this.pane2handles[page.id], this.disconnect, this);
- delete this.pane2handles[page.id];
- var button = this.pane2button[page.id];
- if(button){
- this.removeChild(button);
- delete this.pane2button[page.id];
- button.destroy();
- }
- delete page.controlButton;
- },
-
- onSelectChild: function(/*dijit._Widget*/ page){
- // summary:
- // Called when a page has been selected in the StackContainer, either by me or by another StackController
- // tags:
- // private
-
- if(!page){ return; }
-
- if(this._currentChild){
- var oldButton=this.pane2button[this._currentChild.id];
- oldButton.attr('checked', false);
- dijit.setWaiState(oldButton.focusNode, "selected", "false");
- oldButton.focusNode.setAttribute("tabIndex", "-1");
- }
-
- var newButton=this.pane2button[page.id];
- newButton.attr('checked', true);
- dijit.setWaiState(newButton.focusNode, "selected", "true");
- this._currentChild = page;
- newButton.focusNode.setAttribute("tabIndex", "0");
- var container = dijit.byId(this.containerId);
- dijit.setWaiState(container.containerNode, "labelledby", newButton.id);
- },
-
- onButtonClick: function(/*dijit._Widget*/ page){
- // summary:
- // Called whenever one of my child buttons is pressed in an attempt to select a page
- // tags:
- // private
-
- var container = dijit.byId(this.containerId);
- container.selectChild(page);
- },
-
- onCloseButtonClick: function(/*dijit._Widget*/ page){
- // summary:
- // Called whenever one of my child buttons [X] is pressed in an attempt to close a page
- // tags:
- // private
-
- var container = dijit.byId(this.containerId);
- container.closeChild(page);
- if(this._currentChild){
- var b = this.pane2button[this._currentChild.id];
- if(b){
- dijit.focus(b.focusNode || b.domNode);
- }
- }
- },
-
- // TODO: this is a bit redundant with forward, back api in StackContainer
- adjacent: function(/*Boolean*/ forward){
- // summary:
- // Helper for onkeypress to find next/previous button
- // tags:
- // private
-
- if(!this.isLeftToRight() && (!this.tabPosition || /top|bottom/.test(this.tabPosition))){ forward = !forward; }
- // find currently focused button in children array
- var children = this.getChildren();
- var current = dojo.indexOf(children, this.pane2button[this._currentChild.id]);
- // pick next button to focus on
- var offset = forward ? 1 : children.length - 1;
- return children[ (current + offset) % children.length ]; // dijit._Widget
- },
-
- onkeypress: function(/*Event*/ e){
- // summary:
- // Handle keystrokes on the page list, for advancing to next/previous button
- // and closing the current page if the page is closable.
- // tags:
- // private
-
- if(this.disabled || e.altKey ){ return; }
- var forward = null;
- if(e.ctrlKey || !e._djpage){
- var k = dojo.keys;
- switch(e.charOrCode){
- case k.LEFT_ARROW:
- case k.UP_ARROW:
- if(!e._djpage){ forward = false; }
- break;
- case k.PAGE_UP:
- if(e.ctrlKey){ forward = false; }
- break;
- case k.RIGHT_ARROW:
- case k.DOWN_ARROW:
- if(!e._djpage){ forward = true; }
- break;
- case k.PAGE_DOWN:
- if(e.ctrlKey){ forward = true; }
- break;
- case k.DELETE:
- if(this._currentChild.closable){
- this.onCloseButtonClick(this._currentChild);
- }
- dojo.stopEvent(e);
- break;
- default:
- if(e.ctrlKey){
- if(e.charOrCode === k.TAB){
- this.adjacent(!e.shiftKey).onClick();
- dojo.stopEvent(e);
- }else if(e.charOrCode == "w"){
- if(this._currentChild.closable){
- this.onCloseButtonClick(this._currentChild);
- }
- dojo.stopEvent(e); // avoid browser tab closing.
- }
- }
- }
- // handle page navigation
- if(forward !== null){
- this.adjacent(forward).onClick();
- dojo.stopEvent(e);
- }
- }
- },
-
- onContainerKeyPress: function(/*Object*/ info){
- // summary:
- // Called when there was a keypress on the container
- // tags:
- // private
- info.e._djpage = info.page;
- this.onkeypress(info.e);
- }
- });
-
-
-dojo.declare("dijit.layout._StackButton",
- dijit.form.ToggleButton,
- {
- // summary:
- // Internal widget used by StackContainer.
- // description:
- // The button-like or tab-like object you click to select or delete a page
- // tags:
- // private
-
- // Override _FormWidget.tabIndex.
- // StackContainer buttons are not in the tab order by default.
- // Probably we should be calling this.startupKeyNavChildren() instead.
- tabIndex: "-1",
-
- postCreate: function(/*Event*/ evt){
- dijit.setWaiRole((this.focusNode || this.domNode), "tab");
- this.inherited(arguments);
- },
-
- onClick: function(/*Event*/ evt){
- // summary:
- // This is for TabContainer where the tabs are <span> rather than button,
- // so need to set focus explicitly (on some browsers)
- // Note that you shouldn't override this method, but you can connect to it.
- dijit.focus(this.focusNode);
-
- // ... now let StackController catch the event and tell me what to do
- },
-
- onClickCloseButton: function(/*Event*/ evt){
- // summary:
- // StackContainer connects to this function; if your widget contains a close button
- // then clicking it should call this function.
- // Note that you shouldn't override this method, but you can connect to it.
- evt.stopPropagation();
- }
- });
-
-
-}
diff --git a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/layout/TabContainer.js b/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/layout/TabContainer.js
deleted file mode 100644
index d0c3aec..0000000
--- a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/layout/TabContainer.js
+++ /dev/null
@@ -1,75 +0,0 @@
-/*
- Copyright (c) 2004-2009, The Dojo Foundation All Rights Reserved.
- Available via Academic Free License >= 2.1 OR the modified BSD license.
- see: http://dojotoolkit.org/license for details
-*/
-
-
-if(!dojo._hasResource["dijit.layout.TabContainer"]){ //_hasResource checks added by build. Do not use _hasResource directly in your code.
-dojo._hasResource["dijit.layout.TabContainer"] = true;
-dojo.provide("dijit.layout.TabContainer");
-
-dojo.require("dijit.layout._TabContainerBase");
-dojo.require("dijit.layout.TabController");
-dojo.require("dijit.layout.ScrollingTabController");
-
-dojo.declare("dijit.layout.TabContainer",
- dijit.layout._TabContainerBase,
- {
- // summary:
- // A Container with tabs to select each child (only one of which is displayed at a time).
- // description:
- // A TabContainer is a container that has multiple panes, but shows only
- // one pane at a time. There are a set of tabs corresponding to each pane,
- // where each tab has the name (aka title) of the pane, and optionally a close button.
-
- // useMenu: [const] Boolean
- // True if a menu should be used to select tabs when they are too
- // wide to fit the TabContainer, false otherwise.
- useMenu: true,
-
- // useSlider: [const] Boolean
- // True if a slider should be used to select tabs when they are too
- // wide to fit the TabContainer, false otherwise.
- useSlider: true,
-
- // controllerWidget: String
- // An optional parameter to override the widget used to display the tab labels
- controllerWidget: "",
-
- _makeController: function(/*DomNode*/ srcNode){
- // summary:
- // Instantiate tablist controller widget and return reference to it.
- // Callback from _TabContainerBase.postCreate().
- // tags:
- // protected extension
-
- var cls = this.baseClass + "-tabs" + (this.doLayout ? "" : " dijitTabNoLayout"),
- TabController = dojo.getObject(this.controllerWidget);
-
- return new TabController({
- id: this.id + "_tablist",
- tabPosition: this.tabPosition,
- doLayout: this.doLayout,
- containerId: this.id,
- "class": cls,
- nested: this.nested,
- useMenu: this.useMenu,
- useSlider: this.useSlider,
- tabStripClass: this.tabStrip ? this.baseClass + (this.tabStrip ? "":"No") + "Strip": null
- }, srcNode);
- },
-
- postMixInProperties: function(){
- this.inherited(arguments);
-
- // Scrolling controller only works for horizontal non-nested tabs
- if(!this.controllerWidget){
- this.controllerWidget = (this.tabPosition == "top" || this.tabPosition == "bottom") && !this.nested ?
- "dijit.layout.ScrollingTabController" : "dijit.layout.TabController";
- }
- }
-});
-
-
-}
diff --git a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/layout/TabController.js b/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/layout/TabController.js
deleted file mode 100644
index 55e37d0..0000000
--- a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/layout/TabController.js
+++ /dev/null
@@ -1,171 +0,0 @@
-/*
- Copyright (c) 2004-2009, The Dojo Foundation All Rights Reserved.
- Available via Academic Free License >= 2.1 OR the modified BSD license.
- see: http://dojotoolkit.org/license for details
-*/
-
-
-if(!dojo._hasResource["dijit.layout.TabController"]){ //_hasResource checks added by build. Do not use _hasResource directly in your code.
-dojo._hasResource["dijit.layout.TabController"] = true;
-dojo.provide("dijit.layout.TabController");
-
-dojo.require("dijit.layout.StackController");
-
-// Menu is used for an accessible close button, would be nice to have a lighter-weight solution
-dojo.require("dijit.Menu");
-dojo.require("dijit.MenuItem");
-
-dojo.requireLocalization("dijit", "common", null, "ROOT,ar,ca,cs,da,de,el,es,fi,fr,he,hu,it,ja,ko,nb,nl,pl,pt,pt-pt,ru,sk,sl,sv,th,tr,zh,zh-tw");
-
-dojo.declare("dijit.layout.TabController",
- dijit.layout.StackController,
-{
- // summary:
- // Set of tabs (the things with titles and a close button, that you click to show a tab panel).
- // Used internally by `dijit.layout.TabContainer`.
- // description:
- // Lets the user select the currently shown pane in a TabContainer or StackContainer.
- // TabController also monitors the TabContainer, and whenever a pane is
- // added or deleted updates itself accordingly.
- // tags:
- // private
-
- templateString: "<div wairole='tablist' dojoAttachEvent='onkeypress:onkeypress'></div>",
-
- // tabPosition: String
- // Defines where tabs go relative to the content.
- // "top", "bottom", "left-h", "right-h"
- tabPosition: "top",
-
- // buttonWidget: String
- // The name of the tab widget to create to correspond to each page
- buttonWidget: "dijit.layout._TabButton",
-
- _rectifyRtlTabList: function(){
- // summary:
- // For left/right TabContainer when page is RTL mode, rectify the width of all tabs to be equal, otherwise the tab widths are different in IE
-
- if(0 >= this.tabPosition.indexOf('-h')){ return; }
- if(!this.pane2button){ return; }
-
- var maxWidth = 0;
- for(var pane in this.pane2button){
- var ow = this.pane2button[pane].innerDiv.scrollWidth;
- maxWidth = Math.max(maxWidth, ow);
- }
- //unify the length of all the tabs
- for(pane in this.pane2button){
- this.pane2button[pane].innerDiv.style.width = maxWidth + 'px';
- }
- }
-});
-
-dojo.declare("dijit.layout._TabButton",
- dijit.layout._StackButton,
- {
- // summary:
- // A tab (the thing you click to select a pane).
- // description:
- // Contains the title of the pane, and optionally a close-button to destroy the pane.
- // This is an internal widget and should not be instantiated directly.
- // tags:
- // private
-
- // baseClass: String
- // The CSS class applied to the domNode.
- baseClass: "dijitTab",
-
- templateString: dojo.cache("dijit.layout", "templates/_TabButton.html", "<div waiRole=\"presentation\" dojoAttachPoint=\"titleNode\" dojoAttachEvent='onclick:onClick,onmouseenter:_onMouse,onmouseleave:_onMouse'>\n <div waiRole=\"presentation\" class='dijitTabInnerDiv' dojoAttachPoint='innerDiv'>\n <div waiRole=\"presentation\" class='dijitTabContent' dojoAttachPoint='tabContent,focusNode'>\n\t <img src=\"${_blankGif}\" alt=\"\" dojoAttachPoint='iconNode' waiRole=\"presentation\"/>\n\t <span dojoAttachPoint='containerNode' class='tabLabel'></span>\n\t <span class=\"closeButton\" dojoAttachPoint='closeNode'\n\t \t\tdojoAttachEvent='onclick: onClickCloseButton, onmouseenter: _onCloseButtonEnter, onmouseleave: _onCloseButtonLeave'>\n\t \t<img src=\"${_blankGif}\" alt=\"\" dojoAttachPoint='closeIcon' class='closeImage' waiRole=\"presentation\"/>\n\t <span dojoAttachPoint='closeText' class='closeText'>x</span>\n\t </span>\n </div>\n </div>\n</div>\n"),
-
- // Override _FormWidget.scrollOnFocus.
- // Don't scroll the whole tab container into view when the button is focused.
- scrollOnFocus: false,
-
- postMixInProperties: function(){
- // Override blank iconClass from Button to do tab height adjustment on IE6,
- // to make sure that tabs with and w/out close icons are same height
- if(!this.iconClass){
- this.iconClass = "dijitTabButtonIcon";
- }
- },
-
- postCreate: function(){
- this.inherited(arguments);
- dojo.setSelectable(this.containerNode, false);
-
- // If a custom icon class has not been set for the
- // tab icon, set its width to one pixel. This ensures
- // that the height styling of the tab is maintained,
- // as it is based on the height of the icon.
- // TODO: I still think we can just set dijitTabButtonIcon to 1px in CSS <Bill>
- if(this.iconNode.className == "dijitTabButtonIcon"){
- dojo.style(this.iconNode, "width", "1px");
- }
- },
-
- startup: function(){
- this.inherited(arguments);
- var n = this.domNode;
-
- // Required to give IE6 a kick, as it initially hides the
- // tabs until they are focused on.
- setTimeout(function(){
- n.className = n.className;
- }, 1);
- },
-
- _setCloseButtonAttr: function(disp){
- this.closeButton = disp;
- dojo.toggleClass(this.innerDiv, "dijitClosable", disp);
- this.closeNode.style.display = disp ? "" : "none";
- if(disp){
- var _nlsResources = dojo.i18n.getLocalization("dijit", "common");
- if(this.closeNode){
- dojo.attr(this.closeNode,"title", _nlsResources.itemClose);
- if (dojo.isIE<8){
- // IE<8 needs title set directly on image. Only set for IE since alt=""
- // for this node and WCAG 2.0 does not allow title when alt=""
- dojo.attr(this.closeIcon, "title", _nlsResources.itemClose);
- }
- }
- // add context menu onto title button
- var _nlsResources = dojo.i18n.getLocalization("dijit", "common");
- this._closeMenu = new dijit.Menu({
- id: this.id+"_Menu",
- targetNodeIds: [this.domNode]
- });
-
- this._closeMenu.addChild(new dijit.MenuItem({
- label: _nlsResources.itemClose,
- onClick: dojo.hitch(this, "onClickCloseButton")
- }));
- }else{
- if(this._closeMenu){
- this._closeMenu.destroyRecursive();
- delete this._closeMenu;
- }
- }
- },
-
- destroy: function(){
- if(this._closeMenu){
- this._closeMenu.destroyRecursive();
- delete this._closeMenu;
- }
- this.inherited(arguments);
- },
-
- _onCloseButtonEnter: function(){
- // summary:
- // Handler when mouse is moved over the close icon (the X)
- dojo.addClass(this.closeNode, "closeButton-hover");
- },
-
- _onCloseButtonLeave: function(){
- // summary:
- // Handler when mouse is moved off the close icon (the X)
- dojo.removeClass(this.closeNode, "closeButton-hover");
- }
-});
-
-}
diff --git a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/layout/_LayoutWidget.js b/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/layout/_LayoutWidget.js
deleted file mode 100644
index 77e2e29..0000000
--- a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/layout/_LayoutWidget.js
+++ /dev/null
@@ -1,288 +0,0 @@
-/*
- Copyright (c) 2004-2009, The Dojo Foundation All Rights Reserved.
- Available via Academic Free License >= 2.1 OR the modified BSD license.
- see: http://dojotoolkit.org/license for details
-*/
-
-
-if(!dojo._hasResource["dijit.layout._LayoutWidget"]){ //_hasResource checks added by build. Do not use _hasResource directly in your code.
-dojo._hasResource["dijit.layout._LayoutWidget"] = true;
-dojo.provide("dijit.layout._LayoutWidget");
-
-dojo.require("dijit._Widget");
-dojo.require("dijit._Container");
-dojo.require("dijit._Contained");
-
-dojo.declare("dijit.layout._LayoutWidget",
- [dijit._Widget, dijit._Container, dijit._Contained],
- {
- // summary:
- // Base class for a _Container widget which is responsible for laying out its children.
- // Widgets which mixin this code must define layout() to manage placement and sizing of the children.
-
- // baseClass: [protected extension] String
- // This class name is applied to the widget's domNode
- // and also may be used to generate names for sub nodes,
- // for example dijitTabContainer-content.
- baseClass: "dijitLayoutContainer",
-
- // isLayoutContainer: [protected] Boolean
- // Indicates that this widget is going to call resize() on its
- // children widgets, setting their size, when they become visible.
- isLayoutContainer: true,
-
- postCreate: function(){
- dojo.addClass(this.domNode, "dijitContainer");
- dojo.addClass(this.domNode, this.baseClass);
-
- this.inherited(arguments);
- },
-
- startup: function(){
- // summary:
- // Called after all the widgets have been instantiated and their
- // dom nodes have been inserted somewhere under dojo.doc.body.
- //
- // Widgets should override this method to do any initialization
- // dependent on other widgets existing, and then call
- // this superclass method to finish things off.
- //
- // startup() in subclasses shouldn't do anything
- // size related because the size of the widget hasn't been set yet.
-
- if(this._started){ return; }
-
- // Need to call inherited first - so that child widgets get started
- // up correctly
- this.inherited(arguments);
-
- // If I am a not being controlled by a parent layout widget...
- var parent = this.getParent && this.getParent()
- if(!(parent && parent.isLayoutContainer)){
- // Do recursive sizing and layout of all my descendants
- // (passing in no argument to resize means that it has to glean the size itself)
- this.resize();
-
- // Since my parent isn't a layout container, and my style *may be* width=height=100%
- // or something similar (either set directly or via a CSS class),
- // monitor when my size changes so that I can re-layout.
- // For browsers where I can't directly monitor when my size changes,
- // monitor when the viewport changes size, which *may* indicate a size change for me.
- this.connect(dojo.isIE ? this.domNode : dojo.global, 'onresize', function(){
- // Using function(){} closure to ensure no arguments to resize.
- this.resize();
- });
- }
- },
-
- resize: function(changeSize, resultSize){
- // summary:
- // Call this to resize a widget, or after its size has changed.
- // description:
- // Change size mode:
- // When changeSize is specified, changes the marginBox of this widget
- // and forces it to relayout its contents accordingly.
- // changeSize may specify height, width, or both.
- //
- // If resultSize is specified it indicates the size the widget will
- // become after changeSize has been applied.
- //
- // Notification mode:
- // When changeSize is null, indicates that the caller has already changed
- // the size of the widget, or perhaps it changed because the browser
- // window was resized. Tells widget to relayout its contents accordingly.
- //
- // If resultSize is also specified it indicates the size the widget has
- // become.
- //
- // In either mode, this method also:
- // 1. Sets this._borderBox and this._contentBox to the new size of
- // the widget. Queries the current domNode size if necessary.
- // 2. Calls layout() to resize contents (and maybe adjust child widgets).
- //
- // changeSize: Object?
- // Sets the widget to this margin-box size and position.
- // May include any/all of the following properties:
- // | {w: int, h: int, l: int, t: int}
- //
- // resultSize: Object?
- // The margin-box size of this widget after applying changeSize (if
- // changeSize is specified). If caller knows this size and
- // passes it in, we don't need to query the browser to get the size.
- // | {w: int, h: int}
-
- var node = this.domNode;
-
- // set margin box size, unless it wasn't specified, in which case use current size
- if(changeSize){
- dojo.marginBox(node, changeSize);
-
- // set offset of the node
- if(changeSize.t){ node.style.top = changeSize.t + "px"; }
- if(changeSize.l){ node.style.left = changeSize.l + "px"; }
- }
-
- // If either height or width wasn't specified by the user, then query node for it.
- // But note that setting the margin box and then immediately querying dimensions may return
- // inaccurate results, so try not to depend on it.
- var mb = resultSize || {};
- dojo.mixin(mb, changeSize || {}); // changeSize overrides resultSize
- if( !("h" in mb) || !("w" in mb) ){
- mb = dojo.mixin(dojo.marginBox(node), mb); // just use dojo.marginBox() to fill in missing values
- }
-
- // Compute and save the size of my border box and content box
- // (w/out calling dojo.contentBox() since that may fail if size was recently set)
- var cs = dojo.getComputedStyle(node);
- var me = dojo._getMarginExtents(node, cs);
- var be = dojo._getBorderExtents(node, cs);
- var bb = (this._borderBox = {
- w: mb.w - (me.w + be.w),
- h: mb.h - (me.h + be.h)
- });
- var pe = dojo._getPadExtents(node, cs);
- this._contentBox = {
- l: dojo._toPixelValue(node, cs.paddingLeft),
- t: dojo._toPixelValue(node, cs.paddingTop),
- w: bb.w - pe.w,
- h: bb.h - pe.h
- };
-
- // Callback for widget to adjust size of its children
- this.layout();
- },
-
- layout: function(){
- // summary:
- // Widgets override this method to size and position their contents/children.
- // When this is called this._contentBox is guaranteed to be set (see resize()).
- //
- // This is called after startup(), and also when the widget's size has been
- // changed.
- // tags:
- // protected extension
- },
-
- _setupChild: function(/*dijit._Widget*/child){
- // summary:
- // Common setup for initial children and children which are added after startup
- // tags:
- // protected extension
-
- dojo.addClass(child.domNode, this.baseClass+"-child");
- if(child.baseClass){
- dojo.addClass(child.domNode, this.baseClass+"-"+child.baseClass);
- }
- },
-
- addChild: function(/*dijit._Widget*/ child, /*Integer?*/ insertIndex){
- // Overrides _Container.addChild() to call _setupChild()
- this.inherited(arguments);
- if(this._started){
- this._setupChild(child);
- }
- },
-
- removeChild: function(/*dijit._Widget*/ child){
- // Overrides _Container.removeChild() to remove class added by _setupChild()
- dojo.removeClass(child.domNode, this.baseClass+"-child");
- if(child.baseClass){
- dojo.removeClass(child.domNode, this.baseClass+"-"+child.baseClass);
- }
- this.inherited(arguments);
- }
- }
-);
-
-dijit.layout.marginBox2contentBox = function(/*DomNode*/ node, /*Object*/ mb){
- // summary:
- // Given the margin-box size of a node, return its content box size.
- // Functions like dojo.contentBox() but is more reliable since it doesn't have
- // to wait for the browser to compute sizes.
- var cs = dojo.getComputedStyle(node);
- var me = dojo._getMarginExtents(node, cs);
- var pb = dojo._getPadBorderExtents(node, cs);
- return {
- l: dojo._toPixelValue(node, cs.paddingLeft),
- t: dojo._toPixelValue(node, cs.paddingTop),
- w: mb.w - (me.w + pb.w),
- h: mb.h - (me.h + pb.h)
- };
-};
-
-(function(){
- var capitalize = function(word){
- return word.substring(0,1).toUpperCase() + word.substring(1);
- };
-
- var size = function(widget, dim){
- // size the child
- widget.resize ? widget.resize(dim) : dojo.marginBox(widget.domNode, dim);
-
- // record child's size, but favor our own numbers when we have them.
- // the browser lies sometimes
- dojo.mixin(widget, dojo.marginBox(widget.domNode));
- dojo.mixin(widget, dim);
- };
-
- dijit.layout.layoutChildren = function(/*DomNode*/ container, /*Object*/ dim, /*Object[]*/ children){
- // summary
- // Layout a bunch of child dom nodes within a parent dom node
- // container:
- // parent node
- // dim:
- // {l, t, w, h} object specifying dimensions of container into which to place children
- // children:
- // an array like [ {domNode: foo, layoutAlign: "bottom" }, {domNode: bar, layoutAlign: "client"} ]
-
- // copy dim because we are going to modify it
- dim = dojo.mixin({}, dim);
-
- dojo.addClass(container, "dijitLayoutContainer");
-
- // Move "client" elements to the end of the array for layout. a11y dictates that the author
- // needs to be able to put them in the document in tab-order, but this algorithm requires that
- // client be last.
- children = dojo.filter(children, function(item){ return item.layoutAlign != "client"; })
- .concat(dojo.filter(children, function(item){ return item.layoutAlign == "client"; }));
-
- // set positions/sizes
- dojo.forEach(children, function(child){
- var elm = child.domNode,
- pos = child.layoutAlign;
-
- // set elem to upper left corner of unused space; may move it later
- var elmStyle = elm.style;
- elmStyle.left = dim.l+"px";
- elmStyle.top = dim.t+"px";
- elmStyle.bottom = elmStyle.right = "auto";
-
- dojo.addClass(elm, "dijitAlign" + capitalize(pos));
-
- // set size && adjust record of remaining space.
- // note that setting the width of a <div> may affect its height.
- if(pos == "top" || pos == "bottom"){
- size(child, { w: dim.w });
- dim.h -= child.h;
- if(pos == "top"){
- dim.t += child.h;
- }else{
- elmStyle.top = dim.t + dim.h + "px";
- }
- }else if(pos == "left" || pos == "right"){
- size(child, { h: dim.h });
- dim.w -= child.w;
- if(pos == "left"){
- dim.l += child.w;
- }else{
- elmStyle.left = dim.l + dim.w + "px";
- }
- }else if(pos == "client"){
- size(child, dim);
- }
- });
- };
-
-})();
-
-}
diff --git a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/layout/_TabContainerBase.js b/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/layout/_TabContainerBase.js
deleted file mode 100644
index 610de78..0000000
--- a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/layout/_TabContainerBase.js
+++ /dev/null
@@ -1,141 +0,0 @@
-/*
- Copyright (c) 2004-2009, The Dojo Foundation All Rights Reserved.
- Available via Academic Free License >= 2.1 OR the modified BSD license.
- see: http://dojotoolkit.org/license for details
-*/
-
-
-if(!dojo._hasResource["dijit.layout._TabContainerBase"]){ //_hasResource checks added by build. Do not use _hasResource directly in your code.
-dojo._hasResource["dijit.layout._TabContainerBase"] = true;
-dojo.provide("dijit.layout._TabContainerBase");
-
-dojo.require("dijit.layout.StackContainer");
-dojo.require("dijit._Templated");
-
-dojo.declare("dijit.layout._TabContainerBase",
- [dijit.layout.StackContainer, dijit._Templated],
- {
- // summary:
- // Abstract base class for TabContainer. Must define _makeController() to instantiate
- // and return the widget that displays the tab labels
- // description:
- // A TabContainer is a container that has multiple panes, but shows only
- // one pane at a time. There are a set of tabs corresponding to each pane,
- // where each tab has the name (aka title) of the pane, and optionally a close button.
-
- // tabPosition: String
- // Defines where tabs go relative to tab content.
- // "top", "bottom", "left-h", "right-h"
- tabPosition: "top",
-
- baseClass: "dijitTabContainer",
-
- // tabStrip: Boolean
- // Defines whether the tablist gets an extra class for layouting, putting a border/shading
- // around the set of tabs.
- tabStrip: false,
-
- // nested: Boolean
- // If true, use styling for a TabContainer nested inside another TabContainer.
- // For tundra etc., makes tabs look like links, and hides the outer
- // border since the outer TabContainer already has a border.
- nested: false,
-
- templateString: dojo.cache("dijit.layout", "templates/TabContainer.html", "<div class=\"dijitTabContainer\">\n\t<div class=\"dijitTabListWrapper\" dojoAttachPoint=\"tablistNode\"></div>\n\t<div dojoAttachPoint=\"tablistSpacer\" class=\"dijitTabSpacer ${baseClass}-spacer\"></div>\n\t<div class=\"dijitTabPaneWrapper ${baseClass}-container\" dojoAttachPoint=\"containerNode\"></div>\n</div>\n"),
-
- postMixInProperties: function(){
- // set class name according to tab position, ex: dijitTabContainerTop
- this.baseClass += this.tabPosition.charAt(0).toUpperCase() + this.tabPosition.substr(1).replace(/-.*/, "");
-
- this.srcNodeRef && dojo.style(this.srcNodeRef, "visibility", "hidden");
-
- this.inherited(arguments);
- },
-
- postCreate: function(){
- this.inherited(arguments);
-
- // Create the tab list that will have a tab (a.k.a. tab button) for each tab panel
- this.tablist = this._makeController(this.tablistNode);
-
- if(!this.doLayout){ dojo.addClass(this.domNode, "dijitTabContainerNoLayout"); }
-
- if(this.nested){
- /* workaround IE's lack of support for "a > b" selectors by
- * tagging each node in the template.
- */
- dojo.addClass(this.domNode, "dijitTabContainerNested");
- dojo.addClass(this.tablist.containerNode, "dijitTabContainerTabListNested");
- dojo.addClass(this.tablistSpacer, "dijitTabContainerSpacerNested");
- dojo.addClass(this.containerNode, "dijitTabPaneWrapperNested");
- }else{
- dojo.addClass(this.domNode, "tabStrip-" + (this.tabStrip ? "enabled" : "disabled"));
- }
- },
-
- _setupChild: function(/*dijit._Widget*/ tab){
- // Overrides StackContainer._setupChild().
- dojo.addClass(tab.domNode, "dijitTabPane");
- this.inherited(arguments);
- },
-
- startup: function(){
- if(this._started){ return; }
-
- // wire up the tablist and its tabs
- this.tablist.startup();
-
- this.inherited(arguments);
- },
-
- layout: function(){
- // Overrides StackContainer.layout().
- // Configure the content pane to take up all the space except for where the tabs are
-
- if(!this._contentBox || typeof(this._contentBox.l) == "undefined"){return;}
-
- var sc = this.selectedChildWidget;
-
- if(this.doLayout){
- // position and size the titles and the container node
- var titleAlign = this.tabPosition.replace(/-h/, "");
- this.tablist.layoutAlign = titleAlign;
- var children = [this.tablist, {
- domNode: this.tablistSpacer,
- layoutAlign: titleAlign
- }, {
- domNode: this.containerNode,
- layoutAlign: "client"
- }];
- dijit.layout.layoutChildren(this.domNode, this._contentBox, children);
-
- // Compute size to make each of my children.
- // children[2] is the margin-box size of this.containerNode, set by layoutChildren() call above
- this._containerContentBox = dijit.layout.marginBox2contentBox(this.containerNode, children[2]);
-
- if(sc && sc.resize){
- sc.resize(this._containerContentBox);
- }
- }else{
- // just layout the tab controller, so it can position left/right buttons etc.
- if(this.tablist.resize){
- this.tablist.resize({w: dojo.contentBox(this.domNode).w});
- }
-
- // and call resize() on the selected pane just to tell it that it's been made visible
- if(sc && sc.resize){
- sc.resize();
- }
- }
- },
-
- destroy: function(){
- if(this.tablist){
- this.tablist.destroy();
- }
- this.inherited(arguments);
- }
-});
-
-
-}
diff --git a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/nls/ar/common.js b/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/nls/ar/common.js
deleted file mode 100644
index 99af508..0000000
--- a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/nls/ar/common.js
+++ /dev/null
@@ -1 +0,0 @@
-({"buttonOk":"حسنا","buttonCancel":"الغاء","buttonSave":"حفظ","itemClose":"اغلاق"})
\ No newline at end of file
diff --git a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/nls/ar/loading.js b/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/nls/ar/loading.js
deleted file mode 100644
index f8bb535..0000000
--- a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/nls/ar/loading.js
+++ /dev/null
@@ -1 +0,0 @@
-({"loadingState":"جاري التحميل...","errorState":"عفوا، حدث خطأ"})
\ No newline at end of file
diff --git a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/nls/ca/common.js b/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/nls/ca/common.js
deleted file mode 100644
index b9cd065..0000000
--- a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/nls/ca/common.js
+++ /dev/null
@@ -1 +0,0 @@
-({"buttonOk":"D'acord","buttonCancel":"Cancel·la","buttonSave":"Desa","itemClose":"Tanca"})
\ No newline at end of file
diff --git a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/nls/ca/loading.js b/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/nls/ca/loading.js
deleted file mode 100644
index cd368cc..0000000
--- a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/nls/ca/loading.js
+++ /dev/null
@@ -1 +0,0 @@
-({"loadingState":"S'està carregant...","errorState":"Ens sap greu. S'ha produït un error."})
\ No newline at end of file
diff --git a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/nls/common.js b/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/nls/common.js
deleted file mode 100644
index 6573dcd..0000000
--- a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/nls/common.js
+++ /dev/null
@@ -1 +0,0 @@
-({"buttonOk":"OK","buttonCancel":"Cancel","buttonSave":"Save","itemClose":"Close"})
\ No newline at end of file
diff --git a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/nls/cs/common.js b/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/nls/cs/common.js
deleted file mode 100644
index 83b3682..0000000
--- a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/nls/cs/common.js
+++ /dev/null
@@ -1 +0,0 @@
-({"buttonOk":"OK","buttonCancel":"Storno","buttonSave":"Uložit","itemClose":"Zavřít"})
\ No newline at end of file
diff --git a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/nls/cs/loading.js b/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/nls/cs/loading.js
deleted file mode 100644
index c611926..0000000
--- a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/nls/cs/loading.js
+++ /dev/null
@@ -1 +0,0 @@
-({"loadingState":"Probíhá načítání...","errorState":"Omlouváme se, došlo k chybě"})
\ No newline at end of file
diff --git a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/nls/da/common.js b/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/nls/da/common.js
deleted file mode 100644
index 8c51ed8..0000000
--- a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/nls/da/common.js
+++ /dev/null
@@ -1 +0,0 @@
-({"buttonOk":"OK","buttonCancel":"Annullér","buttonSave":"Gem","itemClose":"Luk"})
\ No newline at end of file
diff --git a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/nls/da/loading.js b/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/nls/da/loading.js
deleted file mode 100644
index 5088eaf..0000000
--- a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/nls/da/loading.js
+++ /dev/null
@@ -1 +0,0 @@
-({"loadingState":"Indlæser...","errorState":"Der er opstået en fejl"})
\ No newline at end of file
diff --git a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/nls/de/common.js b/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/nls/de/common.js
deleted file mode 100644
index cd60c45..0000000
--- a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/nls/de/common.js
+++ /dev/null
@@ -1 +0,0 @@
-({"buttonOk":"OK","buttonCancel":"Abbrechen","buttonSave":"Speichern","itemClose":"Schließen"})
\ No newline at end of file
diff --git a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/nls/de/loading.js b/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/nls/de/loading.js
deleted file mode 100644
index 4989983..0000000
--- a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/nls/de/loading.js
+++ /dev/null
@@ -1 +0,0 @@
-({"loadingState":"Wird geladen...","errorState":"Es ist ein Fehler aufgetreten."})
\ No newline at end of file
diff --git a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/nls/el/common.js b/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/nls/el/common.js
deleted file mode 100644
index 8e7a36a..0000000
--- a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/nls/el/common.js
+++ /dev/null
@@ -1 +0,0 @@
-({"buttonOk":"ΟΚ","buttonCancel":"Ακύρωση","buttonSave":"Αποθήκευση","itemClose":"Κλείσιμο"})
\ No newline at end of file
diff --git a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/nls/el/loading.js b/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/nls/el/loading.js
deleted file mode 100644
index 9567b3c..0000000
--- a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/nls/el/loading.js
+++ /dev/null
@@ -1 +0,0 @@
-({"loadingState":"Φόρτωση...","errorState":"Σας ζητούμε συγνώμη, παρουσιάστηκε σφάλμα"})
\ No newline at end of file
diff --git a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/nls/es/common.js b/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/nls/es/common.js
deleted file mode 100644
index b4feef9..0000000
--- a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/nls/es/common.js
+++ /dev/null
@@ -1 +0,0 @@
-({"buttonOk":"Aceptar","buttonCancel":"Cancelar","buttonSave":"Guardar","itemClose":"Cerrar"})
\ No newline at end of file
diff --git a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/nls/es/loading.js b/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/nls/es/loading.js
deleted file mode 100644
index dc969a3..0000000
--- a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/nls/es/loading.js
+++ /dev/null
@@ -1 +0,0 @@
-({"loadingState":"Cargando...","errorState":"Lo siento, se ha producido un error"})
\ No newline at end of file
diff --git a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/nls/fi/common.js b/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/nls/fi/common.js
deleted file mode 100644
index 8b2fc26..0000000
--- a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/nls/fi/common.js
+++ /dev/null
@@ -1 +0,0 @@
-({"buttonOk":"OK","buttonCancel":"Peruuta","buttonSave":"Tallenna","itemClose":"Sulje"})
\ No newline at end of file
diff --git a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/nls/fi/loading.js b/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/nls/fi/loading.js
deleted file mode 100644
index 73e10a1..0000000
--- a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/nls/fi/loading.js
+++ /dev/null
@@ -1 +0,0 @@
-({"loadingState":"Lataus on meneillään...","errorState":"On ilmennyt virhe."})
\ No newline at end of file
diff --git a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/nls/fr/common.js b/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/nls/fr/common.js
deleted file mode 100644
index 9f6aabe..0000000
--- a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/nls/fr/common.js
+++ /dev/null
@@ -1 +0,0 @@
-({"buttonOk":"OK","buttonCancel":"Annuler","buttonSave":"Sauvegarder","itemClose":"Fermer"})
\ No newline at end of file
diff --git a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/nls/fr/loading.js b/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/nls/fr/loading.js
deleted file mode 100644
index ec7192b..0000000
--- a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/nls/fr/loading.js
+++ /dev/null
@@ -1 +0,0 @@
-({"loadingState":"Chargement...","errorState":"Une erreur est survenue"})
\ No newline at end of file
diff --git a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/nls/he/common.js b/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/nls/he/common.js
deleted file mode 100644
index b04d1cc..0000000
--- a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/nls/he/common.js
+++ /dev/null
@@ -1 +0,0 @@
-({"buttonOk":"אישור","buttonCancel":"ביטול","buttonSave":"שמירה","itemClose":"סגירה"})
\ No newline at end of file
diff --git a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/nls/he/loading.js b/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/nls/he/loading.js
deleted file mode 100644
index 7b1d5f3..0000000
--- a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/nls/he/loading.js
+++ /dev/null
@@ -1 +0,0 @@
-({"loadingState":"טעינה...","errorState":"אירעה שגיאה"})
\ No newline at end of file
diff --git a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/nls/hu/common.js b/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/nls/hu/common.js
deleted file mode 100644
index 21a773f..0000000
--- a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/nls/hu/common.js
+++ /dev/null
@@ -1 +0,0 @@
-({"buttonOk":"OK","buttonCancel":"Mégse","buttonSave":"Mentés","itemClose":"Bezárás"})
\ No newline at end of file
diff --git a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/nls/hu/loading.js b/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/nls/hu/loading.js
deleted file mode 100644
index d61e9a2..0000000
--- a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/nls/hu/loading.js
+++ /dev/null
@@ -1 +0,0 @@
-({"loadingState":"Betöltés...","errorState":"Sajnálom, hiba történt"})
\ No newline at end of file
diff --git a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/nls/it/common.js b/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/nls/it/common.js
deleted file mode 100644
index 6b3dc74..0000000
--- a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/nls/it/common.js
+++ /dev/null
@@ -1 +0,0 @@
-({"buttonOk":"OK","buttonCancel":"Annulla","buttonSave":"Salva","itemClose":"Chiudi"})
\ No newline at end of file
diff --git a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/nls/it/loading.js b/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/nls/it/loading.js
deleted file mode 100644
index 60d05e0..0000000
--- a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/nls/it/loading.js
+++ /dev/null
@@ -1 +0,0 @@
-({"loadingState":"Caricamento in corso...","errorState":"Si è verificato un errore"})
\ No newline at end of file
diff --git a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/nls/ja/common.js b/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/nls/ja/common.js
deleted file mode 100644
index b0b48c6..0000000
--- a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/nls/ja/common.js
+++ /dev/null
@@ -1 +0,0 @@
-({"buttonOk":"OK","buttonCancel":"キャンセル","buttonSave":"保存","itemClose":"閉じる"})
\ No newline at end of file
diff --git a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/nls/ja/loading.js b/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/nls/ja/loading.js
deleted file mode 100644
index fa67d67..0000000
--- a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/nls/ja/loading.js
+++ /dev/null
@@ -1 +0,0 @@
-({"loadingState":"ロード中...","errorState":"エラーが発生しました。"})
\ No newline at end of file
diff --git a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/nls/ko/common.js b/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/nls/ko/common.js
deleted file mode 100644
index 8e12bbf..0000000
--- a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/nls/ko/common.js
+++ /dev/null
@@ -1 +0,0 @@
-({"buttonOk":"확인","buttonCancel":"취소","buttonSave":"저장","itemClose":"닫기"})
\ No newline at end of file
diff --git a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/nls/ko/loading.js b/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/nls/ko/loading.js
deleted file mode 100644
index 5d1ca12..0000000
--- a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/nls/ko/loading.js
+++ /dev/null
@@ -1 +0,0 @@
-({"loadingState":"로드 중...","errorState":"죄송합니다. 오류가 발생했습니다."})
\ No newline at end of file
diff --git a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/nls/loading.js b/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/nls/loading.js
deleted file mode 100644
index 1d6fa9b..0000000
--- a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/nls/loading.js
+++ /dev/null
@@ -1 +0,0 @@
-({"loadingState":"Loading...","errorState":"Sorry, an error occurred"})
\ No newline at end of file
diff --git a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/nls/nb/common.js b/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/nls/nb/common.js
deleted file mode 100644
index 73e38c7..0000000
--- a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/nls/nb/common.js
+++ /dev/null
@@ -1 +0,0 @@
-({"buttonOk":"OK","buttonCancel":"Avbryt","buttonSave":"Lagre","itemClose":"Lukk"})
\ No newline at end of file
diff --git a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/nls/nb/loading.js b/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/nls/nb/loading.js
deleted file mode 100644
index dbc314d..0000000
--- a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/nls/nb/loading.js
+++ /dev/null
@@ -1 +0,0 @@
-({"loadingState":"Laster inn...","errorState":"Det oppsto en feil"})
\ No newline at end of file
diff --git a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/nls/nl/common.js b/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/nls/nl/common.js
deleted file mode 100644
index fa4c66e..0000000
--- a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/nls/nl/common.js
+++ /dev/null
@@ -1 +0,0 @@
-({"buttonOk":"OK","buttonCancel":"Annuleren","buttonSave":"Opslaan","itemClose":"Sluiten"})
\ No newline at end of file
diff --git a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/nls/nl/loading.js b/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/nls/nl/loading.js
deleted file mode 100644
index c9870fd..0000000
--- a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/nls/nl/loading.js
+++ /dev/null
@@ -1 +0,0 @@
-({"loadingState":"Bezig met laden...","errorState":"Er is een fout opgetreden"})
\ No newline at end of file
diff --git a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/nls/pl/common.js b/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/nls/pl/common.js
deleted file mode 100644
index c84e539..0000000
--- a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/nls/pl/common.js
+++ /dev/null
@@ -1 +0,0 @@
-({"buttonOk":"OK","buttonCancel":"Anuluj","buttonSave":"Zapisz","itemClose":"Zamknij"})
\ No newline at end of file
diff --git a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/nls/pl/loading.js b/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/nls/pl/loading.js
deleted file mode 100644
index eed3c3e..0000000
--- a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/nls/pl/loading.js
+++ /dev/null
@@ -1 +0,0 @@
-({"loadingState":"Ładowanie...","errorState":"Niestety, wystąpił błąd"})
\ No newline at end of file
diff --git a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/nls/pt-pt/common.js b/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/nls/pt-pt/common.js
deleted file mode 100644
index 7992705..0000000
--- a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/nls/pt-pt/common.js
+++ /dev/null
@@ -1 +0,0 @@
-({"buttonOk":"OK","buttonCancel":"Cancelar","buttonSave":"Guardar","itemClose":"Fechar"})
\ No newline at end of file
diff --git a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/nls/pt-pt/loading.js b/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/nls/pt-pt/loading.js
deleted file mode 100644
index 80257d3..0000000
--- a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/nls/pt-pt/loading.js
+++ /dev/null
@@ -1 +0,0 @@
-({"loadingState":"A carregar...","errorState":"Lamentamos, mas ocorreu um erro"})
\ No newline at end of file
diff --git a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/nls/pt/common.js b/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/nls/pt/common.js
deleted file mode 100644
index b94e6bc..0000000
--- a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/nls/pt/common.js
+++ /dev/null
@@ -1 +0,0 @@
-({"buttonOk":"OK","buttonCancel":"Cancelar","buttonSave":"Salvar","itemClose":"Fechar"})
\ No newline at end of file
diff --git a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/nls/pt/loading.js b/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/nls/pt/loading.js
deleted file mode 100644
index 88cda7a..0000000
--- a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/nls/pt/loading.js
+++ /dev/null
@@ -1 +0,0 @@
-({"loadingState":"Carregando...","errorState":"Desculpe, ocorreu um erro"})
\ No newline at end of file
diff --git a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/nls/ru/common.js b/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/nls/ru/common.js
deleted file mode 100644
index 9a76d09..0000000
--- a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/nls/ru/common.js
+++ /dev/null
@@ -1 +0,0 @@
-({"buttonOk":"ОК","buttonCancel":"Отмена","buttonSave":"Сохранить","itemClose":"Закрыть"})
\ No newline at end of file
diff --git a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/nls/ru/loading.js b/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/nls/ru/loading.js
deleted file mode 100644
index 55cd03b..0000000
--- a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/nls/ru/loading.js
+++ /dev/null
@@ -1 +0,0 @@
-({"loadingState":"Загрузка...","errorState":"Извините, возникла ошибка"})
\ No newline at end of file
diff --git a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/nls/sk/common.js b/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/nls/sk/common.js
deleted file mode 100644
index 59a12d1..0000000
--- a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/nls/sk/common.js
+++ /dev/null
@@ -1 +0,0 @@
-({"buttonOk":"OK","buttonCancel":"Zrušiť","buttonSave":"Uložiť","itemClose":"Zatvoriť"})
\ No newline at end of file
diff --git a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/nls/sk/loading.js b/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/nls/sk/loading.js
deleted file mode 100644
index e805bd8..0000000
--- a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/nls/sk/loading.js
+++ /dev/null
@@ -1 +0,0 @@
-({"loadingState":"Zavádzanie...","errorState":"Nastala chyba"})
\ No newline at end of file
diff --git a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/nls/sl/common.js b/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/nls/sl/common.js
deleted file mode 100644
index 4704cc5..0000000
--- a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/nls/sl/common.js
+++ /dev/null
@@ -1 +0,0 @@
-({"buttonOk":"V redu","buttonCancel":"Prekliči","buttonSave":"Shrani","itemClose":"Zapri"})
\ No newline at end of file
diff --git a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/nls/sl/loading.js b/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/nls/sl/loading.js
deleted file mode 100644
index 4100866..0000000
--- a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/nls/sl/loading.js
+++ /dev/null
@@ -1 +0,0 @@
-({"loadingState":"Nalaganje...","errorState":"Oprostite, prišlo je do napake."})
\ No newline at end of file
diff --git a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/nls/sv/common.js b/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/nls/sv/common.js
deleted file mode 100644
index cd3444f..0000000
--- a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/nls/sv/common.js
+++ /dev/null
@@ -1 +0,0 @@
-({"buttonOk":"OK","buttonCancel":"Avbryt","buttonSave":"Spara","itemClose":"Stäng"})
\ No newline at end of file
diff --git a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/nls/sv/loading.js b/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/nls/sv/loading.js
deleted file mode 100644
index 95b90d2..0000000
--- a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/nls/sv/loading.js
+++ /dev/null
@@ -1 +0,0 @@
-({"loadingState":"Läser in...","errorState":"Det uppstod ett fel."})
\ No newline at end of file
diff --git a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/nls/th/common.js b/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/nls/th/common.js
deleted file mode 100644
index be06dd0..0000000
--- a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/nls/th/common.js
+++ /dev/null
@@ -1 +0,0 @@
-({"buttonOk":"ตกลง","buttonCancel":"ยกเลิก","buttonSave":"บันทึก","itemClose":"ปิด"})
\ No newline at end of file
diff --git a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/nls/th/loading.js b/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/nls/th/loading.js
deleted file mode 100644
index bb6b75d..0000000
--- a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/nls/th/loading.js
+++ /dev/null
@@ -1 +0,0 @@
-({"loadingState":"กำลังโหลด...","errorState":"ขออภัย เกิดข้อผิดพลาด"})
\ No newline at end of file
diff --git a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/nls/tr/common.js b/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/nls/tr/common.js
deleted file mode 100644
index e89e645..0000000
--- a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/nls/tr/common.js
+++ /dev/null
@@ -1 +0,0 @@
-({"buttonOk":"Tamam","buttonCancel":"İptal","buttonSave":"Kaydet","itemClose":"Kapat"})
\ No newline at end of file
diff --git a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/nls/tr/loading.js b/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/nls/tr/loading.js
deleted file mode 100644
index b0ed738..0000000
--- a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/nls/tr/loading.js
+++ /dev/null
@@ -1 +0,0 @@
-({"loadingState":"Yükleniyor...","errorState":"Üzgünüz, bir hata oluştu"})
\ No newline at end of file
diff --git a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/nls/zh-tw/common.js b/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/nls/zh-tw/common.js
deleted file mode 100644
index 5d3fee0..0000000
--- a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/nls/zh-tw/common.js
+++ /dev/null
@@ -1 +0,0 @@
-({"buttonOk":"確定","buttonCancel":"取消","buttonSave":"儲存","itemClose":"關閉"})
\ No newline at end of file
diff --git a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/nls/zh-tw/loading.js b/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/nls/zh-tw/loading.js
deleted file mode 100644
index 0078541..0000000
--- a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/nls/zh-tw/loading.js
+++ /dev/null
@@ -1 +0,0 @@
-({"loadingState":"載入中...","errorState":"抱歉,發生錯誤"})
\ No newline at end of file
diff --git a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/nls/zh/common.js b/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/nls/zh/common.js
deleted file mode 100644
index 0bb6267..0000000
--- a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/nls/zh/common.js
+++ /dev/null
@@ -1 +0,0 @@
-({"buttonOk":"确定","buttonCancel":"取消","buttonSave":"保存","itemClose":"关闭"})
\ No newline at end of file
diff --git a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/nls/zh/loading.js b/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/nls/zh/loading.js
deleted file mode 100644
index c4b6fd7..0000000
--- a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/nls/zh/loading.js
+++ /dev/null
@@ -1 +0,0 @@
-({"loadingState":"正在加载...","errorState":"对不起,发生了错误"})
\ No newline at end of file
diff --git a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/resources/_modules.js b/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/resources/_modules.js
deleted file mode 100644
index 1c977a1..0000000
--- a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/resources/_modules.js
+++ /dev/null
@@ -1,25 +0,0 @@
-/*
- Copyright (c) 2004-2009, The Dojo Foundation All Rights Reserved.
- Available via Academic Free License >= 2.1 OR the modified BSD license.
- see: http://dojotoolkit.org/license for details
-*/
-
-
-/*=====
-// dijit fallback for key summaries otherwise not covered by the doc parser
-
-dijit.demos = {
- // summary:
- // Home of the official dijit demo code
-};
-
-dijit.form = {
- // summary:
- // Form and input related widgets
-};
-
-dijit.layout = {
- // summary:
- // Layout related widgets
-};
-=====*/
diff --git a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/robot.js b/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/robot.js
deleted file mode 100644
index 7c3486d..0000000
--- a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/robot.js
+++ /dev/null
@@ -1,110 +0,0 @@
-/*
- Copyright (c) 2004-2009, The Dojo Foundation All Rights Reserved.
- Available via Academic Free License >= 2.1 OR the modified BSD license.
- see: http://dojotoolkit.org/license for details
-*/
-
-
-if(!dojo._hasResource["dijit.robot"]){ //_hasResource checks added by build. Do not use _hasResource directly in your code.
-dojo._hasResource["dijit.robot"] = true;
-dojo.provide("dijit.robot");
-dojo.require("dojo.robot");
-dojo.provide("dijit._base.place");
-dojo.require("dijit._base.scroll");
-dojo.require("dijit._base.window");
-
-dojo.mixin(doh.robot,{
-
- // users who use doh+dojo+dijit get the added convenience of scrollIntoView
- // automatically firing when they try to move the mouse to an element
-
- _position: function(/*Node*/ n){
- // Returns the dojo.position of the passed node wrt the passed window's viewport,
- // following any parent iframes containing the node and clipping the node to each iframe.
- // precondition: _scrollIntoView already called
- var d = dojo, p = null, M = Math.max, m = Math.min;
- // p: the returned position of the node
- d.forEach(doh.robot._getWindowChain(n), function(w){
- d.withGlobal(w, function(){
- // get the position of the node wrt its parent window
- // if it is a parent frame, its padding and border extents will get added in
- var p2 = d.position(n, false), b = d._getPadBorderExtents(n);
- // if p2 is the position of the original passed node, store the position away as p
- // otherwise, node is actually an iframe. in this case, add the iframe's position wrt its parent window and also the iframe's padding and border extents
- if(!p){
- p = p2;
- }else{
- var view;
- d.withGlobal(n.contentWindow,function(){
- view=dijit.getViewport();
- });
- p2.r = p2.x+view.w;
- p2.b = p2.y+view.h;
- p = {x: M(p.x+p2.x,p2.x)+b.l, // clip left edge of node wrt the iframe
- y: M(p.y+p2.y,p2.y)+b.t, // top edge
- r: m(p.x+p2.x+p.w,p2.r)+b.l, // right edge (to compute width)
- b: m(p.y+p2.y+p.h,p2.b)+b.t}; // bottom edge (to compute height)
- // save a few bytes by computing width and height from r and b
- p.w = p.r-p.x;
- p.h = p.b-p.y;
- }
- // the new node is now the old node's parent iframe
- n=w.frameElement;
- });
- });
- return p;
- },
-
- _scrollIntoView: function(/*Node*/ n){
- // scrolls the passed node into view, scrolling all ancester frames/windows as well.
- // Assumes parent iframes can be made fully visible given the current browser window size
- var d = dojo,
- dr = doh.robot,
- p = null;
- d.forEach(dr._getWindowChain(n), function(w){
- d.withGlobal(w, function(){
- // get the position of the node wrt its parent window
- // if it is a parent frame, its padding and border extents will get added in
- var p2 = d.position(n, false),
- b = d._getPadBorderExtents(n),
- oldp = null;
- // if p2 is the position of the original passed node, store the position away as p
- // otherwise, node is actually an iframe. in this case, add the iframe's position wrt its parent window and also the iframe's padding and border extents
- if(!p){
- p = p2;
- }else{
- oldp = p;
- p = {x: p.x+p2.x+b.l,
- y: p.y+p2.y+b.t,
- w: p.w,
- h: p.h};
-
- }
- // scroll the parent window so that the node translated into the parent window's coordinate space is in view
- dijit.scrollIntoView(n,p);
- // adjust position for the new scroll offsets
- p2 = d.position(n, false);
- if(!oldp){
- p = p2;
- }else{
- p = {x: oldp.x+p2.x+b.l,
- y: oldp.y+p2.y+b.t,
- w: p.w,
- h: p.h};
- }
- // get the parent iframe so it can be scrolled too
- n = w.frameElement;
- });
- });
- },
-
- _getWindowChain : function(/*Node*/ n){
- // Returns an array of windows starting from the passed node's parent window and ending at dojo's window
- var cW = dijit.getDocumentWindow(n.ownerDocument);
- var arr=[cW];
- var f = cW.frameElement;
- return (cW == dojo.global || f == null)? arr : arr.concat(doh.robot._getWindowChain(f));
- }
-});
-
-}
diff --git a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/robotx.js b/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/robotx.js
deleted file mode 100644
index 1031d1a..0000000
--- a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/robotx.js
+++ /dev/null
@@ -1,29 +0,0 @@
-/*
- Copyright (c) 2004-2009, The Dojo Foundation All Rights Reserved.
- Available via Academic Free License >= 2.1 OR the modified BSD license.
- see: http://dojotoolkit.org/license for details
-*/
-
-
-if(!dojo._hasResource["dijit.robotx"]){ //_hasResource checks added by build. Do not use _hasResource directly in your code.
-dojo._hasResource["dijit.robotx"] = true;
-dojo.provide("dijit.robotx");
-dojo.require("dijit.robot");
-dojo.require("dojo.robotx");
-dojo.experimental("dijit.robotx");
-(function(){
-var __updateDocument = doh.robot._updateDocument;
-
-dojo.mixin(doh.robot,{
- _updateDocument: function(){
- __updateDocument();
- var win = dojo.global;
- if(win["dijit"]){
- dijit.registry = win.dijit.registry;
- }
- }
-});
-
-})();
-
-}
diff --git a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/themes/a11y/README.txt b/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/themes/a11y/README.txt
deleted file mode 100644
index a809354..0000000
--- a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/themes/a11y/README.txt
+++ /dev/null
@@ -1,3 +0,0 @@
-This folder contains images used by all themes when in "high-contrast" mode.
-
-If you think you need to put something here, please talk to Becky or Bill first.
\ No newline at end of file
diff --git a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/themes/a11y/colors3x4.png b/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/themes/a11y/colors3x4.png
deleted file mode 100644
index e407881..0000000
--- a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/themes/a11y/colors3x4.png
+++ /dev/null
Binary files differ
diff --git a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/themes/a11y/colors7x10.png b/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/themes/a11y/colors7x10.png
deleted file mode 100644
index 77d22ce..0000000
--- a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/themes/a11y/colors7x10.png
+++ /dev/null
Binary files differ
diff --git a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/themes/a11y/indeterminate_progress.gif b/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/themes/a11y/indeterminate_progress.gif
deleted file mode 100644
index 66f535c..0000000
--- a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/themes/a11y/indeterminate_progress.gif
+++ /dev/null
Binary files differ
diff --git a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/themes/dijit.css b/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/themes/dijit.css
deleted file mode 100644
index 284199c..0000000
--- a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/themes/dijit.css
+++ /dev/null
@@ -1,1866 +0,0 @@
-/*
- Essential styles that themes can inherit.
- In other words, works but doesn't look great.
-*/
-
-
-
-/****
- GENERIC PIECES
- ****/
-
-.dijitReset {
- /* Use this style to null out padding, margin, border in your template elements
- so that page specific styles don't break them.
- - Use in all TABLE, TR and TD tags.
- */
- margin:0;
- border:0;
- padding:0;
- line-height:normal;
- font: inherit;
- color: inherit;
-}
-
-.dijitInline {
- /* To inline block elements.
- Similar to InlineBox below, but this has fewer side-effects in Moz.
- Also, apparently works on a DIV as well as a FIELDSET.
- */
- display:inline-block; /* webkit and FF3 */
- #zoom: 1; /* set hasLayout:true to mimic inline-block */
- #display:inline; /* don't use .dj_ie since that increases the priority */
- border:0;
- padding:0;
- vertical-align:middle;
- #vertical-align: auto; /* makes TextBox,Button line up w/native counterparts on IE6 */
-}
-
-.dijitHidden {
- /* To hide unselected panes in StackContainer etc. */
- display: none !important;
-}
-
-.dijitVisible {
- /* To show selected pane in StackContainer etc. */
- display: block !important; /* override user's display:none setting via style setting or indirectly via class */
- position: relative; /* to support setting width/height, see #2033 */
-}
-
-
-.dj_ie INPUT.dijitTextBox,
-.dj_ie .dijitInputField INPUT {
- font-size: 100%;
-}
-
-.dj_ie .dijitInputField INPUT { /* try to get rid of IE implicit margin around INPUT */
- margin: -1px 0 !important;
-}
-
-.dijitInlineTable {
- /* To inline tables with a given width set (otherwise, use dijitInline above) */
- display:inline-table;
- display:inline-block; /* webkit and FF3 */
- #zoom: 1; /* set hasLayout:true to mimic inline-block */
- #display:inline; /* don't use .dj_ie since that increases the priority */
- box-sizing: content-box; -moz-box-sizing: content-box;
- border:0;
- padding:0;
-}
-
-.dijitTeeny {
- font-size:1px;
- line-height:1px;
-}
-
-/*
- * Popup items have a wrapper div (dijitPopup)
- * with the real popup inside, and maybe an iframe too
- */
-.dijitPopup {
- position: absolute;
- background-color: transparent;
- margin: 0;
- border: 0;
- padding: 0;
-}
-.dijit_a11y .dijitPopup,
-.dijit_ally .dijitPopup div,
-.dijit_a11y .dijitPopup table,
-.dijit_a11y .dijitTooltipContainer {
- background-color: white !important;
-}
-
-.dijitInputField {
- overflow:hidden;
- #zoom:1;
-}
-
-.dijitPositionOnly {
- /* Null out all position-related properties */
- padding: 0 !important;
- border: 0 !important;
- background-color: transparent !important;
- background-image: none !important;
- height: auto !important;
- width: auto !important;
-}
-
-.dijitNonPositionOnly {
- /* Null position-related properties */
- float: none !important;
- position: static !important;
- margin: 0 0 0 0 !important;
- vertical-align: middle !important;
-}
-
-.dijitBackgroundIframe {
- /* iframe used to prevent problems with PDF or other applets overlaying menus etc */
- position: absolute;
- left: 0;
- top: 0;
- width: 100%;
- height: 100%;
- z-index: -1;
- border: 0;
- padding: 0;
- margin: 0;
-}
-
-.dijitClickableRegion {
- /* An InlineEditBox in view mode (click this to edit the text) */
- background-color: #e2ebf2;
- cursor: text;
-}
-
-
-.dijitDisplayNone {
- /* hide something. Use this as a class rather than element.style so another class can override */
- display:none !important;
-}
-
-.dijitContainer {
- /* for all layout containers */
- overflow: hidden; /* need on IE so something can be reduced in size, and so scrollbars aren't temporarily displayed when resizing */
-}
-
-/****
- A11Y
- ****/
-.dijit_a11y * {
- background-image:none !important;
-}
-
-.dijit_a11y .dijitCalendarIncrementControl {
- display: none; /* don't display icon */
-}
-.dijit_a11y .dijitA11ySideArrow {
- display: inline !important; /* display text instead */
- cursor: pointer;
-}
-
-/*
- * Since we can't use shading in a11y mode, and since the underline indicates today's date,
- * use a border to show the selected date.
- * Avoid screen jitter when switching selected date by compensating for the selected node's
- * border w/padding on other nodes.
- */
-.dijit_a11y .dijitCalendarDateLabel {
- padding: 1px;
-}
-.dijit_a11y .dijitCalendarSelectedDate .dijitCalendarDateLabel {
- border: solid 1px black;
- padding: 0px;
-}
-.dijit_a11y .dijitCalendarDateTemplate {
- padding-bottom: 0.1em !important; /* otherwise bottom border doesn't appear on IE */
-}
-
-.dijit_a11y .dijit * {
- background:white !important;
- color:black !important;
-}
-.dijit_a11y .dijitButtonNode {
- border-color: black!important;
- border-style: outset!important;
- border-width: medium!important;
-}
-
-.dijit_a11y .dijitComboBoxReadOnly .dijitInputField,
-.dijit_a11y .dijitComboBoxReadOnly .dijitButtonNode,
-.dijit_a11y .dijitSpinnerReadOnly .dijitButtonNode,
-.dijit_a11y .dijitSpinnerReadOnly .dijitInputField,
-.dijit_a11y .dijitButtonDisabled .dijitButtonNode,
-.dijit_a11y .dijitDropDownButtonDisabled .dijitButtonNode,
-.dijit_a11y .dijitComboButtonDisabled .dijitButtonNode,
-.dijit_a11y .dijitComboBoxDisabled .dijitInputField,
-.dijit_a11y .dijitComboBoxDisabled .dijitButtonNode,
-.dijit_a11y .dijitSpinnerDisabled .dijitButtonNode,
-.dijit_a11y .dijitSpinnerDisabled .dijitInputField {
- border-style: outset!important;
- border-width: medium!important;
- border-color: #999 !important;
- color:#999 !important;
-}
-
-/* button inner contents - labels, icons etc. */
-.dijitButtonNode * {
- vertical-align: middle;
-}
-.dijit_a11y .dijitArrowButtonInner {
- width: 1em;
- display: none !important;
-}
-.dijitButtonNode .dijitArrowButtonInner {
- background:no-repeat center;
- width: 16px;
-}
-.dijitComboBox .dijitArrowButtonInner {
- display: block;
-}
-
-/* In high contrast mode, display the check symbol */
-.dijit_a11y .dijitToggleButtonChecked .dijitToggleButtonIconChar {
- display: inline !important;
-}
-
-
-/****
- 3-element borders: ( dijitLeft + dijitStretch + dijitRight )
- ****/
-
-.dijitLeft {
- /* Left part of a 3-element border */
- background-position:left top;
- background-repeat:no-repeat;
-}
-
-.dijitStretch {
- /* Middle (stretchy) part of a 3-element border */
- white-space:nowrap; /* MOW: move somewhere else */
- background-repeat:repeat-x;
-}
-
-.dijitRight {
- /* Right part of a 3-element border */
- #display:inline; /* IE7 sizes to outer size w/o this */
- background-position:right top;
- background-repeat:no-repeat;
-}
-
-.dijitToggleButton,
-.dijitButton,
-.dijitDropDownButton,
-.dijitComboButton {
- /* outside of button */
- margin: 0.2em;
-}
-
-.dijitToolbar .dijitToggleButton,
-.dijitToolbar .dijitButton,
-.dijitToolbar .dijitDropDownButton,
-.dijitToolbar .dijitComboButton {
- margin: 0;
-}
-
-.dj_ie8 .dijitToolbar button,
-.dj_webkit .dijitToolbar button {
- /* FF and IE<8 adds implicit padding to buttons, so make other browsers follow suit,
- * to avoid a bunch of browse specific rules in theme files
- */
- padding: 1px 2px;
-}
-
-.dj_ie .dijitToolbar .dijitComboBox{
- /* make combobox buttons align porperly with other buttons in a toolbar */
- vertical-align: middle;
-}
-
-.dj_ie .dijitComboButton {
- /* hack to get inline-table to vertically align w/other buttons */
- margin-bottom: -3px;
-}
-
-.dj_webkit .dijitToolbar .dijitDropDownButton {
- padding-left: 0.3em;
-}
-.dj_gecko .dijitToolbar .dijitButtonNode::-moz-focus-inner {
- padding:0;
-}
-
-.dijitButtonNode {
- /* Node that is acting as a button -- may or may not be a BUTTON element */
- border:1px solid gray;
- margin:0;
- line-height:normal;
- vertical-align: middle;
- #vertical-align: auto;
- text-align:center;
- white-space: nowrap;
-}
-
-.dijitButtonNode, .dijitButtonNode * {
- cursor: pointer;
-}
-
-/**** Disabled cursor *****/
-.dijitReadOnly *,
-.dijitDisabled *,
-.dijitReadOnly,
-.dijitDisabled,
-.dijitDisabledClickableRegion { /* a region the user would be able to click on, but it's disabled */
- cursor: not-allowed !important;
-}
-
-.dj_ie .dijitButtonNode {
- /* ensure hasLayout */
- zoom: 1;
-}
-
-.dj_ie .dijitButtonNode button {
- /*
- disgusting hack to get rid of spurious padding around button elements
- on IE. MSIE is truly the web's boat anchor.
- */
- overflow: visible;
-}
-
-.dijitArrowButton {
- /* Node that is acting as a arrow button -- drop down (spinner has its own treatment). Also gets dijitButtonNode */
- /* place AFTER dijitButtonNode so it overrides */
- padding: 0 .4em;
-}
-DIV.dijitArrowButton {
- float: right;
-}
-
-.dijitSpinner .dijitInputLayoutContainer .dijitArrowButton {
- border-style: solid;
- border-width: 0 0 0 1px !important;
- padding: 0;
- position: absolute;
- right: 0;
- float: none;
-}
-.dijitSpinner .dijitInputLayoutContainer .dijitArrowButton {
- position: absolute;
- height: 50%;
-}
-.dijitSpinner .dijitInputLayoutContainer .dijitDownArrowButton {
- top: auto;
- bottom: 0;
- border-top-width: 1px !important;
-}
-.dijitSpinner .dijitInputLayoutContainer .dijitUpArrowButton {
- top: 0;
- bottom: auto;
-}
-
-TABLE.dijitComboButton {
- /* In ComboButton, borders are on each cell rather than on <table> itself */
- border-collapse: collapse;
- border:0;
- padding:0;
- margin:0;
-}
-.dijitToolbar .dijitComboButton {
- /* because Toolbar only draws a border around the hovered thing */
- border-collapse: separate;
-}
-
-.dj_ie BUTTON.dijitButtonNode {
- overflow: visible; /* eliminates arbitrary left and right padding on buttons */
-}
-
-table .dijitButton .dijitButtonNode,
-table .dijitComboButton .dijitButtonNode {
- #overflow:hidden; /* visible messes up if the button is inside a table on IE */
-}
-
-
-
-.dijitButtonNode IMG {
- /* make text and images line up cleanly */
- vertical-align:middle;
- /*margin-bottom:.2em;*/
-}
-
-/******
- TextBox related.
- Everything that has an <input>
-*******/
-
-.dijitTextBox,
-.dijitComboBox,
-.dijitSpinner {
- border: solid black 1px;
- #overflow: hidden; /* #6027, #6067 */
- width: 15em; /* need to set default size on outer node since inner nodes say <input style="width:100%"> and <td width=100%>. user can override */
- vertical-align: middle;
- #vertical-align: auto;
-}
-
-.dijitTimeTextBox {
- width: 8em;
-}
-
-/* rules for safari to deal with fuzzy blue focus border */
-.dijitTextBox input:focus,
-.dijitComboBox input:focus,
-.dijitSpinner input:focus {
- outline: none; /* blue fuzzy line looks wrong on combobox or something w/validation icon showing */
-}
-.dijitTextBoxFocused,
-.dijitComboBoxFocused,
-.dijitSpinnerFocused, .dijitSpinnerUpArrowActive, .dijitSpinnerDownArrowActive,
-.dijitTextAreaFocused {
- /* should we display focus like we do on other browsers, or use the safari standard focus indicator?? */
- outline: auto 5px -webkit-focus-ring-color;
-}
-
-.dijitTextBox INPUT,
-.dijitComboBox INPUT,
-.dijitSpinner INPUT {
- border-left: solid black 1px; /* TODO: for RTL mode should be border-right */
- display:inline;
- position:static !important;
- border:0 !important;
- margin:0 !important;
- vertical-align:top !important;
- background-color:transparent !important;
- background-image:none !important;
- width:100% !important;
-}
-
-/* Display an "X" for invalid input. Themes will override these rules to display an icon instead.
-*/
-.dijitValidationIcon {
- visibility: hidden;
- display: block;
- padding: 0 2px;
- float: right;
- height: auto;
-}
-.dijitValidationIconText {
- visibility: hidden;
- display: none;
- float:right;
- font-family: sans-serif;
- font-style:italic;
- font-size: 0.75em;
- padding-right: 0.15em;
- line-height: 160%;
-}
-.dijit_a11y .dijitValidationIcon { display: none !important; }
-.dijit_a11y .dijitValidationIconText { display: block !important; }
-
-.dijitError .dijitValidationIcon,
-.dijitError .dijitValidationIconText {
- visibility: visible;
-}
-
-.dijitTextBox .dijitArrowButton {
- /* this is for a combo box with no arrow displayed; we set baseClass=TextBox */
- display:none;
-}
-
-/****
- dijit.form.CheckBox
- &
- dijit.form.RadioButton
- ****/
-
-.dijitCheckBox,
-.dijitRadio,
-.dijitCheckBoxInput {
- padding: 0;
- border: 0;
- width: 16px;
- height: 16px;
- background-position:center center;
- background-repeat:no-repeat;
- overflow: hidden;
-}
-
-.dijitCheckBox INPUT,
-.dijitRadio INPUT {
- margin: 0;
- padding: 0;
- display: block;
-}
-
-.dijitCheckBoxInput {
- /* place the actual input on top, but all-but-invisible */
- opacity: 0.01;
-}
-
-.dj_ie .dijitCheckBoxInput {
- filter: alpha(opacity=0);
-}
-
-.dijit_a11y .dijitCheckBox,
-.dijit_a11y .dijitRadio {
- width: auto;
- height: auto;
-}
-.dijit_a11y .dijitCheckBoxInput {
- opacity: 1;
- filter: none;
- width: auto;
- height: auto;
-}
-
-
-/****
- dijit.ProgressBar
- ****/
-
-.dijitProgressBarEmpty{
- /* outer container and background of the bar that's not finished yet*/
- position:relative;overflow:hidden;
- border:1px solid black; /* a11y: border necessary for high-contrast mode */
- z-index:0; /* establish a stacking context for this progress bar */
-}
-
-.dijitProgressBarFull {
- /* outer container for background of bar that is finished */
- position:absolute;
- overflow:hidden;
- z-index:-1;
- top:0;
- width:100%;
-}
-.dj_ie6 .dijitProgressBarFull {
- height:1.6em;
-}
-
-.dijitProgressBarTile {
- /* inner container for finished portion */
- position:absolute;
- overflow:hidden;
- top:0;
- left:0;
- bottom:0;
- right:0;
- margin:0;
- padding:0;
- width:auto;
- height:auto;
- background-color:#aaa;
- background-attachment: fixed;
-}
-
-.dijit_a11y .dijitProgressBarTile{
- /* a11y: The border provides visibility in high-contrast mode */
- border-width:4px;
- border-style:solid;
- background-color:transparent !important;
-}
-
-.dj_ie6 .dijitProgressBarTile {
- /* width:auto works in IE6 with position:static but not position:absolute */
- position:static;
- /* height:auto or 100% does not work in IE6 */
- height:1.6em;
-}
-
-.dijitProgressBarIndeterminate .dijitProgressBarLabel {
- visibility:hidden;
-}
-
-.dijitProgressBarIndeterminate .dijitProgressBarTile {
- /* animated gif for 'indeterminate' mode */
-}
-
-.dijitProgressBarIndeterminateHighContrastImage {
- display:none;
-}
-
-.dijit_a11y .dijitProgressBarIndeterminate .dijitProgressBarIndeterminateHighContrastImage {
- display:block;
- position:absolute;
- top:0;
- bottom:0;
- margin:0;
- padding:0;
- width:100%;
- height:auto;
-}
-
-.dijitProgressBarLabel {
- display:block;
- position:static;
- width:100%;
- text-align:center;
- background-color:transparent !important;
-}
-
-/****
- dijit.Tooltip
- ****/
-
-.dijitTooltip {
- position: absolute;
- z-index: 2000;
- display: block;
- /* make visible but off screen */
- left: 50%;
- top: -10000px;
- overflow: visible;
-}
-
-.dijitTooltipContainer {
- border: solid black 2px;
- background: #b8b5b5;
- color: black;
- font-size: small;
-}
-
-.dijitTooltipFocusNode {
- padding: 2px 2px 2px 2px;
-}
-
-.dijitTooltipConnector {
- position: absolute;
-}
-
-.dijitTooltipData {
- display:none;
-}
-/* MOW: using actual images at this time ??? close???
-/* draw an arrow with CSS only * /
-.dijitTooltipConnector {
- /* the border on the triangle * /
- font-size: 0; line-height: 0%; width: 0;
- border-top: none;
- border-bottom: 14px solid black;
- border-left: 7px solid transparent;
- border-right: 7px solid transparent;
- top: -14px;
- left: 3px;
- z-index: 2;
-}
-
-.dijitTooltipConnector div {
- /* the background of the triangle * /
- font-size: 0; line-height: 0%; width: 0;
- position: absolute;
- border-bottom: 10px solid #b8b5b5;
- border-left: 5px solid transparent;
- border-right: 5px solid transparent;
- top: 6px;
- left: -5px;
- z-index: 3;
-}
-
-*/
-
-
-
-/* Layout widgets. This is essential CSS to make layout work (it isn't "styling" CSS)
- make sure that the position:absolute in dijitAlign* overrides other classes */
-
-.dijitLayoutContainer{
- position: relative;
- display: block;
- overflow: hidden;
-}
-
-body .dijitAlignTop,
-body .dijitAlignBottom,
-body .dijitAlignLeft,
-body .dijitAlignRight {
- position: absolute;
- overflow: hidden;
-}
-
-body .dijitAlignClient { position: absolute; }
-
-/*
- * BorderContaienr
- *
- * .dijitBorderContainer is a stylized layout where panes have border and margin.
- * .dijitBorderContainerNoGutter is a raw layout.
- */
-.dijitBorderContainer, .dijitBorderContainerNoGutter {
- position:relative;
- overflow: hidden;
-}
-
-.dijitBorderContainerPane,
-.dijitBorderContainerNoGutterPane {
- position: absolute !important; /* !important to override position:relative in dijitTabContainer etc. */
- z-index: 2; /* above the splitters so that off-by-one browser errors don't cover up border of pane */
-}
-
-.dijitBorderContainer > .dijitTextArea {
- /* On Safari, for SimpleTextArea inside a BorderContainer,
- don't want to display the grip to resize */
- resize: none;
-}
-
-.dijitGutter {
- /* gutter is just a place holder for empty space between panes in BorderContainer */
- position: absolute;
- font-size: 1px; /* needed by IE6 even though div is empty, otherwise goes to 15px */
-}
-
-/* SplitContainer
-
- 'V' == container that splits vertically (up/down)
- 'H' = horizontal (left/right)
-*/
-
-.dijitSplitter {
- position: absolute;
- overflow: hidden;
- z-index: 10; /* above the panes so that splitter focus is visible on FF, see #7583*/
- background-color: #fff;
- border-color: gray;
- border-style: solid;
- border-width: 0;
-}
-.dj_ie .dijitSplitter {
- z-index: 1; /* behind the panes so that pane borders aren't obscured see test_Gui.html/[14392] */
-}
-
-.dijitSplitterActive {
- z-index: 11 !important;
-}
-
-.dijitSplitterCover{
- position:absolute;
- z-index:-1;
- top:0;
- left:0;
- width:100%;
- height:100%;
-}
-
-.dijitSplitterCoverActive{
- z-index:3 !important;
-}
-
-/* #6945: stop mouse events */
-.dj_ie .dijitSplitterCover{
- background: white;
- filter: alpha(opacity=0);
-}
-
-.dijitSplitterH {
- height: 7px;
- border-top:1px;
- border-bottom:1px;
- cursor: ns-resize;
-}
-.dijitSplitterV {
- width: 7px;
- border-left:1px;
- border-right:1px;
- cursor: ew-resize;
-}
-.dijitSplitContainer{
- position: relative;
- overflow: hidden;
- display: block;
-}
-
-.dijitSplitPane{
- position: absolute;
-}
-
-.dijitSplitContainerSizerH,
-.dijitSplitContainerSizerV {
- position:absolute;
- font-size: 1px;
- cursor: move;
- cursor: w-resize;
- background-color: ThreeDFace;
- border: 1px solid;
- border-color: ThreeDHighlight ThreeDShadow ThreeDShadow ThreeDHighlight;
- margin: 0;
-}
-
-.dijitSplitContainerSizerH .thumb, .dijitSplitterV .dijitSplitterThumb {
- overflow:hidden;
- position:absolute;
- top:49%;
-}
-
-.dijitSplitContainerSizerV .thumb, .dijitSplitterH .dijitSplitterThumb {
- position:absolute;
- left:49%;
-}
-
-.dijitSplitterShadow,
-.dijitSplitContainerVirtualSizerH,
-.dijitSplitContainerVirtualSizerV {
- font-size: 1px;
- background-color: ThreeDShadow;
- -moz-opacity: 0.5;
- opacity: 0.5;
- filter: Alpha(Opacity=50);
- margin: 0;
-}
-
-.dj_ie .dijitSplitterV, .dijitSplitContainerVirtualSizerH {
- cursor: w-resize;
-}
-.dj_ie .dijitSplitterH, .dijitSplitContainerSizerV, .dijitSplitContainerVirtualSizerV {
- cursor: n-resize;
-}
-
-.dijit_a11y .dijitSplitterH {
- border-top:1px solid #d3d3d3 !important;
- border-bottom:1px solid #d3d3d3 !important;
-}
-.dijit_a11y .dijitSplitterV {
- border-left:1px solid #d3d3d3 !important;
- border-right:1px solid #d3d3d3 !important;
-}
-
-/* ContentPane */
-
-.dijitContentPane {
- display: block;
- overflow: auto; /* if we don't have this (or overflow:hidden), then Widget.resizeTo() doesn't make sense for ContentPane */
-}
-
-.dijitContentPaneSingleChild {
- /*
- * if the ContentPane holds a single layout widget child which is being sized to match the content pane,
- * then the ContentPane should never get a scrollbar (but it does due to browser bugs, see #9449
- */
- overflow: hidden;
-}
-
-/* TitlePane */
-.dijitTitlePane {
- display: block;
- overflow: hidden;
-}
-
-/* Color Palette */
-
-.dijitColorPalette {
- border:1px solid #999;
- background:#fff;
- -moz-border-radius:3pt;
-}
-
-img.dijitColorPaletteUnder {
- border-style:none;
- position:absolute;
- left:0;
- top:0;
-}
-.dijitColorPaletteInner {
- position: relative;
- overflow:hidden;
- outline:0;
-}
-.dijitPaletteCell {
- width: 20px;
- height: 20px;
- position: absolute;
- overflow: hidden;
- z-index: 10;
- outline-width: 0;
-}
-.dijitPaletteImg {
- width: 16px; /*This is the width of one color in the provided palettes. */
- height: 14px; /* Height of one color in the provided palettes. */
- position: absolute;
- top: 1px;
- left: 1px;
- overflow: hidden;
- cursor: default;
- border:1px solid #999;
- /* -moz-border-radius:2pt; */
-}
-
-.dijitPaletteCellHighlight img {
- width: 14px; /*This is the width of one color in the provided palettes. */
- height: 12px; /* Height of one color in the provided palettes. */
- position: absolute;
- top: 1px;
- left: 1px;
- overflow: hidden;
- cursor: default;
- border:2px solid #000;
- outline:1px solid #dedede;
- /* -moz-border-radius:0; */
-}
-
-.dijit_a11y .dijitPaletteCell {
- background-color:transparent !important;
-}
-.dijit_a11y .dijitPaletteImg {
- background-color:transparent !important;
-}
-
-.dijitAccordionContainer {
- border:1px solid #b7b7b7;
- border-top:0 !important;
-}
-/* prevent partial, ugly focus border on FF and Safari */
-.dj_webkit .dijitAccordionContainer div:focus {
- outline:none;
-}
-.dj_ff3 .dijitAccordionContainer div:focus {
- outline:none;
-}
-.dijitAccordionTitle {
- cursor: pointer;
-}
-.dijitAccordionFocused {
- text-decoration: underline;
-}
-
-/* images off, high-contrast mode styles */
-.dijitAccordionTitle .arrowTextUp,
-.dijitAccordionTitle .arrowTextDown {
- display: none;
- font-size: 0.65em;
- font-weight: normal !important;
-}
-
-.dijit_a11y .dijitAccordionTitle .arrowTextUp,
-.dijit_a11y .dijitAccordionTitle-selected .arrowTextDown {
- display: inline;
-}
-
-.dijit_a11y .dijitAccordionTitle-selected .arrowTextUp {
- display: none;
-}
-
-/* Calendar */
-
-.dijitCalendarContainer thead tr th, .dijitCalendarContainer thead tr td, .dijitCalendarContainer tbody tr td, .dijitCalendarContainer tfoot tr td {
- padding: 0;
-}
-
-.dijitCalendarNextYear {
- margin:0 0 0 0.55em;
-}
-
-.dijitCalendarPreviousYear {
- margin:0 0.55em 0 0;
-}
-
-.dijitCalendarIncrementControl {
- vertical-align: middle;
-}
-
-.dijitCalendarDisabledDate {
- color:gray !important;
-}
-
-.dijitCalendarPreviousMonthDisabled,
-.dijitCalendarCurrentMonthDisabled,
-.dijitCalendarNextMonthDisabled {
- cursor:default !important
-}
-
-.dijitCalendarIncrementControl,
-.dijitCalendarBodyContainer tbody tr td,
-.dijitCalendarDateTemplate,
-.dijitCalendarContainer .dijitInline {
- cursor:pointer;
-}
-
-.dijitSpacer {
- /* don't display it, but make it affect the width */
- position: relative;
- height: 1px;
- overflow: hidden;
- visibility: hidden;
-}
-
-
-/* Menu */
-
-.dijitMenu {
- border:1px solid black;
- background-color:white;
-}
-.dijitMenuTable {
- margin:1px 0;
- border-collapse:collapse;
- border-width:0;
- background-color:white;
-}
-
-/* workaround for webkit bug #8427, remove this when it is fixed upstream */
-.dj_webkit .dijitMenuTable td[colspan="2"]{
- border-right:hidden;
-}
-
-.dijitMenuItem{
- text-align: left;
- white-space: nowrap;
- padding:.1em .2em;
- cursor:pointer;
-}
-
-.dijitMenuPassive .dijitMenuItemHover,
-.dijitMenuItemSelected {
- /*
- * dijitMenuItemHover refers to actual mouse over
- * dijitMenuItemSelected is used after a menu has been "activated" by
- * clicking it, tabbing into it, or being opened from a parent menu,
- * and denotes that the menu item has focus or that focus is on a child
- * menu
- */
- background-color:black;
- color:white;
-}
-
-.dijitMenuItemIcon, .dijitMenuExpand {
- background-repeat: no-repeat;
-}
-
-.dijitMenuItemDisabled * {
- /* for a disabled menu item, just set it to mostly transparent */
- opacity:0.3;
- cursor:default;
-}
-.dj_ie .dijit_a11y .dijitMenuItemDisabled td,
-.dj_ie .dijitMenuItemDisabled *,
-.dj_ie .dijitMenuItemDisabled td {
- color:gray !important;
- filter: alpha(opacity=35);
-}
-
-.dijitMenuItemLabel {
- position: relative;
- vertical-align: middle;
-}
-
-.dijit_a11y .dijitMenuItemSelected {
- border: 1px #fff dotted !important;
-}
-.dj_ff3 .dijit_a11y .dijitMenuItem td {
- padding: none !important;
- background:none ! important;
-}
-.dijit_a11y .dijitMenuItemSelected .dijitMenuItemLabel {
- border-width: 1px;
- border-style: solid;
-}
-.dj_ie8 .dijit_a11y .dijitMenuItemLabel {
- position:static;
-}
-
-.dijitMenuExpandA11y {
- display: none;
-}
-.dijit_a11y .dijitMenuExpandA11y {
- display: inline;
-}
-
-.dijitMenuSeparator td {
- border: 0;
- padding: 0;
-}
-
-/* separator can be two pixels -- set border of either one to 0 to have only one */
-.dijitMenuSeparatorTop {
- height: 50%;
- margin: 0;
- margin-top:3px;
- font-size: 1px;
-}
-
-.dijitMenuSeparatorBottom {
- height: 50%;
- margin: 0;
- margin-bottom:3px;
- font-size: 1px;
-}
-
-/* the checked menu item */
-.dijitCheckedMenuItemIconChar {
- vertical-align: middle;
- visibility:hidden;
-}
-.dijitCheckedMenuItemChecked .dijitCheckedMenuItemIconChar {
- visibility: visible;
-}
-.dijit_a11y .dijitCheckedMenuItemIconChar {
- display:inline !important;
-}
-.dijit_a11y .dijitCheckedMenuItemIcon {
- display: none;
-}
-
-
-/* StackContainer */
-
-.dijitStackController .dijitToggleButtonChecked * {
- cursor: default; /* because pressing it has no effect */
-}
-
-/* TabContainer */
-
-.dijitTabContainerNoLayout {
- width: 100%; /* otherwise ScrollingTabController goes to 50K pixels wide */
-}
-
-.dijitTabContainerBottom-tabs,
-.dijitTabContainerTop-tabs,
-.dijitTabContainerLeft-tabs,
-.dijitTabContainerRight-tabs {
- overflow: visible !important; /* so tabs can cover up border adjacent to container */
-}
-
-.dijitTabContainerBottom-container,
-.dijitTabContainerTop-container,
-.dijitTabContainerLeft-container,
-.dijitTabContainerRight-container {
- z-index:0;
- overflow: hidden;
- border: 1px solid black;
-}
-.dijitTabContainer .nowrapTabStrip {
- width: 50000px;
- display: block;
- position: relative;
-}
-.dijitTabContainer .dijitTabListWrapper {
- overflow: hidden;
-}
-
-.dijit_a11y .dijitTabContainer .tabStripButton img {
- /* hide the icons (or rather the empty space where they normally appear) because text will appear instead */
- display: none;
-}
-
-.dijitTabContainerTop-tabs {
- border-bottom: 1px solid black;
-}
-.dijitTabContainerTop-container {
- border-top: 0px;
-}
-
-.dijitTabContainerLeft-tabs {
- border-right: 1px solid black;
- float: left;
-}
-.dijitTabContainerLeft-container {
- border-left: 0px;
-}
-
-.dijitTabContainerBottom-tabs {
- border-top: 1px solid black;
-}
-.dijitTabContainerBottom-container {
- border-bottom: 0px;
-}
-
-.dijitTabContainerRight-tabs {
- border-left: 1px solid black;
- float: left;
-}
-.dijitTabContainerRight-container {
- border-right: 0px;
-}
-
-div.dijitTabBtnDisabled, .dj_ie div.dijitTabBtnDisabled {
- cursor: auto;
-}
-/*
-div.dijitTabBtnDisabled img {
- opacity: 0.3;
-}
-
-
-.dj_ie div.dijitTabBtnDisabled img {
- filter: gray() alpha(opacity=30);
-}
-*/
-.dijitTab {
- position:relative;
- cursor:pointer;
- white-space:nowrap;
- z-index:3;
-}
-.dijitTab * {
- /* make tab icons and close icon line up w/text */
- vertical-align: middle;
-}
-.dijitTabChecked {
- cursor: default; /* because clicking will have no effect */
-}
-
-.dijitTabButtonIcon {
- height: 18px;
-}
-
-.dijitTabContainerTop-tabs .dijitTab {
- top: 1px; /* to overlap border on .dijitTabContainerTop-tabs */
-}
-.dijitTabContainerBottom-tabs .dijitTab {
- top: -1px; /* to overlap border on .dijitTabContainerBottom-tabs */
-}
-.dijitTabContainerLeft-tabs .dijitTab {
- left: 1px; /* to overlap border on .dijitTabContainerLeft-tabs */
-}
-.dijitTabContainerRight-tabs .dijitTab {
- left: -1px; /* to overlap border on .dijitTabContainerRight-tabs */
-}
-
-
-.dijitTabContainerTop-tabs .dijitTab,
-.dijitTabContainerBottom-tabs .dijitTab {
- /* Inline-block */
- display:inline-block; /* webkit and FF3 */
- #zoom: 1; /* set hasLayout:true to mimic inline-block */
- #display:inline; /* don't use .dj_ie since that increases the priority */
-}
-
-.dijitTabInnerDiv {
- position:relative;
-}
-
-
-.tabStripButton {
- z-index: 12;
-}
-
-.dijitTabButtonDisabled .tabStripButton {
- display: none;
-}
-
-
-.dijitTab .closeButton {
- margin-left: 1em;
-}
-
-/* images off, high-contrast mode styles */
-.dijitTab .closeText {
- display:none;
-}
-
-.dijit_a11y .closeText {
- display:inline;
- margin: 0px 6px;
-}
-
-.dijit_a11y .dijitTab .closeImage {
- display:none;
-}
-
-.dijit_a11y .closeButton-hover .closeText {
- border:thin solid;
-}
-.dijit_a11y .dijitTabChecked {
- border-style:dashed !important;
-}
-
-.dijit_a11y .dijitTabInnerDiv {
- border-left:none !important;
- }
-
-.dijitTabPane,
-.dijitStackContainer-child,
-.dijitAccordionContainer-child {
- /* children of TabContainer, StackContainer, and AccordionContainer shouldn't have borders
- * b/c a border is already there from the TabContainer/StackContainer/AccordionContainer itself.
- */
- border: none !important;
-}
-
-.dijitInlineEditor {
- /* span around an inline-editable value when in edit mode */
- position:relative;
- vertical-align:bottom;
-}
-.dj_ie .dijitInlineEditor {
- vertical-align:middle;
-}
-
-.dijitInlineValue {
- /* span around an inline-editable value when NOT in edit mode */
-}
-
-.dijitInlineEditor .dijitButtonContainer {
- /* div around the buttons -- makes them float below the field */
- position:absolute;
- right:0;
- overflow:visible;
-}
-
-.dijitInlineEditor .saveButton,
-.dijitInlineEditor .cancelButton {
-}
-
-/* Tree */
-
-.dijitTreeIndent {
- /* amount to indent each tree node (relative to parent node) */
- width: 19px;
-}
-
-.dijitTreeRow, .dijitTreeContent {
- white-space: nowrap;
-}
-
-.dijitTreeRow img {
- /* make the expando and folder icons line up with the label */
- vertical-align: middle;
-}
-
-.dijitTreeContent {
- cursor: default;
-}
-
-.dijitExpandoText {
- display: none;
-}
-
-.dijit_a11y .dijitExpandoText {
- display: inline;
- padding-left: 10px;
- padding-right: 10px;
- font-family: monospace;
- border-style: solid;
- border-width: thin;
- cursor: pointer;
-}
-
-.dijitTreeLabel {
- margin: 0px 4px;
-}
-
-/* Dialog */
-
-.dijitDialog {
- position: absolute;
- z-index: 999;
- padding: 1px;
- overflow: hidden; /* override overflow: auto; from ContentPane to make dragging smoother */
-}
-
-.dijitDialogFixed div.dijitDialogTitleBar {
- cursor:default;
-}
-
-.dijitDialogUnderlayWrapper {
- position: absolute;
- left: 0;
- top: 0;
- z-index: 998;
- display: none;
- background: transparent !important;
-}
-
-.dijitDialogUnderlay {
- background: #eee;
- opacity: 0.5;
-}
-
-.dj_ie .dijitDialogUnderlay {
- filter: alpha(opacity=50);
-}
-
-/* images off, high-contrast mode styles */
-.dijit_a11y .dijitInputLayoutContainer,
-.dijit_a11y .dijitDialog {
- opacity: 1 !important;
- background-color: white !important;
-}
-
-.dijitDialog .closeText {
- display:none;
- /* for the onhover border in high contrast on IE: */
- position:absolute;
-}
-
-.dijit_a11y .dijitDialog .closeText {
- display:inline;
-}
-
-.dijitSliderMoveable {
- z-index:99;
- position:absolute !important;
- display:block;
- vertical-align:middle;
-}
-
-.dijitSliderMoveableH {
- right:0;
-}
-
-.dijit_a11y div.dijitSliderImageHandle,
-.dijitSliderImageHandle {
- margin:0;
- padding:0;
- position:absolute !important;
- border:8px solid gray;
- width:0;
- height:0;
-}
-.dijit_a11y .dijitSliderFocused .dijitSliderImageHandle {
- border:4px solid #000;
- height:8px;
- width:8px;
-}
-
-.dijitSliderImageHandleV {
- top:-8px;
- left:-6px;
-}
-
-.dijitSliderImageHandleH {
- left:-8px;
- top:-5px;
- vertical-align:top;
-}
-
-.dijitSliderBar {
- border-style:solid;
- border-color:black;
-}
-
-.dijitSliderBarContainerV {
- position:relative;
- height:100%;
- z-index:1;
-}
-
-.dijitSliderBarContainerH {
- position:relative;
- z-index:1;
-}
-
-.dijitSliderBarH {
- height:4px;
- border-width:1px 0;
-}
-
-.dijitSliderBarV {
- width:4px;
- border-width:0 1px;
-}
-
-.dijitSliderProgressBar {
- background-color:red;
- z-index:1;
-}
-
-.dijitSliderProgressBarV {
- position:static !important;
- height:0%;
- vertical-align:top;
- text-align:left;
-}
-
-.dijitSliderProgressBarH {
- position:absolute !important;
- width:0%;
- vertical-align:middle;
- overflow:visible;
-}
-
-.dijitSliderRemainingBar {
- overflow:hidden;
- background-color:transparent;
- z-index:1;
-}
-
-.dijitSliderRemainingBarV {
- height:100%;
- text-align:left;
-}
-
-.dijitSliderRemainingBarH {
- width:100% !important;
-}
-
-/* the slider bumper is the space consumed by the slider handle when it hangs over an edge */
-.dijitSliderBumper {
- overflow:hidden;
- z-index:1;
-}
-
-.dijitSliderBumperV {
- width:4px;
- height:8px;
- border-width:0 1px;
-}
-
-.dijitSliderBumperH {
- width:8px;
- height:4px;
- border-width:1px 0;
-}
-
-.dijitSliderBottomBumper,
-.dijitSliderLeftBumper {
- background-color:red;
-}
-
-.dijitSliderTopBumper,
-.dijitSliderRightBumper {
- background-color:transparent;
-}
-
-.dijitSliderDecorationH {
- text-align:center;
-}
-
-.dijitSlider .dijitSliderButton {
- font-family:monospace;
- margin:0;
- padding:0;
- display:block;
-}
-
-.dijit_a11y .dijitSliderButtonInner {
- visibility:visible !important;
-}
-
-.dijitSliderButtonContainer {
- text-align:center;
- height:0;
-}
-
-.dijitSlider .dijitButtonNode {
- padding:0;
- display:block;
-}
-
-.dijitRuleContainer {
- position:relative;
- overflow:visible;
-}
-
-.dijitRuleContainerV {
- height:100%;
- line-height:0;
- float:left;
- text-align:left;
-}
-
-.dj_opera .dijitRuleContainerV {
- line-height:2%;
-}
-
-.dj_ie .dijitRuleContainerV {
- line-height:normal;
-}
-
-.dj_gecko .dijitRuleContainerV {
- margin:0 0 1px 0; /* mozilla bug workaround for float:left,height:100% block elements */
-}
-
-.dijitRuleMark {
- position:absolute;
- border:1px solid black;
- line-height:0;
- height:100%;
-}
-
-.dijitRuleMarkH {
- width:0;
- border-top-width:0 !important;
- border-bottom-width:0 !important;
- border-left-width:0 !important;
-}
-
-.dijitRuleLabelContainer {
- position:absolute;
-}
-
-.dijitRuleLabelContainerH {
- text-align:center;
- display:inline-block;
-}
-
-.dijitRuleLabelH {
- position:relative;
- left:-50%;
-}
-
-.dijitRuleMarkV {
- height:0;
- border-right-width:0 !important;
- border-bottom-width:0 !important;
- border-left-width:0 !important;
- width:100%;
- left:0;
-}
-
-.dj_ie .dijitRuleLabelContainerV {
- margin-top:-.55em;
-}
-
-/* Icon-only buttons (often in toolbars) still display the text in high-contrast mode */
-.dijit_a11y .dijitButtonContents .dijitButtonText,
-.dijit_a11y .dijitTab .tabLabel {
- display: inline !important;
-}
-.dj_ie7 .dijitButtonNode > BUTTON.dijitButtonContents > * {
- position: relative; /* workaround for IE7 distorted text on scroll */
-}
-
-.dijitTextArea {
- width:100%;
- overflow-y: auto; /* w/out this IE's SimpleTextArea goes to overflow: scroll */
-}
-.dijitTextArea[cols] {
- width:auto; /* SimpleTextArea cols */
-}
-.dj_ie .dijitTextAreaCols {
- width:auto;
-}
-.dijitTextArea > DIV {
- text-decoration:none;
- overflow:auto;
- min-height: 1.40em;
-}
-
-.dj_ie .dijitTextArea p {
- margin-top:0;
- margin-bottom:0;
- line-height: normal !important;
-}
-
-.dijitToolbarSeparator {
- height: 18px;
- width: 5px;
- padding: 0 1px;
- margin: 0;
-}
-
-/* Editor */
-.dijitIEFixedToolbar {
- position:absolute;
- /* top:0; */
- top: expression(eval((document.documentElement||document.body).scrollTop));
-}
-
-.RichTextEditable {
- display: block; /* prevents glitch on FF with InlineEditBox, see #8404 */
-}
-
-/* TimePicker */
-
-.dijitTimePickerItemInner {
- text-align:center;
- border:0;
- padding:2px 8px 2px 8px;
-}
-
-.dijitTimePickerTick,
-.dijitTimePickerMarker {
- border-bottom:1px solid gray;
-}
-
-.dijitTimePicker .dijitDownArrowButton {
- border-top: none !important;
-}
-
-.dijitTimePickerTick {
- color:#CCC;
-}
-
-.dijitTimePickerMarker {
- color:black;
- background-color:#CCC;
-}
-
-.dijitTimePickerItemSelected {
- font-weight:bold;
- color:#333;
- background-color:#b7cdee;
-}
-
-.dijitTimePickerItemHover {
- background-color:gray;
- color:white;
- cursor:pointer;
-}
-
-.dijit_a11y .dijitTimePickerItem {
- border-bottom:1px solid #333;
-}
-
-
-/* Disable the high contrast character */
-.dijitToggleButtonIconChar {
- display:none !important;
-}
-.dijit_a11y .dijitToggleButtonIconChar {
- display:inline !important;
-}
-
-.dijit_a11y .dijitToggleButtonIconChar {
- visibility:hidden;
-}
-.dijit_a11y .dijitToggleButtonChecked .dijitToggleButtonIconChar {
- visibility:visible !important;
-}
-
-.dijitArrowButtonChar {
- display:none !important;
-}
-.dijit_a11y .dijitArrowButtonChar {
- display:inline !important;
-}
-.dijitInputLayoutContainer {
- position: relative;
- overflow: hidden;
-}
-.dijitSpinnerButtonContainer {
- float: right;
- width: 18px;
- position: relative;
- overflow: hidden;
-}
-.dijitSpinner .dijitInputLayoutContainer .dijitArrowButton {
- height: 50%;
- width: 16px;
- overflow: hidden;
-}
-.dijitSpinner .dijitInputLayoutContainer .dijitArrowButtonInner {
- overflow: hidden;
- line-height: 50%;
-}
-.dijit_a11y .dijitSpinner .dijitInputLayoutContainer .dijitArrowButton {
- width: 100%;
-}
-.dijit_a11y .dijitSpinner .dijitArrowButton .dijitArrowButtonChar {
- font-size: 0.4em;
- vertical-align: top;
-}
-.dijit_a11y .dijitSpinnerButtonContainer {
- width: 0.5em;
- margin-left: 2px;
- overflow: visible;
-}
-.dijit_a11y .dijitSpinnerButtonContainer .dijitButtonNode {
- border-width: 1px 0px 0px 1px;
- border-style: solid !important;
-}
-
-/* Select */
-.dijitSelect {
- margin: 0.2em;
-}
-.dj_ie .dijitSelect,
-.dj_ie7 .dijitSelect,
-.dj_iequirks .dijitSelect {
- vertical-align: middle; /* Set this back for what we hack in dijit inline */
-}
-.dj_ie8 .dijitSelect .dijitButtonText {
- vertical-align: top;
-}
-.dijitSelect .dijitButtonNode {
- text-align: left;
-}
-.dijitRtl .dijitSelect .dijitButtonNode {
- text-align: right;
-}
-.dijitToolbar .dijitSelect {
- margin: 0;
-}
-.dj_webkit .dijitToolbar .dijitSelect {
- padding-left: 0.3em;
-}
-.dijit_a11y .dijitSelectDisabled .dijitButtonNode {
- border-style: outset!important;
- border-width: medium!important;
- border-color: #999 !important;
- color:#999 !important;
-}
-.dijitSelect .dijitButtonContents {
- padding: 0px;
- background: transparent none;
-}
-.dijitSelectFixedWidth .dijitButtonContents {
- width: 100%;
-}
-.dijitSelect .dijitArrowButton {
- width: 16px;
-}
-
-.dj_ie6 .dijitSelectMenu .dijitMenuItemLabel,
-.dj_ie7 .dijitSelectMenu .dijitMenuItemLabel {
- /* Set back to static due to bug in ie6/ie7 - See Bug #9651 */
- position: static;
-}
-
-/* Fix the baseline of our label (for multi-size font elements) */
-.dijitSelectLabel *
-{
- vertical-align: baseline;
-}
-
-/* Styling for the currently-selected option (rich text can mess this up) */
-.dijitSelectSelectedOption * {
- font-weight: bold;
-}
-
-/* Fix the styling of the dropdown menu to be more combobox-like */
-.dijitSelectMenu {
- border-width: 1px;
-}
-
-/* Style the different areas of the button to look like a "real" dropdown */
-.dijitSelect .dijitButtonContents {
- white-space: nowrap;
-}
-
-/* Remove margins on the sub-table */
-.dijitSelectMenu .dijitMenuTable {
- margin: 0px;
- background-color: transparent;
-}
-
-/* basic readonly/disabled text color rules for form widgets */
-.dijitTextBoxReadOnly,
-.dijitComboBoxReadOnly,
-.dijitSpinnerReadOnly,
-.dijitTextAreaReadOnly,
-.dijitTextBoxDisabled,
-.dijitComboBoxDisabled,
-.dijitSpinnerDisabled,
-.dijitTextAreaDisabled {
- color: gray;
-}
-.dj_webkit .dijitTextBoxDisabled INPUT,
-.dj_webkit .dijitComboBoxDisabled INPUT,
-.dj_webkit .dijitSpinnerDisabled INPUT {
- color: #eee;
-}
-.dj_webkit INPUT.dijitTextBoxDisabled,
-.dj_webkit TEXTAREA.dijitTextAreaDisabled {
- color: #333; /* because WebKit lightens disabled input/textarea no matter what color you specify */
-}
-
-.dijit_a11y .dijitSliderReadOnly,
-.dijit_a11y .dijitSliderDisabled {
- opacity:0.6;
-}
-.dj_ie .dijit_a11y .dijitSliderReadOnly .dijitSliderBar,
-.dj_ie .dijit_a11y .dijitSliderDisabled .dijitSliderBar {
- filter: alpha(opacity=40);
-}
-
-/* + and - Slider buttons: undo themed image values */
-.dijit_a11y .dijitSlider .dijitSliderButtonContainer DIV {
- font-family: monospace; /* hypen is larger and more vertically centered */
- font-size: 1em;
- line-height: 1em;
- height: auto;
- width: auto;
- margin: 0px 4px;
-}
-
-
-.dijitForceStatic {
- position: static !important;
-}
-
diff --git a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/themes/dijit_rtl.css b/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/themes/dijit_rtl.css
deleted file mode 100644
index 9ad5bf4..0000000
--- a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/themes/dijit_rtl.css
+++ /dev/null
@@ -1,115 +0,0 @@
-.dj_gecko-rtl .dijitInputField {
- direction: ltr; /* Firefox needs this - probably a bug */
-}
-.dj_gecko-rtl .dijitInputField * {
- direction: rtl; /* Firefox needs dijitInputField to be ltr, so fix the contained tags */
-}
-
-/* ComboBox */
-.dijitRtl .dijitMenuItem {
- text-align: right;
-}
-
-/* Tree */
-
-.dijitRtl .dijitComboBox .dijitInputField {
- border-right-width:1px !important;
- border-left-width:0 !important;
-}
-
-/* Calendar */
-
-.dijitRtl .dijitCalendarNextYear {
- margin:0 0.55em 0 0;
-}
-
-.dijitRtl .dijitCalendarPreviousYear {
- margin:0 0 0 0.55em;
-}
-
-.dijitRtl .dijitProgressBarFull .dijitProgressBarLabel {
- right:0; /* FF workaround */
-}
-
-/* Slider */
-
-.dijitRtl .dijitSliderImageHandleV {
- left:auto;
- right:-6px;
-}
-
-.dj_ie-rtl .dijitSliderImageHandleV {
- right:-10px;
-}
-
-.dijitRtl .dijitSliderMoveableH {
- right:auto;
- left:0;
-}
-
-.dijitRtl .dijitRuleContainerV {
- float:right;
-}
-
-.dj_gecko-rtl .dijitRuleContainerV {
- float:left;
-}
-
-.dj_ie-rtl .dijitRuleContainerV {
- text-align:right;
-}
-
-.dj_ie-rtl .dijitRuleLabelV {
- text-align:left;
-}
-
-.dj_ie-rtl .dijitRuleLabelH {
- zoom:1;
-}
-
-.dj_ie-rtl .dijitSliderProgressBarH {
- right:0;
- left:auto;
-}
-
-.dj_gecko-rtl .dijitSliderProgressBarH {
- float:right;
- right:0;
- left:auto;
-}
-
-/* Spinner */
-
-.dijitRtl .dijitSpinner .dijitInputLayoutContainer .dijitArrowButton {
- right: auto;
- left: 0;
- border-width: 0 1px 0 0 !important;
-}
-
-.dijitRtl .dijitSpinnerButtonContainer {
- float: left;
-}
-
-.dijitRtl .dijit_a11y .dijitSpinnerButtonContainer {
- margin-left: none;
- margin-right: 2px;
-}
-
-.dijitRtl DIV.dijitArrowButton, .dijitRtl .dijitValidationIcon, .dijitRtl .dijitValidationIconText {
- float: left;
-}
-
-/* ContentPane*/
-.dijitRtl .dijitContentPaneLoading, .dijitRtl .dijitContentPaneError {
- background-position:right;
- padding-right:25px;
-}
-
-/* Tab */
-.dijitRtl .dijitTabContainer .tabStripMenuButton {
- float: left;
-}
-
-.dj_iequirks-rtl .dijitComboButton BUTTON {
- float:left;
-}
\ No newline at end of file
diff --git a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/themes/nihilo/Calendar.css b/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/themes/nihilo/Calendar.css
deleted file mode 100644
index 9720e6e..0000000
--- a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/themes/nihilo/Calendar.css
+++ /dev/null
@@ -1,152 +0,0 @@
-/* Calendar*/
-
-.nihilo .dijitCalendarIncrementControl {
- /* next/prev month buttons */
- width:15px;
- height:15px;
- background-image: url("images/spriteRoundedIconsSmall.png");
- background-repeat: no-repeat
-}
-.dj_ie6 .nihilo .dijitCalendarIncrementControl {
- font-size:.1em;
- background-image: url("images/spriteRoundedIconsSmall.gif");
-}
-
-.nihilo .dijitA11ySideArrow {
- display: none;
-}
-
-.nihilo .dijitCalendarDecrease {
- background-position: top left;
-}
-.nihilo .dijitCalendarIncrease {
- background-position: -30px top;
-}
-
-.nihilo table.dijitCalendarContainer {
- font-size: 100%;
- border-spacing: 0;
- border-collapse: separate;
- border: 1px solid #ccc;
- margin: 0;
-}
-
-.nihilo .dijitCalendarMonthContainer th {
- /* month header cell */
- background:#d3d3d3 url("images/titleBar.png") repeat-x top;
- padding-top:.3em;
- padding-bottom:.2em;
- text-align:center;
-}
-.dj_ie6 .nihilo .dijitCalendarMonthContainer th {
- padding-top:.2em;
- padding-bottom:.1em;
-
-}
-
-.nihilo .dijitCalendarDayLabelTemplate {
- /* day of week labels */
- background:#fefefe;
- font-weight:normal;
- padding-top:.15em;
- padding-bottom:.2em;
- border-bottom: 1px solid #eeeeee;
- color:#293a4b;
- text-align:center;
-}
-
-.nihilo .dijitCalendarBodyContainer {
- border-bottom: 1px solid #eeeeee;
-}
-
-.nihilo .dijitCalendarMonthLabel {
- color:#293a4b;
- font-weight: bold;
-}
-
-.nihilo .dijitCalendarDateTemplate {
- /* style for each day cell */
- font-size: 0.9em;
- font-weight: bold;
- text-align: center;
- padding: 0.3em 0.3em 0.05em 0.3em;
- letter-spacing: 1px;
- background-color: #fdfdfd;
- border:#fdfdfd solid 1px !important;
-}
-
-.dj_ie .nihilo .dijitCalendarDateTemplate {
- padding: 0.1em .33em 0.02em .33em;
-}
-
-.nihilo .dijitCalendarPreviousMonth,
-.nihilo .dijitCalendarNextMonth {
- /* days that are part of the previous or next month */
- color:#999999;
- background-color:#f5f5f5 !important;
- border:#f5f5f5 solid 1px !important;
-}
-
-.nihilo .dijitCalendarPreviousMonthDisabled,
-.nihilo .dijitCalendarNextMonthDisabled {
- /* days that are part of the previous or next month - disabled*/
- background-color:#a4a5a6 !important;
-}
-
-.nihilo .dijitCalendarCurrentMonth {
- /* days that are part of this month */
-}
-
-.nihilo .dijitCalendarCurrentMonthDisabled {
- /* days that are part of this month - disabled */
- background-color:#bbbbbc !important;
-}
-
-.nihilo .dijitCalendarDisabledDate {
- /* one or the other? */
- /* background: url(images/noX.gif) no-repeat center center !important; */
- text-decoration:line-through !important;
- cursor:default !important;
-}
-
-.nihilo .dijitCalendarCurrentDate {
- /* cell for today's date */
- text-decoration:underline;
- font-weight:bold;
-}
-
-.nihilo .dijitCalendarSelectedDate {
- /* cell for the selected date */
- background-color:#ffe284 !important;
- color:black !important;
- border:#f7c95c solid 1px !important;
-}
-
-
-.nihilo .dijitCalendarYearContainer {
- /* footer of the table that contains the year display/selector */
- background:white url("images/titleBar.png") repeat-x top;
-}
-
-.nihilo .dijitCalendarYearLabel {
- /* container for all of 3 year labels */
- margin:0;
- padding:0.4em 0 0.25em 0;
- text-align:center;
-}
-
-.nihilo .dijitCalendarSelectedYear {
- /* label for selected year */
- color:black;
- padding:0.2em;
- padding-bottom:0.1em;
- background-color:#ffe284 !important;
- border:#f7c95c solid 1px !important;
-}
-
-.nihilo .dijitCalendarNextYear,
-.nihilo .dijitCalendarPreviousYear {
- /* label for next/prev years */
- color:black !important;
- font-weight:normal;
-}
\ No newline at end of file
diff --git a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/themes/nihilo/Calendar_rtl.css b/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/themes/nihilo/Calendar_rtl.css
deleted file mode 100644
index 7b29bac..0000000
--- a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/themes/nihilo/Calendar_rtl.css
+++ /dev/null
@@ -1,9 +0,0 @@
-/* Calendar */
-
-.dijitRtl .nihilo .dijitCalendarDecrease {
- background-position: -30px top;
-}
-
-.dijitRtl .nihilo .dijitCalendarIncrease {
- background-position: 0px top;
-}
diff --git a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/themes/nihilo/ColorPalette.css b/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/themes/nihilo/ColorPalette.css
deleted file mode 100644
index 59a4689..0000000
--- a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/themes/nihilo/ColorPalette.css
+++ /dev/null
@@ -1,5 +0,0 @@
-.dijitColorPalette {
- border:1px solid #d3d3d3;
- background:#fff;
- -moz-border-radius: 0px !important;
-}
\ No newline at end of file
diff --git a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/themes/nihilo/Common.css b/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/themes/nihilo/Common.css
deleted file mode 100644
index 4986990..0000000
--- a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/themes/nihilo/Common.css
+++ /dev/null
@@ -1,23 +0,0 @@
-/* DnD avatar-specific settings */
-/* For now it uses a default set of rules. Some other DnD classes can be modified as well. */
-.nihilo .dojoDndItemBefore {
- border-top: 2px solid #369;
-}
-
-.nihilo .dojoDndItemAfter {
- border-bottom: 2px solid #369;
-}
-
-.nihilo .dojoDndItemOver {
- cursor:pointer;
-}
-
-.nihilo table.dojoDndAvatar { -moz-border-radius: 0; border: 1px solid #ccc; border-collapse: collapse; background-color: #fff; font-size: 75%; color: black;}
-.nihilo .dojoDndAvatar td { border: none; }
-.nihilo .dojoDndAvatar tr { border: none; }
-.nihilo .dojoDndAvatarHeader td { height: 20px; padding: 0 0 0 21px; }
-.nihilo .dojoDndAvatarItem td { padding: 2px;}
-.nihilo.dojoDndMove .dojoDndAvatarHeader {background-color: #f58383; background-image: url(images/dndNoMove.png); background-repeat: no-repeat; background-position: 2px center;}
-.nihilo.dojoDndCopy .dojoDndAvatarHeader {background-color: #f58383; background-image: url(images/dndNoCopy.png); background-repeat: no-repeat; background-position: 2px center;}
-.nihilo.dojoDndMove .dojoDndAvatarCanDrop .dojoDndAvatarHeader {background-color: #97e68d; background-image: url(images/dndMove.png); background-repeat: no-repeat; background-position: 2px center;}
-.nihilo.dojoDndCopy .dojoDndAvatarCanDrop .dojoDndAvatarHeader {background-color: #97e68d; background-image: url(images/dndCopy.png); background-repeat: no-repeat; background-position: 2px center;}
diff --git a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/themes/nihilo/Dialog.css b/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/themes/nihilo/Dialog.css
deleted file mode 100644
index 0ea8a88..0000000
--- a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/themes/nihilo/Dialog.css
+++ /dev/null
@@ -1,160 +0,0 @@
-/* Dialog */
-
-.nihilo .dijitDialog {
- background: #eee;
- border: 1px solid #d3d3d3;
- -webkit-box-shadow: 0px 5px 10px #adadad;
- padding: 0px;
-}
-
-.nihilo .dijitDialog .dijitDialogTitle {
- /* typography and styling of the dialog title */
- font-size: 0.9em;
- color: #3243C5F;
- font-weight: bold;
- padding: 0px 4px;
-}
-
-.nihilo .dijitDialog .dijitDialogPaneContent {
- background: #ffffff;
- border:none;
- border-top: 1px solid #d3d3d3; /* w/out this, an <h1> on the top line causes a gap between the .content and .label */
- padding:10px;
-
-}
-
-.nihilo .dijitDialogTitleBar {
- /* outer container for the titlebar of the dialog */
- background: #fafafa url("images/titleBar.png") repeat-x top left;
- padding: 5px 6px 3px 6px;
- cursor: move;
- outline:0; /* remove this line if keyboard focus on dialog startup is an issue. tab still takes you to first focusable element */
-}
-
-.nihilo .dijitDialogCloseIcon {
- /* the default close icon for the dialog */
- background-image: url("images/spriteRoundedIconsSmall.png");
- background-repeat: no-repeat;
- background-position: -60px 0px;
- position: absolute;
- vertical-align: middle;
- right: 6px;
- top: 4px;
- height: 15px;
- width: 15px;
- cursor: pointer;
-}
-.dj_ie6 .nihilo .dijitDialogCloseIcon {
- background-image: url("images/spriteRoundedIconsSmall.gif");
-}
-.nihilo .dijitDialogCloseIcon-hover {
- background-position: -60px -15px;
-}
-
-/* Tooltip and TooltipDialog */
-
-.nihilo .dijitTooltip,
-.nihilo .dijitTooltipDialog {
- /* the outermost dom node, holding the connector and container */
- background: transparent; /* make the area on the sides of the arrow transparent */
-}
-
-.dijitTooltipBelow {
- /* leave room for arrow above content */
- padding-top: 10px;
-}
-
-.dijitTooltipAbove {
- /* leave room for arrow below content */
- padding-bottom: 10px;
-}
-
-.nihilo .dijitTooltipContainer {
- /*
- The part with the text.
-
- NOTE:
- FF doesn't clip images used as CSS bgs if you specify a border
- radius. If you use a solid color, it does. Webkit gets it right.
- Sigh.
- background: #ffffff url("images/popupMenuBg.gif") repeat-x bottom left;
- */
- background-color: #fff;
- border:1px solid #d3d3d3;
- padding:0.45em;
-}
-
-.nihilo .dijitTooltipConnector {
- /* the arrow piece */
- border:0px;
- z-index: 2;
-}
-
-.nihilo .dijitTooltipABRight .dijitTooltipConnector {
- /* above or below tooltip, but the arrow appears on the right,
- and the right edges of target and tooltip are aligned rather than the left */
- left: auto !important;
- right: 6px;
-}
-
-.nihilo .dijitTooltipBelow .dijitTooltipConnector {
- /* the arrow piece for tooltips below an element */
- top: 0px;
- left: 6px;
- background:url("images/tooltipConnectorUp.png") no-repeat top left;
- width:17px;
- height:11px;
-}
-
-.dj_ie .nihilo .dijitTooltipBelow .dijitTooltipConnector {
- background-image: url("images/tooltipConnectorUp.gif");
-}
-
-.nihilo .dijitTooltipAbove .dijitTooltipConnector {
- /* the arrow piece for tooltips above an element */
- bottom: 0px;
- left: 6px;
- background:url("images/tooltipConnectorDown.png") no-repeat top left;
- width:17px;
- height:11px;
-}
-.dj_ie .nihilo .dijitTooltipAbove .dijitTooltipConnector {
- background-image: url("images/tooltipConnectorDown.gif");
-}
-.dj_ie6 .nihilo .dijitTooltipAbove .dijitTooltipConnector {
- bottom: -5px;
-}
-
-.nihilo .dijitTooltipLeft {
- padding-right: 10px;
-}
-.dj_ie6 .nihilo .dijitTooltipLeft {
- padding-left: 11px;
-}
-.nihilo .dijitTooltipLeft .dijitTooltipConnector {
- /* the arrow piece for tooltips to the left of an element, bottom borders aligned */
- right: 0px;
- bottom: 3px;
- background:url("images/tooltipConnectorRight.png") no-repeat top left;
- width:11px;
- height:17px;
-}
-.dj_ie .nihilo .dijitTooltipLeft .dijitTooltipConnector {
- background-image: url("images/tooltipConnectorRight.gif");
-}
-
-.nihilo .dijitTooltipRight {
- padding-left: 10px;
-}
-.nihilo .dijitTooltipRight .dijitTooltipConnector {
- /* the arrow piece for tooltips to the right of an element, bottom borders aligned */
- left: 0px;
- bottom: 3px;
- background:url("images/tooltipConnectorLeft.png") no-repeat top left;
- width:11px;
- height:17px;
-}
-.dj_ie .nihilo .dijitTooltipRight .dijitTooltipConnector {
- background-image: url("images/tooltipConnectorLeft.gif");
-}
-
diff --git a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/themes/nihilo/Dialog_rtl.css b/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/themes/nihilo/Dialog_rtl.css
deleted file mode 100644
index 5e0cffc..0000000
--- a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/themes/nihilo/Dialog_rtl.css
+++ /dev/null
@@ -1,6 +0,0 @@
-/* Dialog */
-
-.dijitRtl .nihilo .dijitDialogTitleBar .dijitDialogCloseIcon {
- right: auto;
- left: 5px;
-}
diff --git a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/themes/nihilo/Editor.css b/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/themes/nihilo/Editor.css
deleted file mode 100644
index c715910..0000000
--- a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/themes/nihilo/Editor.css
+++ /dev/null
@@ -1,71 +0,0 @@
-.dijitIEFixedToolbar {
- position:absolute;
- /* top:0; */
- top: expression(eval((document.documentElement||document.body).scrollTop));
-}
-
-.nihilo .dijitToolbar .dijitToolbarSeparator {
- background: url('images/editor.gif');
-}
-
-/**** ICONS *****/
-
-.nihilo .dijitEditorIcon {
- background-image: url('images/editor.gif'); /* editor icons sprite image */
- background-repeat: no-repeat;
- width: 18px;
- height: 18px;
- text-align: center;
-}
-.nihilo .dijitDisabled .dijitEditorIcon {
- background-image: url('images/editorDisabled.gif'); /* editor icons sprite image */
-}
-
-.nihilo .dijitEditorIconSep { background-position: 0px; }
-.nihilo .dijitEditorIconBackColor { background-position: -18px; }
-.nihilo .dijitEditorIconBold { background-position: -36px; }
-.nihilo .dijitEditorIconCancel { background-position: -54px; }
-.nihilo .dijitEditorIconCopy { background-position: -72px; }
-.nihilo .dijitEditorIconCreateLink { background-position: -90px; }
-.nihilo .dijitEditorIconCut { background-position: -108px; }
-.nihilo .dijitEditorIconDelete { background-position: -126px; }
-.nihilo .dijitEditorIconForeColor { background-position: -144px; }
-.nihilo .dijitEditorIconHiliteColor { background-position: -162px; }
-.nihilo .dijitEditorIconIndent { background-position: -180px; }
-.nihilo .dijitEditorIconInsertHorizontalRule { background-position: -198px; }
-.nihilo .dijitEditorIconInsertImage { background-position: -216px; }
-.nihilo .dijitEditorIconInsertOrderedList { background-position: -234px; }
-.nihilo .dijitEditorIconInsertTable { background-position: -252px; }
-.nihilo .dijitEditorIconInsertUnorderedList { background-position: -270px; }
-.nihilo .dijitEditorIconItalic { background-position: -288px; }
-.nihilo .dijitEditorIconJustifyCenter { background-position: -306px; }
-.nihilo .dijitEditorIconJustifyFull { background-position: -324px; }
-.nihilo .dijitEditorIconJustifyLeft { background-position: -342px; }
-.nihilo .dijitEditorIconJustifyRight { background-position: -360px; }
-.nihilo .dijitEditorIconLeftToRight { background-position: -378px; }
-.nihilo .dijitEditorIconListBulletIndent { background-position: -396px; }
-.nihilo .dijitEditorIconListBulletOutdent { background-position: -414px; }
-.nihilo .dijitEditorIconListNumIndent { background-position: -432px; }
-.nihilo .dijitEditorIconListNumOutdent { background-position: -450px; }
-.nihilo .dijitEditorIconOutdent { background-position: -468px; }
-.nihilo .dijitEditorIconPaste { background-position: -486px; }
-.nihilo .dijitEditorIconRedo { background-position: -504px; }
-.nihilo .dijitEditorIconRemoveFormat { background-position: -522px; }
-.nihilo .dijitEditorIconRightToLeft { background-position: -540px; }
-.nihilo .dijitEditorIconSave { background-position: -558px; }
-.nihilo .dijitEditorIconSpace { background-position: -576px; }
-.nihilo .dijitEditorIconStrikethrough { background-position: -594px; }
-.nihilo .dijitEditorIconSubscript { background-position: -612px; }
-.nihilo .dijitEditorIconSuperscript { background-position: -630px; }
-.nihilo .dijitEditorIconUnderline { background-position: -648px; }
-.nihilo .dijitEditorIconUndo { background-position: -666px; }
-.nihilo .dijitEditorIconWikiword { background-position: -684px; }
-.nihilo .dijitEditorIconToggleDir { background-position: -540px; /* padding: 0; margin: 0; color:#555555;
- font-family:verdana,arial,sans-serif; font-weight: 800; font-size: 70%; */}
-.nihilo .dijitEditorIconTabIndent { background-position: -702px; }
-.nihilo .dijitEditorIconSelectAll { background-position: -720px; }
-.nihilo .dijitEditorIconUnlink { background-position: -738px; }
-.nihilo .dijitEditorIconFullScreen { background-position: -756px; }
-.nihilo .dijitEditorIconViewSource { background-position: -774px; }
-.nihilo .dijitEditorIconPrint { background-position: -792px; }
-.nihilo .dijitEditorIconNewPage { background-position: -810px; }
\ No newline at end of file
diff --git a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/themes/nihilo/Editor_rtl.css b/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/themes/nihilo/Editor_rtl.css
deleted file mode 100644
index 81da4be..0000000
--- a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/themes/nihilo/Editor_rtl.css
+++ /dev/null
@@ -1,13 +0,0 @@
-/* Editor */
-.dijitRtl .nihilo .dijitEditorIcon {
- background-image: url('images/editor_rtl.gif'); /* editor icons sprite image */
-}
-.dijitRtl .nihilo .dijitDisabled .dijitEditorIcon {
- background-image: url('images/editorDisabled_rtl.gif'); /* editor icons sprite image */
-}
-
-/* Toolbar */
-
-.dijitRtl .nihilo .dijitToolbar .dijitToolbarSeparator {
- background-image: url('images/editor_rtl.gif');
-}
diff --git a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/themes/nihilo/Menu.css b/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/themes/nihilo/Menu.css
deleted file mode 100644
index 6d128ab..0000000
--- a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/themes/nihilo/Menu.css
+++ /dev/null
@@ -1,77 +0,0 @@
-
-/* Menu */
-.nihilo .dijitMenu,
-.nihilo .dijitMenuBar {
- border: 1px solid #d3d3d3;
- margin: 0px;
- padding: 0px;
- background-color: #fff;
-}
-
-.nihilo .dijitBorderContainer .dijitMenuBar {
- border: 1px #ccc solid;
-}
-
-.nihilo .dijitMenuItem {
- font-family: sans-serif;
- margin: 0px;
- color: #243C5F;
-}
-.nihilo .dijitMenuBar .dijitMenuItem {
- padding: 4px 5px;
-}
-
-.nihilo .dijitMenuPreviousButton, .nihilo .dijitMenuNextButton {
- font-style: italic;
-}
-.nihilo .dijitMenuItem TD {
- padding:1px;
-}
-
-.nihilo .dijitMenuPassive .dijitMenuItemHover,
-.nihilo .dijitMenuItemSelected {
- background-color: #ffe284; /* #95a0b0; #555555; #aaaaaa; #646464; #60a1ea; #848484; */
- color: #243C5F;
-}
-
-.nihilo .dijitMenuItemIcon {
- width: 15px;
- height: 15px;
-}
-
-.nihilo .dijitMenuExpand {
- width:15px;
- height:15px;
- background-image: url('images/spriteRoundedIconsSmall.png');
- background-position: -30px top;
-}
-.dj_ie6 .nihilo .dijitMenuExpand {
- background-image:url('images/spriteRoundedIconsSmall.gif');
-}
-
-.nihilo .dijitMenuSeparator {
- height: 1px;
-}
-
-/* separator can be two pixels -- set border of either one to 0px to have only one */
-.nihilo .dijitMenuSeparatorTop {
- border-bottom: 1px solid #fff; /*97adcb; */
-}
-
-.nihilo .dijitMenuSeparatorBottom {
- border-top: 1px solid #d3d3d3;
-}
-
-/* the checked menu item */
-.nihilo .dijitCheckedMenuItemIconChar {
- display: none;
-}
-
-.nihilo .dijitCheckedMenuItemIcon {
- background-image: url('images/spriteCheckbox.gif');
- background-position: -80px;
-}
-
-.nihilo .dijitCheckedMenuItemChecked .dijitCheckedMenuItemIcon {
- background-position: -64px;
-}
\ No newline at end of file
diff --git a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/themes/nihilo/Menu_rtl.css b/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/themes/nihilo/Menu_rtl.css
deleted file mode 100644
index f07fbd6..0000000
--- a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/themes/nihilo/Menu_rtl.css
+++ /dev/null
@@ -1,10 +0,0 @@
-/* Menu */
-
-.dijitRtl .nihilo .dijitMenuItem .dijitMenuItemIcon {
- padding-left: 3px;
- padding-right: 0px;
-}
-
-.dijitRtl .nihilo .dijitMenuItem .dijitMenuExpand {
- background-position: 0px top;
-}
\ No newline at end of file
diff --git a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/themes/nihilo/ProgressBar.css b/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/themes/nihilo/ProgressBar.css
deleted file mode 100644
index aaa49ea..0000000
--- a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/themes/nihilo/ProgressBar.css
+++ /dev/null
@@ -1,33 +0,0 @@
-
-/****
- dijit.ProgressBar
- ****/
-
-.nihilo .dijitProgressBar {
- margin:2px 0px 2px 0px;
-}
-
-.nihilo .dijitProgressBarEmpty{
- /* outer container and background of the bar that's not finished yet*/
- background:#fff url("images/progressBarEmpty.png") repeat-x center center;
- border-color: #f8d582 #f8d582 #f8d582 #f8d582;
-}
-
-.nihilo .dijitProgressBarTile{
- /* inner container for finished portion when in 'tile' (image) mode */
- background:#f0f0f0 url("images/progressBarFull.png") repeat-x center center;
-}
-
-.nihilo .dijitProgressBarFull {
- border-right:1px solid #f8d582;
-}
-
-.nihilo .dijitProgressBarLabel {
- /* Set to a color that contrasts with both the "Empty" and "Full" parts. */
- color:#293a4b;
-}
-
-.nihilo .dijitProgressBarIndeterminate .dijitProgressBarTile {
- /* use an animated gif for the progress bar in 'indeterminate' mode */
- background:#cad2de url("images/progressBarAnim.gif") repeat-x center center;
-}
\ No newline at end of file
diff --git a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/themes/nihilo/TimePicker.css b/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/themes/nihilo/TimePicker.css
deleted file mode 100644
index f40d3d4..0000000
--- a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/themes/nihilo/TimePicker.css
+++ /dev/null
@@ -1,61 +0,0 @@
-/* Time Picker */
-.nihilo .dijitTimePickerTick,
-.nihilo .dijitTimePickerMarker {
- border-color: #eeeeee;
-}
-
-.nihilo .dijitTimePickerTick {
- color:white;
-}
-
-.nihilo .dijitTimePickerMarker {
- background:#d3d3d3 url("images/titleBar.png") repeat-x top;
- color:#293a4b;
- font-weight: bold;
-}
-
-.nihilo .dijitTimePickerItemSelected {
- color: black;
- background: #ffe284 none;
-}
-
-.nihilo .dijitTimePickerItemHover {
- background: #d6d6dd none;
- color:black;
-}
-
-.nihilo .dijitTimePickerItemHover,
-.nihilo .dijitTimePickerItemSelected {
- position: relative;
- z-index: 10;
-}
-
-.nihilo .dijitTimePickerTick .dijitTimePickerItemInner {
- font-size:0.4em;
-}
-
-.nihilo .dijitTimePickerItemHover .dijitTimePickerItemInner,
-.nihilo .dijitTimePickerItemSelected .dijitTimePickerItemInner {
- font-size:1em;
-}
-
-.nihilo .dijitTimePickerMarkerHover {
- border-top: 1px solid #eeeeee;
-}
-
-.nihilo .dijitTimePickerTickHover,
-.nihilo .dijitTimePickerTickSelected {
- margin-top:-0.3em;
- margin-bottom:-0.3em;
- border-bottom: none;
-}
-
-.dijit_a11y .dijitTimePickerTickHover {
- background-color: #CCC !important;
- border-top: 1px solid #333 !important;
- border-bottom: 1px solid #333 !important;
-}
-
-.dijit_a11y .dijitTimePickerMarkerHover {
- border-bottom-width: 2px;
-}
diff --git a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/themes/nihilo/TitlePane.css b/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/themes/nihilo/TitlePane.css
deleted file mode 100644
index f9891fb..0000000
--- a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/themes/nihilo/TitlePane.css
+++ /dev/null
@@ -1,83 +0,0 @@
-/**
- * dijit.TitlePane
- *
- */
-
-.nihilo .dijitTitlePaneTitle {
- background: #cccccc;
- background:#fff url("images/titleBar.png") repeat-x top left;
- border:1px solid #bfbfbf;
- padding:3px 4px;
- font-size: 0.9em;
- font-weight: bold;
- color: #6d6d6d;
-}
-.nihilo .dijitTitlePaneTitle-hover {
- background: #f9f9f9 url("images/accordionItemActive.png") top repeat-x;
- cursor: pointer;
-}
-
-.nihilo .dijitTitlePaneTitle * {
- vertical-align: middle;
-}
-
-.nihilo .dijitTitlePane .dijitOpen .dijitArrowNode,
-.nihilo .dijitTitlePane .dijitClosed .dijitArrowNode {
- width:15px;
- height:15px;
-}
-
-.nihilo .dijitTitlePaneFocused .dijitTitlePaneTextNode {
- color: #243C5F;
-}
-
-.nihilo .dijitOpen .dijitTitlePaneTextNode,
-.nihilo .dijitFixedOpen .dijitTitlePaneTextNode {
- color: #243C5F;
-}
-
-.nihilo .dijitTitlePane .dijitClosed .dijitArrowNode {
- background: url('images/spriteRoundedIconsSmall.png') no-repeat -30px top;
-}
-.dj_ie6 .nihilo .dijitTitlePane .dijitClosed .dijitArrowNode {
- background:url('images/spriteRoundedIconsSmall.gif') no-repeat -30px top;
-}
-.nihilo .dijitTitlePane .dijitOpen .dijitArrowNode {
- background:url('images/spriteRoundedIconsSmall.png') no-repeat -15px top;
-}
-.dj_ie6 .nihilo .dijitTitlePane .dijitOpen .dijitArrowNode {
- background:url('images/spriteRoundedIconsSmall.gif') no-repeat -15px top;
-}
-.nihilo .dijitTitlePane .dijitArrowNodeInner {
- display:none;
-}
-
-.dijit_a11y .dijitTitlePane .dijitOpen .dijitArrowNodeInner,
-.dijit_a11y .dijitTitlePane .dijitClosed .dijitArrowNodeInner {
- display:inline !important;
- font-family:monospace;
- padding-bottom:.2em;
-}
-
-.dijit_a11y .dijitTitlePane .dijitArrowNode {
- display:none;
-}
-
-.nihilo .dijitTitlePaneContentOuter {
- background: #ffffff;
- border:1px solid #bfbfbf;
- border-top: 0px solid #3d3d3d; /* w/out this, an <h1> on the top line causes a gap between the .content and .label */
-}
-.nihilo .dijitTitlePaneContentInner {
- padding:10px;
-}
-/* force hasLayout to ensure borders etc, show up */
-.dj_ie6 .nihilo .dijitTitlePaneContentOuter,
-.dj_ie6 .nihilo .dijitTitlePane .dijitTitlePaneTitle {
- zoom: 1;
-}
-
-.nihilo .dijitTitlePaneTextNode {
- margin-left: 4px;
- margin-right: 4px;
-}
\ No newline at end of file
diff --git a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/themes/nihilo/TitlePane_rtl.css b/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/themes/nihilo/TitlePane_rtl.css
deleted file mode 100644
index 50a5d43..0000000
--- a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/themes/nihilo/TitlePane_rtl.css
+++ /dev/null
@@ -1,6 +0,0 @@
-.dijitRtl .nihilo .dijitTitlePane .dijitClosed .dijitArrowNode {
- background-position: 0px top;
-}
-.dj_ie6-rtl .nihilo .dijitTitlePane .dijitClosed .dijitArrowNode {
- background-position: 0px top;
-}
\ No newline at end of file
diff --git a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/themes/nihilo/Toolbar.css b/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/themes/nihilo/Toolbar.css
deleted file mode 100644
index 6f67597..0000000
--- a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/themes/nihilo/Toolbar.css
+++ /dev/null
@@ -1,65 +0,0 @@
-.nihilo .dijitToolbar {
- border-bottom: 1px solid #ccc;
- background:#eaeaea url("images/titleBar.png") repeat-x top left;
-}
-
-/* setting a min-height on ditor toolbar */
-.dj_ie6 .nihilo .dijitToolbar {
- height: 10px;
-}
-
-.nihilo .dijitToolbar .dijitButtonNode,
-.nihilo .dijitToolbar .dijitComboButton .dijitButtonContents,
-.nihilo .dijitToolbar .dijitComboButton .dijitDownArrowButton {
- background: none;
- margin: 0px;
- padding: 0px;
- border: none;
- font-size: 12px;
-}
-
-.nihilo .dijitToolbar .dijitButton,
-.nihilo .dijitToolbar .dijitToggleButton,
-.nihilo .dijitToolbar .dijitDropDownButton,
-.nihilo .dijitToolbar .dijitComboButton .dijitButtonContents,
-.nihilo .dijitToolbar .dijitComboButton .dijitDownArrowButton {
- background: none;
- padding: 1px; /* on hover etc., margin replaced w/border */
-}
-
-.nihilo .dijitToolbar .dijitButtonChecked,
-.nihilo .dijitToolbar .dijitToggleButtonChecked {
- background-color:#ffeeb9;
- border:1px solid #f7c95c;
- padding: 0;
-}
-
-.nihilo .dijitToolbar .dijitButtonCheckedHover,
-.nihilo .dijitToolbar .dijitToggleButtonCheckedHover
- {
- background-color:#ffe284;
- border:1px solid #f7c95c;
- padding: 0;
-}
-
-.nihilo .dijitToolbar .dijitButtonHover,
-.nihilo .dijitToolbar .dijitToggleButtonHover,
-.nihilo .dijitToolbar .dijitDropDownButtonHover,
-.nihilo .dijitToolbar .dijitComboButtonHover .dijitButtonContents,
-.nihilo .dijitToolbar .dijitComboButtonDownArrowHover .dijitDownArrowButton {
- /* TODO: change this from Hover to Selected so that button is still highlighted while drop down is being used */
- border: 1px solid #f7c95c;
- padding: 0;
- background-color:#ffe284;
-}
-
-.nihilo .dijitToolbar label {
- padding: 3px 3px 0 6px;
-}
-
-.dj_ie .nihilo .dijitToolbar .dijitComboButton .dijitButtonContentsFocused,
-.dj_ie .nihilo .dijitToolbar .dijitComboButton .dijitDownArrowButtonFocused {
- /* focus border doesn't appear on <td> for IE, so need to add it manually */
- border: 1px #555 dotted !important;
- padding: 0px;
-}
\ No newline at end of file
diff --git a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/themes/nihilo/Tree.css b/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/themes/nihilo/Tree.css
deleted file mode 100644
index 4a565dc..0000000
--- a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/themes/nihilo/Tree.css
+++ /dev/null
@@ -1,118 +0,0 @@
-/* Tree */
-
-.nihilo .dijitTreeNode {
- background : url('images/treeI.gif') no-repeat;
- background-position : top left;
- background-repeat : repeat-y;
- zoom: 1; /* MOW: what the heck is this doing in here? */
-}
-
-/* left vertical line (grid) for all nodes */
-.nihilo .dijitTreeIsLast {
- background: url('images/treeI_half.gif') no-repeat;
-}
-
-.nihilo .dijitTreeNodeHover {
- /* using a transparent png so that we can still see grid lines, which are (unfortunately) behind the dijitRowNode that we are hovering over */
- background-image: url(images/treeHover.png);
- background-repeat: repeat;
- background-color: none !important;
-}
-
-.nihilo .dijitTreeLabel {
- font-weight: normal;
- margin-left: 3px;
-}
-
-.nihilo .dijitTreeIsRoot {
- margin-left: 0;
- background-image: none;
-}
-
-.nihilo .dijitTreeExpando {
- width: 18px;
- height: 18px;
-}
-
-.nihilo .dijitTreeRow {
- /* so insert line shows up on IE when dropping after a target element */
- padding-bottom: 2px;
-}
-
-.nihilo .dijitTreeContent {
- min-height: 18px;
- min-width: 18px;
- padding-left:1px;
-}
-
-
-.nihilo .dijitTreeExpand {
- width: 18px;
- height: 18px;
- background-repeat : no-repeat;
-}
-
-/* same style as IE selection */
-.nihilo .dijitTreeNodeEmphasized {
- background-color: Highlight;
- color: HighlightText;
-}
-
-/* don't use :focus due to opera and IE's lack of support on div's */
-.nihilo .dijitTreeLabelFocused {
- outline: 1px invert dotted;
-}
-
-.nihilo .dijitTreeExpandoOpened {
- background: url('images/spriteTree.gif') no-repeat -18px top;
-}
-
-.nihilo .dijitTreeExpandoClosed {
- background-image: url('images/spriteTree.gif');
-}
-
-.nihilo .dijitTreeExpandoLeaf {
- background: url('images/spriteTree.gif') no-repeat -36px top;
-}
-
-.nihilo .dijitTreeExpandoLoading {
- background-image: url('images/treeExpand_loading.gif');
-}
-
-.nihilo .dijitTreeIcon {
- width: 16px;
- height: 16px;
-}
-
-.nihilo .dijitFolderOpened {
- background: url('images/spriteDivIcons.gif') no-repeat -16px top;
-}
-
-.nihilo .dijitFolderClosed {
- background: url('images/spriteDivIcons.gif') no-repeat top left;
-}
-
-.nihilo .dijitLeaf {
- background: url('images/spriteDivIcons.gif') no-repeat -32px top;
-}
-
-/* Drag and Drop on TreeNodes
- * Put insert line on dijitTreeContent node so it's aligned w/
- * (ie, indented equally with) target element, even
- * though dijitTreeRowNode is the actual "drag object"
- */
-.nihilo .dijitTreeNode .dojoDndItemBefore,
-.nihilo .dijitTreeNode .dojoDndItemAfter {
- border-bottom: none;
- border-top: none;
-}
-
-.nihilo .dijitTreeNode .dojoDndItemBefore .dijitTreeContent {
- /* copied from Common.css */
- border-top: 2px solid #369;
-}
-
-.nihilo .dijitTreeNode .dojoDndItemAfter .dijitTreeContent {
- /* copied from Common.css */
- border-bottom: 2px solid #369;
-}
\ No newline at end of file
diff --git a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/themes/nihilo/Tree_rtl.css b/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/themes/nihilo/Tree_rtl.css
deleted file mode 100644
index 5be10df..0000000
--- a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/themes/nihilo/Tree_rtl.css
+++ /dev/null
@@ -1,28 +0,0 @@
-/* Tree */
-.dijitRtl .nihilo .dijitTreeContainer .dijitTreeNode {
- background-image : none;
-}
-
-.dijitRtl .nihilo .dijitTreeContainer .dijitTreeIsRoot {
-}
-
-.dijitRtl .nihilo .dijitTreeContainer .dijitTreeIsLast {
- background-image: url('images/treeI_half_rtl.gif');
-}
-
-.dijitRtl .nihilo .dijitTreeContainer .dijitTreeContent {
- padding-left: auto;
- padding-right: 1px;
-}
-
-.dijitRtl .nihilo .dijitTreeContainer .dijitTreeExpandoOpened {
- background: url('images/spriteTree_rtl.gif') no-repeat -18px top;
-}
-
-.dijitRtl .nihilo .dijitTreeContainer .dijitTreeExpandoClosed {
- background-image: url('images/spriteTree_rtl.gif');
-}
-
-.dijitRtl .nihilo .dijitTreeContainer .dijitTreeExpandoLeaf {
- background: none;
-}
\ No newline at end of file
diff --git a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/themes/nihilo/form/Button.css b/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/themes/nihilo/form/Button.css
deleted file mode 100644
index 0d318a9..0000000
--- a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/themes/nihilo/form/Button.css
+++ /dev/null
@@ -1,113 +0,0 @@
-
-/*****
- dijit.form.Button
- dijit.form.DropDownButton
- dijit.form.ComboButton
- dijit.form.ComboBox (partial)
- *****/
-
-.nihilo .dijitButtonNode {
- /* enabled state - inner */
- /* border:1px outset #a0a0a0; */
- border:1px solid #dedede;
- border-bottom:1px solid #dedede;
- padding: 0.1em 0.2em 0.2em 0.2em;
- background: #fff url("../images/buttonEnabled.png") repeat-x top left;
-}
-.nihilo .dijitSelect .dijitButtonContents {
- border-right: none;
-}
-
-.nihilo .dijitButtonNode button {
- border: 0px;
- background-color: transparent;
-}
-
-.nihilo .dijitButtonText {
- text-align: center;
- padding: 0 0.3em;
-}
-
-.nihilo .dijitComboBox .dijitButtonNode {
- border-width: 0px 0px 0px 1px;
-}
-
-.nihilo .dijitArrowButton {
- color: #111;
-}
-
-.nihilo .dijitComboButton .dijitDownArrowButton {
- padding-right:4px;
-}
-
-.nihilo .dijitComboBoxReadOnly,
-.nihilo .dijitSpinnerReadOnly,
-.nihilo .dijitSpinnerReadOnly .dijitButtonNode,
-.nihilo .dijitButtonDisabled .dijitButtonNode,
-.nihilo .dijitToggleButtonDisabled .dijitButtonNode,
-.nihilo .dijitDropDownButtonDisabled .dijitButtonNode,
-.nihilo .dijitComboButtonDisabled .dijitButtonNode,
-.nihilo .dijitComboBoxDisabled,
-.nihilo .dijitSpinnerDisabled,
-.nihilo .dijitSpinnerDisabled .dijitButtonNode {
- /* disabled state - inner */
- border-color: #dedede;
- background:#fafafa url("../images/buttonDisabled.png") top repeat-x;
- opacity: 0.60;
-}
-.dj_ie6 .nihilo .dijitComboButtonDisabled .dijitButtonText {
- /* opacity doesn't work on table node in IE, work around here */
- color: #aaa;
-}
-
-
-.nihilo .dijitButtonHover .dijitButtonNode,
-.nihilo .dijitButtonNodeHover,
-.nihilo .dijitToggleButtonHover .dijitButtonNode,
-.nihilo .dijitDropDownButtonHover .dijitButtonNode,
-.nihilo .dijitComboButtonHover .dijitButtonContents,
-.nihilo .dijitComboButtonDownArrowHover .dijitDownArrowButton,
-.nihilo .dijitComboBoxHover .dijitDownArrowButton,
-.nihilo .dijitSpinnerUpArrowHover .dijitUpArrowButton,
-.nihilo .dijitSpinnerDownArrowHover .dijitDownArrowButton {
- /* hover state - inner */
- /* TODO: change from Hover to Selected so that button is still highlighted while drop down is being used */
- color:#243C5F;
- background:#fcfcfc url("../images/buttonHover.png") repeat-x top left;
-}
-
-.nihilo .dijitSpinnerUpArrowActive .dijitUpArrowButton,
-.nihilo .dijitSpinnerDownArrowActive .dijitDownArrowButton,
-.nihilo .dijitButtonActive .dijitButtonNode,
-.nihilo .dijitToggleButtonActive .dijitButtonNode,
-.nihilo .dijitDropDownButtonActive .dijitButtonNode,
-.nihilo .dijitComboButtonActive .dijitButtonContents,
-.nihilo .dijitDownArrowActive .dijitDownArrowButton,
-.nihilo .dijitComboBoxActive .dijitDownArrowButton,
-.nihilo .dijitStackController .dijitToggleButtonChecked .dijitButtonNode {
- /* active state - inner (for when you are pressing a normal button, or
- * when a radio-type button is in a depressed state
- */
- border-color:#dedede;
- background: #f5f5f5 url("../images/buttonActive.png") top left repeat-x;
-}
-
-
-.nihilo .dijitArrowButtonInner {
- background-image: url("../images/spriteArrows.png");
- background-repeat: no-repeat;
- background-position: 0px top;
- width: 11px;
-}
-.nihilo .dijitLeftArrowButton .dijitArrowButtonInner {
- background-position: -11px top;
-}
-.nihilo .dijitUpArrowButton .dijitArrowButtonInner {
- background-position: -22px top;
-}
-.nihilo .dijitRightArrowButton .dijitArrowButtonInner {
- background-position: -33px top;
-}
-.dj_ie6 .nihilo .dijitArrowButtonInner {
- background-image: url("../images/spriteArrows.gif");
-}
diff --git a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/themes/nihilo/form/Button_rtl.css b/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/themes/nihilo/form/Button_rtl.css
deleted file mode 100644
index f856feb..0000000
--- a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/themes/nihilo/form/Button_rtl.css
+++ /dev/null
@@ -1,8 +0,0 @@
-.dijitRtl .nihilo .dijitComboBox .dijitButtonNode {
- border-width: 0px 0px 0px 1px;
-}
-.dijitRtl .nihilo .dijitSelect .dijitButtonContents {
- border-left: none;
- border-right-width: 1px;
-}
-
diff --git a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/themes/nihilo/form/Checkbox.css b/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/themes/nihilo/form/Checkbox.css
deleted file mode 100644
index b35ebf3..0000000
--- a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/themes/nihilo/form/Checkbox.css
+++ /dev/null
@@ -1,67 +0,0 @@
-
-/*
- * CheckBox and Radio Widgets,
- * and the CSS to embed a checkbox or radio icon inside a ToggleButton.
- *
- * Order of images in the default sprite (from L to R, checkbox and radio in same image):
- * checkbox normal - checked
- * - unchecked
- * disabled - checked
- * - unchecked
- * hover - checked
- * - unchecked
- *
- * radio normal - checked
- * - unchecked
- * disabled - checked
- * - unchecked
- * hover - checked
- * - unchecked
-*/
-
-.nihilo .dijitToggleButton .dijitCheckBox,
-.nihilo .dijitToggleButton .dijitCheckBoxIcon {
- background-image: url('../images/spriteCheckbox.gif');
-}
-
-.nihilo .dijitCheckBox,
-.nihilo .dijitCheckBoxIcon { /* inside a toggle button */
- background-image: url('../images/spriteCheckbox.gif'); /* checkbox sprite image */
- background-repeat: no-repeat;
- width: 16px;
- height: 16px;
- margin: 0;
- padding: 0;
-}
-
-.nihilo .dijitCheckBox,
-.nihilo .dijitToggleButton .dijitCheckBoxIcon {
- /* unchecked */
- background-position: -16px;
-}
-
-.nihilo .dijitCheckBoxChecked,
-.nihilo .dijitToggleButtonChecked .dijitCheckBoxIcon {
- /* checked */
- background-position: 0px;
-}
-
-.nihilo .dijitCheckBoxDisabled {
- /* disabled */
- background-position: -48px;
-}
-
-.nihilo .dijitCheckBoxCheckedDisabled {
- /* disabled but checked */
- background-position: -32px;
-}
-
-.nihilo .dijitCheckBoxHover {
- /* hovering over an unchecked enabled checkbox */
- background-position: -80px;
-}
-
-.nihilo .dijitCheckBoxCheckedHover {
- /* hovering over a checked enabled checkbox */
- background-position: -64px;
-}
\ No newline at end of file
diff --git a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/themes/nihilo/form/ComboBox.css b/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/themes/nihilo/form/ComboBox.css
deleted file mode 100644
index 1e3a4db..0000000
--- a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/themes/nihilo/form/ComboBox.css
+++ /dev/null
@@ -1,12 +0,0 @@
-.nihilo .dijitComboBox .dijitArrowButton .dijitArrowButtonInner {
- background:url("../images/spriteArrows.png") no-repeat left center;
- width: 11px;
-}
-
-.dj_ie6 .nihilo .dijitComboBox .dijitArrowButton .dijitArrowButtonInner {
- background:url("../images/spriteArrows.gif") no-repeat left center;
-}
-
-.nihilo .dijitComboBoxHover .dijitArrowButtonInner {
- /* TODO: url("images/arrowDownHover.png") but in IE6 it flickers some? */
-}
\ No newline at end of file
diff --git a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/themes/nihilo/form/Common.css b/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/themes/nihilo/form/Common.css
deleted file mode 100644
index 7957113..0000000
--- a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/themes/nihilo/form/Common.css
+++ /dev/null
@@ -1,100 +0,0 @@
-
-/****
- dijit.form.TextBox
- dijit.form.ValidationTextBox
- dijit.form.SerializableTextBox
- dijit.form.RangeBoundTextBox
- dijit.form.NumberTextBox
- dijit.form.CurrencyTextBox
- dijit.form.NumberSpinner
- dijit.form.ComboBox (partial)
- ****/
-
-.nihilo .dijitInputField INPUT,
-.nihilo .dijitTextBox,
-.nihilo .dijitComboBox,
-.nihilo .dijitSpinner {
- margin: 0em 0.1em;
-}
-
-.nihilo .dijitTextBox,
-.nihilo .dijitComboBox,
-.nihilo .dijitSpinner,
-.nihilo .dijitInlineEditor input,
-.nihilo .dijitTextArea {
- /* For all except dijit.form.NumberSpinner: the actual input element.
- For TextBox, ComboBox, Spinner: the table that contains the input.
- Otherwise the actual input element.
- */
- background:#fff url("../images/validationInputBg.png") repeat-x top left;
- border:1px solid #d3d3d3;
- line-height: normal;
-}
-
-.dj_ie6 .nihilo .dijitTextBox,
-.dj_ie6 .nihilo .dijitComboBox,
-.dj_ie6 .nihilo .dijitSpinner,
-.dj_ie6 .nihilo .dijitInlineEditor input,
-.dj_ie6 .nihilo .dijitTextArea {
- background:#fff url('../images/validationInputBg.gif') repeat-x top left;
-}
-
-.nihilo .dijitComboBox .dijitButtonNode {
- padding: 0 0.2em;
-}
-.nihilo .dijitComboBox .dijitButtonNode,
-.nihilo .dijitSpinner .dijitButtonNode {
- /* line between the input area and the drop down button */
- border-color: #d3d3d3;
- border-left: 1px solid #d3d3d3;
-}
-
-.nihilo .dijitTextBoxFocused,
-.nihilo .dijitComboBoxFocused,
-.nihilo .dijitSpinnerFocused, .nihilo .dijitSpinnerUpArrowActive, .nihilo .dijitSpinnerDownArrowActive,
-.nihilo .dijitTextAreaFocused {
- /* input field when focused (ie: typing affects it) */
- border-color:#b3b3b3;
-}
-.nihilo .dijitComboBoxFocused .dijitButtonNode,
-.nihilo .dijitSpinnerFocused .dijitButtonNode,
-.nihilo .dijitSpinnerUpArrowActive .dijitButtonNode,
-.nihilo .dijitSpinnerDownArrowActive .dijitButtonNode {
- border-left-color:#d3d3d3;
-}
-.nihilo .dijitSpinnerFocused .dijitDownArrowButton,
-.nihilo .dijitSpinnerUpArrowActive .dijitDownArrowButton,
-.nihilo .dijitSpinnerDownArrowActive .dijitDownArrowButton {
- border-top-color:#d3d3d3;
-}
-
-.nihilo .dijitError {
- border-color:#b3b3b3;
- background-color:#f9f7ba;
- background-image:none;
-}
-.dj_ie6 .nihilo .dijitError INPUT {
- /* background-color: transparent on an <input> doesn't work on IE6 */
- background-color:#f9f7ba !important;
-}
-
-.nihilo .dijitErrorFocused {
- background-color:#ff6;
- background-image:none;
-}
-.dj_ie6 .nihilo .dijitErrorFocused INPUT {
- /* background-color: transparent on an <input> doesn't work on IE6 */
- background-color:#ff6 !important;
-}
-
-/* Validation errors */
-.nihilo .dijitValidationIcon {
- /* prevent height change when widget goes from valid to invalid state */
- width: 16px;
- background: transparent url('../images/warning.png') no-repeat center center;
-}
-
-/* The highlight is shown in the ComboBox menu. */
-.nihilo .dijitComboBoxHighlightMatch {
- background-color:#d3d3d3;
-}
\ No newline at end of file
diff --git a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/themes/nihilo/form/Common_rtl.css b/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/themes/nihilo/form/Common_rtl.css
deleted file mode 100644
index f86c9fa..0000000
--- a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/themes/nihilo/form/Common_rtl.css
+++ /dev/null
@@ -1,7 +0,0 @@
-.dijitRtl .nihilo .dijitComboBox .dijitButtonNode,
-.dijitRtl .nihilo .dijitSpinner .dijitButtonNode {
- /* line between the input area and the drop down button */
- border-color: #8ba0bd;
- border-left: 0px solid #8ba0bd;
- border-right: 1px solid #8ba0bd;
-}
\ No newline at end of file
diff --git a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/themes/nihilo/form/RadioButton.css b/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/themes/nihilo/form/RadioButton.css
deleted file mode 100644
index 258f26d..0000000
--- a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/themes/nihilo/form/RadioButton.css
+++ /dev/null
@@ -1,66 +0,0 @@
-/*
- * CheckBox and Radio Widgets,
- * and the CSS to embed a checkbox or radio icon inside a ToggleButton.
- *
- * Order of images in the default sprite (from L to R, checkbox and radio in same image):
- * checkbox normal - checked
- * - unchecked
- * disabled - checked
- * - unchecked
- * hover - checked
- * - unchecked
- *
- * radio normal - checked
- * - unchecked
- * disabled - checked
- * - unchecked
- * hover - checked
- * - unchecked
-*/
-
-.nihilo .dijitToggleButton .dijitRadio,
-.nihilo .dijitToggleButton .dijitRadioIcon {
- background-image: url('../images/spriteRadio.gif');
-}
-
-.nihilo .dijitRadio,
-.nihilo .dijitRadioIcon { /* inside a toggle button */
- background-image: url('../images/spriteRadio.gif'); /* checkbox sprite image */
- background-repeat: no-repeat;
- width: 16px;
- height: 16px;
- margin: 0;
- padding: 0;
-}
-
-.nihilo .dijitRadio,
-.nihilo .dijitToggleButton .dijitRadioIcon {
- /* unselected */
- background-position: -16px;
-}
-
-.nihilo .dijitRadioChecked,
-.nihilo .dijitToggleButtonChecked .dijitRadioIcon {
- /* selected */
- background-position: 0px;
-}
-
-.nihilo .dijitRadioDisabled {
- /* unselected and disabled */
- background-position: -48px;
-}
-
-.nihilo .dijitRadioCheckedDisabled {
- /* selected but disabled */
- background-position: -32px;
-}
-
-.nihilo .dijitRadioHover {
- /* hovering over an unselected enabled radio button */
- background-position: -80px;
-}
-
-.nihilo .dijitRadioCheckedHover {
- /* hovering over a selected enabled radio button */
- background-position: -64px;
-}
\ No newline at end of file
diff --git a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/themes/nihilo/form/Select.css b/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/themes/nihilo/form/Select.css
deleted file mode 100644
index 64e634b..0000000
--- a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/themes/nihilo/form/Select.css
+++ /dev/null
@@ -1,61 +0,0 @@
-/* Cursor States */
-.nihilo .dijitSelectDisabled * {
- cursor: not-allowed !important;
-}
-.nihilo .dijitSelectReadOnly * {
- cursor: default !important;
-}
-.nihilo .dijitSelect .dijitButtonNode {
- padding: 0px;
-}
-
-/* Make unselected "look" more like a text box and less like a button */
-.nihilo .dijitSelect .dijitButtonContents {
- padding-top: 1px;
- background:#fff url("../images/validationInputBg.png") repeat-x top left;
- #background:#fff url('../images/validationInputBg.gif') repeat-x top left;
-}
-.nihilo .dijitSelectHover .dijitButtonContents,
-.nihilo .dijitSelectActive .dijitButtonContents,
-.nihilo .dijitSelectOpened .dijitButtonContents,
-.nihilo .dijitSelectDisabled .dijitButtonContents,
-.nihilo .dijitSelectReadOnly .dijitButtonContents{
- background: transparent none;
-}
-.dj_ie .nihilo .dijitSelect .dijitButtonContents {
- padding-top: 0px;
-}
-
-/* Mirror DropDownButton */
-.nihilo .dijitSelectDisabled .dijitButtonNode {
- border-color: #dedede;
- background:#fafafa url("../images/buttonDisabled.png") top repeat-x;
-}
-.dj_ie .nihilo .dijitSelectDisabled .dijitButtonNode * {
- filter: gray() alpha(opacity=50);
-}
-
-.nihilo .dijitSelectHover .dijitButtonNode {
- color:#000;
- background:#fcfcfc url("../images/buttonHover.png") repeat-x top left;
-}
-
-.nihilo .dijitSelectActive .dijitButtonNode,
-.nihilo .dijitSelectOpened .dijitButtonNode {
- border-color:#dedede;
- background: #f5f5f5 url("../images/buttonActive.png") top left repeat-x;
-}
-
-/* Make the menu look more combobox-like */
-.nihilo .dijitSelectMenu td {
- padding: 0em;
-}
-.nihilo .dijitSelectMenu .dijitMenuItemIcon {
- margin: 0.1em 0.2em;
- display: none;
-}
-.nihilo .dijitSelectMenu .dijitMenuItemLabel,
-.nihilo .dijitSelectMenu .dijitMenuArrowCell {
- padding: 0.1em 0.2em;
-}
-
diff --git a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/themes/nihilo/form/Slider.css b/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/themes/nihilo/form/Slider.css
deleted file mode 100644
index e3fac8e..0000000
--- a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/themes/nihilo/form/Slider.css
+++ /dev/null
@@ -1,149 +0,0 @@
-
-/****
- SLIDER
-****/
-
-.nihilo .dijitSliderProgressBarH {
- border-color: #aab0bb;
- background: #c0c2c5 url("../images/sliderFull.png") repeat-x top left;
-}
-
-.nihilo .dijitSliderProgressBarV {
- border-color: #aab0bb;
- background: #c0c2c5 url("../images/sliderFullVertical.png") repeat-y bottom left;
-}
-
-.nihilo .dijitSliderFocused .dijitSliderProgressBarH,
-.nihilo .dijitSliderFocused .dijitSliderLeftBumper {
- background-image:url("../images/sliderFullFocus.png");
-}
-
-.nihilo .dijitSliderFocused .dijitSliderProgressBarV,
-.nihilo .dijitSliderFocused .dijitSliderBottomBumper {
- background-image:url("../images/sliderFullVerticalFocus.png");
-}
-
-.nihilo .dijitSliderRemainingBarV {
- border-color: #b4b4b4;
- background: #dcdcdc url("../images/sliderEmptyVertical.png") repeat-y bottom left;
-}
-
-.nihilo .dijitSliderRemainingBarH {
- border-color: #b4b4b4;
- background: #dcdcdc url("../images/sliderEmpty.png") repeat-x top left;
-}
-
-.nihilo .dijitSliderBar {
- border-style: solid;
- outline:1px;
- /* border-color: #b4b4b4; */
-}
-.nihilo .dijitSliderFocused .dijitSliderBar {
- border-color:#727272;
-}
-
-.dijit_a11y .dijitSliderProgressBar {
- background-color:#333 !important;
-}
-
-.nihilo .dijitSliderImageHandleH {
- border:0px;
- width:15px;
- height:18px;
- background:url("../images/preciseSliderThumb.png") no-repeat center top;
- #background:url("../images/preciseSliderThumb.gif") no-repeat center top;
- cursor:pointer;
-}
-.nihilo .dijitSliderFocused .dijitSliderImageHandleH {
- background-image:url("../images/preciseSliderThumbFocus.png");
- #background-image:url("../images/preciseSliderThumbFocus.gif");
-}
-
-.nihilo .dijitSliderLeftBumper {
- border-left-width: 1px;
- border-color: #aab0bb;
- background: #c0c2c5 url("../images/sliderFull.png") repeat-x top left;
-}
-
-.nihilo .dijitSliderRightBumper {
- background: #dcdcdc url("../images/sliderEmpty.png") repeat-x top left;
- border-color: #b4b4b4;
- border-right-width: 1px;
-}
-
-.nihilo .dijitSliderImageHandleV {
- border:0px;
- width:20px;
- height:15px;
- background:url("../images/sliderThumb.png") no-repeat center center;
- #background:url("../images/sliderThumb.gif") no-repeat center center;
- cursor:pointer;
-}
-
-.nihilo .dijitSliderFocused .dijitSliderImageHandleV {
- background-image:url("../images/sliderThumbFocus.png");
- #background-image:url("../images/sliderThumbFocus.gif");
-}
-
-.nihilo .dijitSliderBottomBumper {
- border-bottom-width: 1px;
- border-color: #aab0bb;
- background: #c0c2c5 url("../images/sliderFullVertical.png") repeat-y bottom left;
-}
-
-.nihilo .dijitSliderTopBumper {
- background: #dcdcdc url("../images/sliderEmptyVertical.png") repeat-y top left;
- border-color: #b4b4b4;
- border-top-width: 1px;
-}
-
-.nihilo .dijitSliderIncrementIconH,
-.nihilo .dijitSliderIncrementIconV {
- background:url('../images/spriteRoundedIconsSmall.png') no-repeat -45px top;
- #background:url('../images/spriteRoundedIconsSmall.gif') no-repeat -45px top;
- width:15px; height:15px;
- cursor:pointer;
-}
-.nihilo .dijitSliderIncrementIconH {
- background:url('../images/spriteRoundedIconsSmall.png') no-repeat -30px top;
- #background:url('../images/spriteRoundedIconsSmall.gif') no-repeat -30px top;
-}
-
-.nihilo .dijitSliderDecrementIconH,
-.nihilo .dijitSliderDecrementIconV {
- width:15px;
- height:15px;
- cursor:pointer;
- background:url('../images/spriteRoundedIconsSmall.png') no-repeat -15px top;
- #background:url('../images/spriteRoundedIconsSmall.gif') no-repeat -15px top;
-}
-.nihilo .dijitSliderDecrementIconH {
- background:url('../images/spriteRoundedIconsSmall.png') no-repeat 0px top;
- #background:url('../images/spriteRoundedIconsSmall.gif') no-repeat 0px top;
-}
-
-.nihilo .dijitSliderButtonInner {
- visibility:hidden;
-}
-
-.nihilo .dijitSliderReadOnly *,
-.nihilo .dijitSliderDisabled * {
- border-color: #d5d5d5 #bdbdbd #bdbdbd #d5d5d5;
- color: #bdbdbd;
-}
-.nihilo .dijitSliderReadOnly .dijitSliderDecrementIconH,
-.nihilo .dijitSliderDisabled .dijitSliderDecrementIconH {
- background-position: 0px -15px;
-}
-.nihilo .dijitSliderReadOnly .dijitSliderIncrementIconH,
-.nihilo .dijitSliderDisabled .dijitSliderIncrementIconH {
- background-position: -30px -15px;
-}
-.nihilo .dijitSliderReadOnly .dijitSliderDecrementIconV,
-.nihilo .dijitSliderDisabled .dijitSliderDecrementIconV {
- background-position: -15px -15px;
-}
-.nihilo .dijitSliderReadOnly .dijitSliderIncrementIconV,
-.nihilo .dijitSliderDisabled .dijitSliderIncrementIconV {
- background-position: -45px -15px;
-}
\ No newline at end of file
diff --git a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/themes/nihilo/form/Slider_rtl.css b/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/themes/nihilo/form/Slider_rtl.css
deleted file mode 100644
index 8410f36..0000000
--- a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/themes/nihilo/form/Slider_rtl.css
+++ /dev/null
@@ -1,36 +0,0 @@
-
-/* Slider */
-
-.dijitRtl .nihilo .dijitSliderProgressBarH,
-.dijitRtl .nihilo .dijitSliderRemainingBarH,
-.dijitRtl .nihilo .dijitSliderLeftBumper,
-.dijitRtl .nihilo .dijitSliderRightBumper,
-.dijitRtl .nihilo .dijitSliderTopBumper {
- background-position: top right;
-}
-
-.dijitRtl .nihilo .dijitSliderProgressBarV,
-.dijitRtl .nihilo .dijitSliderRemainingBarV,
-.dijitRtl .nihilo .dijitSliderBottomBumper {
- background-position: bottom right;
-}
-
-.dijitRtl .nihilo .dijitSliderLeftBumper {
- border-left-width: 0px;
- border-right-width: 1px;
-}
-
-.dijitRtl .nihilo .dijitSliderRightBumper {
- border-left-width: 1px;
- border-right-width: 0px;
-}
-
-.dijitRtl .nihilo .dijitSliderIncrementIconH {
- background:url('../images/spriteRoundedIconsSmall.png') no-repeat left top;
- #background:url('../images/spriteRoundedIconsSmall.gif') no-repeat left top;
-}
-
-.dijitRtl .nihilo .dijitSliderDecrementIconH {
- background:url('../images/spriteRoundedIconsSmall.png') no-repeat -30px top;
- #background:url('../images/spriteRoundedIconsSmall.gif') no-repeat -30px top;
-}
diff --git a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/themes/nihilo/form/TimeTextBox.css b/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/themes/nihilo/form/TimeTextBox.css
deleted file mode 100644
index bf67b66..0000000
--- a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/themes/nihilo/form/TimeTextBox.css
+++ /dev/null
@@ -1 +0,0 @@
-@CHARSET "UTF-8";
\ No newline at end of file
diff --git a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/themes/nihilo/images/accordionItemActive.png b/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/themes/nihilo/images/accordionItemActive.png
deleted file mode 100644
index 58f3cf9..0000000
--- a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/themes/nihilo/images/accordionItemActive.png
+++ /dev/null
Binary files differ
diff --git a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/themes/nihilo/images/buttonActive.png b/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/themes/nihilo/images/buttonActive.png
deleted file mode 100644
index e2f2fda..0000000
--- a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/themes/nihilo/images/buttonActive.png
+++ /dev/null
Binary files differ
diff --git a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/themes/nihilo/images/buttonDisabled.png b/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/themes/nihilo/images/buttonDisabled.png
deleted file mode 100644
index b76af42..0000000
--- a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/themes/nihilo/images/buttonDisabled.png
+++ /dev/null
Binary files differ
diff --git a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/themes/nihilo/images/buttonEnabled.png b/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/themes/nihilo/images/buttonEnabled.png
deleted file mode 100644
index d4fd306..0000000
--- a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/themes/nihilo/images/buttonEnabled.png
+++ /dev/null
Binary files differ
diff --git a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/themes/nihilo/images/buttonHover.png b/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/themes/nihilo/images/buttonHover.png
deleted file mode 100644
index 1af7e83..0000000
--- a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/themes/nihilo/images/buttonHover.png
+++ /dev/null
Binary files differ
diff --git a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/themes/nihilo/images/dndCopy.png b/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/themes/nihilo/images/dndCopy.png
deleted file mode 100644
index baecd7c..0000000
--- a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/themes/nihilo/images/dndCopy.png
+++ /dev/null
Binary files differ
diff --git a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/themes/nihilo/images/dndMove.png b/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/themes/nihilo/images/dndMove.png
deleted file mode 100644
index 07f878c..0000000
--- a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/themes/nihilo/images/dndMove.png
+++ /dev/null
Binary files differ
diff --git a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/themes/nihilo/images/dndNoCopy.png b/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/themes/nihilo/images/dndNoCopy.png
deleted file mode 100644
index 9bf9c33..0000000
--- a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/themes/nihilo/images/dndNoCopy.png
+++ /dev/null
Binary files differ
diff --git a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/themes/nihilo/images/dndNoMove.png b/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/themes/nihilo/images/dndNoMove.png
deleted file mode 100644
index cb8bd8b..0000000
--- a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/themes/nihilo/images/dndNoMove.png
+++ /dev/null
Binary files differ
diff --git a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/themes/nihilo/images/editor.gif b/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/themes/nihilo/images/editor.gif
deleted file mode 100644
index 750c6b9..0000000
--- a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/themes/nihilo/images/editor.gif
+++ /dev/null
Binary files differ
diff --git a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/themes/nihilo/images/editorDisabled.gif b/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/themes/nihilo/images/editorDisabled.gif
deleted file mode 100644
index e40460d..0000000
--- a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/themes/nihilo/images/editorDisabled.gif
+++ /dev/null
Binary files differ
diff --git a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/themes/nihilo/images/editorDisabled_rtl.gif b/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/themes/nihilo/images/editorDisabled_rtl.gif
deleted file mode 100644
index a0f6c10..0000000
--- a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/themes/nihilo/images/editorDisabled_rtl.gif
+++ /dev/null
Binary files differ
diff --git a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/themes/nihilo/images/editor_rtl.gif b/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/themes/nihilo/images/editor_rtl.gif
deleted file mode 100644
index a9740c2..0000000
--- a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/themes/nihilo/images/editor_rtl.gif
+++ /dev/null
Binary files differ
diff --git a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/themes/nihilo/images/no.gif b/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/themes/nihilo/images/no.gif
deleted file mode 100644
index 9021a14..0000000
--- a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/themes/nihilo/images/no.gif
+++ /dev/null
Binary files differ
diff --git a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/themes/nihilo/images/preciseSliderThumb.gif b/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/themes/nihilo/images/preciseSliderThumb.gif
deleted file mode 100644
index 53b33e5..0000000
--- a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/themes/nihilo/images/preciseSliderThumb.gif
+++ /dev/null
Binary files differ
diff --git a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/themes/nihilo/images/preciseSliderThumb.png b/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/themes/nihilo/images/preciseSliderThumb.png
deleted file mode 100644
index 045bf35..0000000
--- a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/themes/nihilo/images/preciseSliderThumb.png
+++ /dev/null
Binary files differ
diff --git a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/themes/nihilo/images/preciseSliderThumbFocus.gif b/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/themes/nihilo/images/preciseSliderThumbFocus.gif
deleted file mode 100644
index 8c6f92e..0000000
--- a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/themes/nihilo/images/preciseSliderThumbFocus.gif
+++ /dev/null
Binary files differ
diff --git a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/themes/nihilo/images/preciseSliderThumbFocus.png b/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/themes/nihilo/images/preciseSliderThumbFocus.png
deleted file mode 100644
index c235849..0000000
--- a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/themes/nihilo/images/preciseSliderThumbFocus.png
+++ /dev/null
Binary files differ
diff --git a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/themes/nihilo/images/progressBarAnim.gif b/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/themes/nihilo/images/progressBarAnim.gif
deleted file mode 100644
index 543d048..0000000
--- a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/themes/nihilo/images/progressBarAnim.gif
+++ /dev/null
Binary files differ
diff --git a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/themes/nihilo/images/progressBarEmpty.png b/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/themes/nihilo/images/progressBarEmpty.png
deleted file mode 100644
index c2d3695..0000000
--- a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/themes/nihilo/images/progressBarEmpty.png
+++ /dev/null
Binary files differ
diff --git a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/themes/nihilo/images/progressBarFull.png b/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/themes/nihilo/images/progressBarFull.png
deleted file mode 100644
index a8f3865..0000000
--- a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/themes/nihilo/images/progressBarFull.png
+++ /dev/null
Binary files differ
diff --git a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/themes/nihilo/images/sliderEmpty.png b/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/themes/nihilo/images/sliderEmpty.png
deleted file mode 100644
index 99fbd72..0000000
--- a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/themes/nihilo/images/sliderEmpty.png
+++ /dev/null
Binary files differ
diff --git a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/themes/nihilo/images/sliderEmptyVertical.png b/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/themes/nihilo/images/sliderEmptyVertical.png
deleted file mode 100644
index 2d497e3..0000000
--- a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/themes/nihilo/images/sliderEmptyVertical.png
+++ /dev/null
Binary files differ
diff --git a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/themes/nihilo/images/sliderFull.png b/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/themes/nihilo/images/sliderFull.png
deleted file mode 100644
index 9adb254..0000000
--- a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/themes/nihilo/images/sliderFull.png
+++ /dev/null
Binary files differ
diff --git a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/themes/nihilo/images/sliderFullFocus.png b/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/themes/nihilo/images/sliderFullFocus.png
deleted file mode 100644
index 3d75cae..0000000
--- a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/themes/nihilo/images/sliderFullFocus.png
+++ /dev/null
Binary files differ
diff --git a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/themes/nihilo/images/sliderFullVertical.png b/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/themes/nihilo/images/sliderFullVertical.png
deleted file mode 100644
index 27e9752..0000000
--- a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/themes/nihilo/images/sliderFullVertical.png
+++ /dev/null
Binary files differ
diff --git a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/themes/nihilo/images/sliderFullVerticalFocus.png b/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/themes/nihilo/images/sliderFullVerticalFocus.png
deleted file mode 100644
index cca6184..0000000
--- a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/themes/nihilo/images/sliderFullVerticalFocus.png
+++ /dev/null
Binary files differ
diff --git a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/themes/nihilo/images/sliderThumb.gif b/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/themes/nihilo/images/sliderThumb.gif
deleted file mode 100644
index 29899a4..0000000
--- a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/themes/nihilo/images/sliderThumb.gif
+++ /dev/null
Binary files differ
diff --git a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/themes/nihilo/images/sliderThumb.png b/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/themes/nihilo/images/sliderThumb.png
deleted file mode 100644
index b6abbd2..0000000
--- a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/themes/nihilo/images/sliderThumb.png
+++ /dev/null
Binary files differ
diff --git a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/themes/nihilo/images/sliderThumbFocus.gif b/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/themes/nihilo/images/sliderThumbFocus.gif
deleted file mode 100644
index f8d306f..0000000
--- a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/themes/nihilo/images/sliderThumbFocus.gif
+++ /dev/null
Binary files differ
diff --git a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/themes/nihilo/images/sliderThumbFocus.png b/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/themes/nihilo/images/sliderThumbFocus.png
deleted file mode 100644
index 73ee705..0000000
--- a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/themes/nihilo/images/sliderThumbFocus.png
+++ /dev/null
Binary files differ
diff --git a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/themes/nihilo/images/splitContainerSizerH-thumb.png b/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/themes/nihilo/images/splitContainerSizerH-thumb.png
deleted file mode 100644
index e7bc204..0000000
--- a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/themes/nihilo/images/splitContainerSizerH-thumb.png
+++ /dev/null
Binary files differ
diff --git a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/themes/nihilo/images/splitContainerSizerH.png b/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/themes/nihilo/images/splitContainerSizerH.png
deleted file mode 100644
index 5f5b0e9..0000000
--- a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/themes/nihilo/images/splitContainerSizerH.png
+++ /dev/null
Binary files differ
diff --git a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/themes/nihilo/images/splitContainerSizerV-thumb.png b/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/themes/nihilo/images/splitContainerSizerV-thumb.png
deleted file mode 100644
index 410a0a7..0000000
--- a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/themes/nihilo/images/splitContainerSizerV-thumb.png
+++ /dev/null
Binary files differ
diff --git a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/themes/nihilo/images/splitContainerSizerV.png b/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/themes/nihilo/images/splitContainerSizerV.png
deleted file mode 100644
index 064bc18..0000000
--- a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/themes/nihilo/images/splitContainerSizerV.png
+++ /dev/null
Binary files differ
diff --git a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/themes/nihilo/images/spriteArrows.gif b/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/themes/nihilo/images/spriteArrows.gif
deleted file mode 100644
index fc81207..0000000
--- a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/themes/nihilo/images/spriteArrows.gif
+++ /dev/null
Binary files differ
diff --git a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/themes/nihilo/images/spriteArrows.png b/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/themes/nihilo/images/spriteArrows.png
deleted file mode 100644
index 73aa700..0000000
--- a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/themes/nihilo/images/spriteArrows.png
+++ /dev/null
Binary files differ
diff --git a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/themes/nihilo/images/spriteCheckbox.gif b/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/themes/nihilo/images/spriteCheckbox.gif
deleted file mode 100644
index d2c4ebf..0000000
--- a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/themes/nihilo/images/spriteCheckbox.gif
+++ /dev/null
Binary files differ
diff --git a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/themes/nihilo/images/spriteCheckbox.png b/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/themes/nihilo/images/spriteCheckbox.png
deleted file mode 100644
index e992330..0000000
--- a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/themes/nihilo/images/spriteCheckbox.png
+++ /dev/null
Binary files differ
diff --git a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/themes/nihilo/images/spriteDivIcons.gif b/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/themes/nihilo/images/spriteDivIcons.gif
deleted file mode 100644
index 00ad23a..0000000
--- a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/themes/nihilo/images/spriteDivIcons.gif
+++ /dev/null
Binary files differ
diff --git a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/themes/nihilo/images/spriteDivIcons.png b/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/themes/nihilo/images/spriteDivIcons.png
deleted file mode 100644
index 413098a..0000000
--- a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/themes/nihilo/images/spriteDivIcons.png
+++ /dev/null
Binary files differ
diff --git a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/themes/nihilo/images/spriteRadio.gif b/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/themes/nihilo/images/spriteRadio.gif
deleted file mode 100644
index 8dd6e57..0000000
--- a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/themes/nihilo/images/spriteRadio.gif
+++ /dev/null
Binary files differ
diff --git a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/themes/nihilo/images/spriteRadio.png b/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/themes/nihilo/images/spriteRadio.png
deleted file mode 100644
index 14c1080..0000000
--- a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/themes/nihilo/images/spriteRadio.png
+++ /dev/null
Binary files differ
diff --git a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/themes/nihilo/images/spriteRoundedIconsSmall.gif b/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/themes/nihilo/images/spriteRoundedIconsSmall.gif
deleted file mode 100644
index 251389a..0000000
--- a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/themes/nihilo/images/spriteRoundedIconsSmall.gif
+++ /dev/null
Binary files differ
diff --git a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/themes/nihilo/images/spriteRoundedIconsSmall.png b/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/themes/nihilo/images/spriteRoundedIconsSmall.png
deleted file mode 100644
index e81ba07..0000000
--- a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/themes/nihilo/images/spriteRoundedIconsSmall.png
+++ /dev/null
Binary files differ
diff --git a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/themes/nihilo/images/spriteTree.gif b/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/themes/nihilo/images/spriteTree.gif
deleted file mode 100644
index e546e28..0000000
--- a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/themes/nihilo/images/spriteTree.gif
+++ /dev/null
Binary files differ
diff --git a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/themes/nihilo/images/spriteTree.png b/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/themes/nihilo/images/spriteTree.png
deleted file mode 100644
index 33ae07b..0000000
--- a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/themes/nihilo/images/spriteTree.png
+++ /dev/null
Binary files differ
diff --git a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/themes/nihilo/images/spriteTree_rtl.gif b/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/themes/nihilo/images/spriteTree_rtl.gif
deleted file mode 100644
index bbcc64b..0000000
--- a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/themes/nihilo/images/spriteTree_rtl.gif
+++ /dev/null
Binary files differ
diff --git a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/themes/nihilo/images/spriteTree_rtl.png b/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/themes/nihilo/images/spriteTree_rtl.png
deleted file mode 100644
index b06afdb..0000000
--- a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/themes/nihilo/images/spriteTree_rtl.png
+++ /dev/null
Binary files differ
diff --git a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/themes/nihilo/images/tabBottomActiveC.gif b/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/themes/nihilo/images/tabBottomActiveC.gif
deleted file mode 100644
index 84bffde..0000000
--- a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/themes/nihilo/images/tabBottomActiveC.gif
+++ /dev/null
Binary files differ
diff --git a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/themes/nihilo/images/tabBottomActiveSpriteLR.gif b/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/themes/nihilo/images/tabBottomActiveSpriteLR.gif
deleted file mode 100644
index 6803db4..0000000
--- a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/themes/nihilo/images/tabBottomActiveSpriteLR.gif
+++ /dev/null
Binary files differ
diff --git a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/themes/nihilo/images/tabBottomEnabledC.gif b/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/themes/nihilo/images/tabBottomEnabledC.gif
deleted file mode 100644
index 9ef9ab0..0000000
--- a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/themes/nihilo/images/tabBottomEnabledC.gif
+++ /dev/null
Binary files differ
diff --git a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/themes/nihilo/images/tabBottomEnabledSpriteLR.gif b/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/themes/nihilo/images/tabBottomEnabledSpriteLR.gif
deleted file mode 100644
index b6b08ce..0000000
--- a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/themes/nihilo/images/tabBottomEnabledSpriteLR.gif
+++ /dev/null
Binary files differ
diff --git a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/themes/nihilo/images/tabBottomHoverC.gif b/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/themes/nihilo/images/tabBottomHoverC.gif
deleted file mode 100644
index 0f533b5..0000000
--- a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/themes/nihilo/images/tabBottomHoverC.gif
+++ /dev/null
Binary files differ
diff --git a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/themes/nihilo/images/tabBottomHoverSpriteLR.gif b/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/themes/nihilo/images/tabBottomHoverSpriteLR.gif
deleted file mode 100644
index 010b08a..0000000
--- a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/themes/nihilo/images/tabBottomHoverSpriteLR.gif
+++ /dev/null
Binary files differ
diff --git a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/themes/nihilo/images/tabContainerSprite.gif b/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/themes/nihilo/images/tabContainerSprite.gif
deleted file mode 100644
index 92044a7..0000000
--- a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/themes/nihilo/images/tabContainerSprite.gif
+++ /dev/null
Binary files differ
diff --git a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/themes/nihilo/images/tabLeftChecked.gif b/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/themes/nihilo/images/tabLeftChecked.gif
deleted file mode 100644
index d59fd4a..0000000
--- a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/themes/nihilo/images/tabLeftChecked.gif
+++ /dev/null
Binary files differ
diff --git a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/themes/nihilo/images/tabRightChecked.gif b/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/themes/nihilo/images/tabRightChecked.gif
deleted file mode 100644
index d32f44e..0000000
--- a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/themes/nihilo/images/tabRightChecked.gif
+++ /dev/null
Binary files differ
diff --git a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/themes/nihilo/images/tabStripe.gif b/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/themes/nihilo/images/tabStripe.gif
deleted file mode 100644
index a934675..0000000
--- a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/themes/nihilo/images/tabStripe.gif
+++ /dev/null
Binary files differ
diff --git a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/themes/nihilo/images/tabStripeBottom.gif b/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/themes/nihilo/images/tabStripeBottom.gif
deleted file mode 100644
index 64c3376..0000000
--- a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/themes/nihilo/images/tabStripeBottom.gif
+++ /dev/null
Binary files differ
diff --git a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/themes/nihilo/images/tabStripeLeft.gif b/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/themes/nihilo/images/tabStripeLeft.gif
deleted file mode 100644
index d607a45..0000000
--- a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/themes/nihilo/images/tabStripeLeft.gif
+++ /dev/null
Binary files differ
diff --git a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/themes/nihilo/images/tabStripeRight.gif b/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/themes/nihilo/images/tabStripeRight.gif
deleted file mode 100644
index 9778ced..0000000
--- a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/themes/nihilo/images/tabStripeRight.gif
+++ /dev/null
Binary files differ
diff --git a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/themes/nihilo/images/titleBar.png b/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/themes/nihilo/images/titleBar.png
deleted file mode 100644
index 06ea21c..0000000
--- a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/themes/nihilo/images/titleBar.png
+++ /dev/null
Binary files differ
diff --git a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/themes/nihilo/images/titleBarActive.png b/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/themes/nihilo/images/titleBarActive.png
deleted file mode 100644
index fe6c7a4..0000000
--- a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/themes/nihilo/images/titleBarActive.png
+++ /dev/null
Binary files differ
diff --git a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/themes/nihilo/images/tooltipConnectorDown.gif b/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/themes/nihilo/images/tooltipConnectorDown.gif
deleted file mode 100644
index 9c38495..0000000
--- a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/themes/nihilo/images/tooltipConnectorDown.gif
+++ /dev/null
Binary files differ
diff --git a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/themes/nihilo/images/tooltipConnectorDown.png b/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/themes/nihilo/images/tooltipConnectorDown.png
deleted file mode 100644
index d75af71..0000000
--- a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/themes/nihilo/images/tooltipConnectorDown.png
+++ /dev/null
Binary files differ
diff --git a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/themes/nihilo/images/tooltipConnectorLeft.gif b/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/themes/nihilo/images/tooltipConnectorLeft.gif
deleted file mode 100644
index fc947e0..0000000
--- a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/themes/nihilo/images/tooltipConnectorLeft.gif
+++ /dev/null
Binary files differ
diff --git a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/themes/nihilo/images/tooltipConnectorLeft.png b/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/themes/nihilo/images/tooltipConnectorLeft.png
deleted file mode 100644
index f3de66a..0000000
--- a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/themes/nihilo/images/tooltipConnectorLeft.png
+++ /dev/null
Binary files differ
diff --git a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/themes/nihilo/images/tooltipConnectorRight.gif b/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/themes/nihilo/images/tooltipConnectorRight.gif
deleted file mode 100644
index b0e8097..0000000
--- a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/themes/nihilo/images/tooltipConnectorRight.gif
+++ /dev/null
Binary files differ
diff --git a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/themes/nihilo/images/tooltipConnectorRight.png b/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/themes/nihilo/images/tooltipConnectorRight.png
deleted file mode 100644
index ed6efc4..0000000
--- a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/themes/nihilo/images/tooltipConnectorRight.png
+++ /dev/null
Binary files differ
diff --git a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/themes/nihilo/images/tooltipConnectorUp.gif b/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/themes/nihilo/images/tooltipConnectorUp.gif
deleted file mode 100644
index 54bcf65..0000000
--- a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/themes/nihilo/images/tooltipConnectorUp.gif
+++ /dev/null
Binary files differ
diff --git a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/themes/nihilo/images/tooltipConnectorUp.png b/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/themes/nihilo/images/tooltipConnectorUp.png
deleted file mode 100644
index 7f7a5d8..0000000
--- a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/themes/nihilo/images/tooltipConnectorUp.png
+++ /dev/null
Binary files differ
diff --git a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/themes/nihilo/images/treeExpand_loading.gif b/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/themes/nihilo/images/treeExpand_loading.gif
deleted file mode 100644
index db9ddd0..0000000
--- a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/themes/nihilo/images/treeExpand_loading.gif
+++ /dev/null
Binary files differ
diff --git a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/themes/nihilo/images/treeHover.png b/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/themes/nihilo/images/treeHover.png
deleted file mode 100644
index ca80cd2..0000000
--- a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/themes/nihilo/images/treeHover.png
+++ /dev/null
Binary files differ
diff --git a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/themes/nihilo/images/treeI.gif b/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/themes/nihilo/images/treeI.gif
deleted file mode 100644
index 6f669e2..0000000
--- a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/themes/nihilo/images/treeI.gif
+++ /dev/null
Binary files differ
diff --git a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/themes/nihilo/images/treeI_half.gif b/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/themes/nihilo/images/treeI_half.gif
deleted file mode 100644
index e5fd015..0000000
--- a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/themes/nihilo/images/treeI_half.gif
+++ /dev/null
Binary files differ
diff --git a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/themes/nihilo/images/treeI_half_rtl.gif b/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/themes/nihilo/images/treeI_half_rtl.gif
deleted file mode 100644
index 44ad021..0000000
--- a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/themes/nihilo/images/treeI_half_rtl.gif
+++ /dev/null
Binary files differ
diff --git a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/themes/nihilo/images/treeI_rtl.gif b/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/themes/nihilo/images/treeI_rtl.gif
deleted file mode 100644
index 0d32a2f..0000000
--- a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/themes/nihilo/images/treeI_rtl.gif
+++ /dev/null
Binary files differ
diff --git a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/themes/nihilo/images/validationInputBg.gif b/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/themes/nihilo/images/validationInputBg.gif
deleted file mode 100644
index c28475c..0000000
--- a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/themes/nihilo/images/validationInputBg.gif
+++ /dev/null
Binary files differ
diff --git a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/themes/nihilo/images/validationInputBg.png b/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/themes/nihilo/images/validationInputBg.png
deleted file mode 100644
index f3039f9..0000000
--- a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/themes/nihilo/images/validationInputBg.png
+++ /dev/null
Binary files differ
diff --git a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/themes/nihilo/images/warning.png b/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/themes/nihilo/images/warning.png
deleted file mode 100644
index c52f83d..0000000
--- a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/themes/nihilo/images/warning.png
+++ /dev/null
Binary files differ
diff --git a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/themes/nihilo/layout/AccordionContainer.css b/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/themes/nihilo/layout/AccordionContainer.css
deleted file mode 100644
index a4799b2..0000000
--- a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/themes/nihilo/layout/AccordionContainer.css
+++ /dev/null
@@ -1,48 +0,0 @@
-/**
- * dijit.layout.Accordioncontainer
- *
- */
-
-.nihilo .dijitAccordionContainer {
- border-color: #ccc;
- background-color: #fff;
-}
-
-/* common */
-
-.nihilo .dijitAccordionTitle {
- background:#fafafa url("../images/titleBar.png") repeat-x top left;
- border-top: 1px solid #dedede;
- padding: 5px 4px 6px 8px;
- cursor:pointer;
- font-size: 0.9em;
- font-weight: bold;
- color: #6d6d6d;
-}
-
-.nihilo .dijitAccordionTitle-selected {
- background: #f9f9f9 url("../images/accordionItemActive.png") top repeat-x;
- font-weight: bold;
- border-top: 1px solid #dedede;
- border-bottom: 1px solid #dedede;
- padding: 5px 4px 5px 8px;
- cursor: default;
- color: #243C5F;
-}
-
-.nihilo .dijitAccordionArrow {
- background:url("../images/spriteRoundedIconsSmall.gif") no-repeat -30px top;
- width:15px;
- height:15px;
- margin-top:-1px;
-}
-
-.nihilo .dijitAccordionTitle-selected .dijitAccordionArrow {
- background:url("../images/spriteRoundedIconsSmall.gif") no-repeat -15px top;
- margin-top:-1px;
-}
-
-.nihilo .dijitAccordionText {
- margin-left: 4px;
- margin-right: 4px;
-}
diff --git a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/themes/nihilo/layout/AccordionContainer_rtl.css b/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/themes/nihilo/layout/AccordionContainer_rtl.css
deleted file mode 100644
index 1fc2a5f..0000000
--- a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/themes/nihilo/layout/AccordionContainer_rtl.css
+++ /dev/null
@@ -1,8 +0,0 @@
-.dijitRtl .nihilo .dijitAccordionArrow {
- background-position: 0px top;
-}
-
-.dijitRtl .nihilo .dijitAccordionTitle-selected .dijitAccordionArrow {
- /* same rule as LTR mode, just listed to override previous rule in this file */
- background-position: -15px top;
-}
diff --git a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/themes/nihilo/layout/BorderContainer.css b/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/themes/nihilo/layout/BorderContainer.css
deleted file mode 100644
index 1e876f3..0000000
--- a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/themes/nihilo/layout/BorderContainer.css
+++ /dev/null
@@ -1,76 +0,0 @@
-/**
- * dijit.layout.BorderContainer
- *
- */
-
-.nihilo .dijitBorderContainer {
- background-color: #fcfcfc;
- padding: 5px;
-}
-
-.nihilo .dijitSplitContainer-child,
-.nihilo .dijitBorderContainer-child {
- /* By default, put borders on all children of BorderContainer,
- * to give illusion of borders on the splitters themselves.
- */
- border: 1px #ccc solid;
-}
-
-.nihilo .dijitBorderContainer-dijitTabContainerTop,
-.nihilo .dijitBorderContainer-dijitTabContainerBottom,
-.nihilo .dijitBorderContainer-dijitTabContainerLeft,
-.nihilo .dijitBorderContainer-dijitTabContainerRight {
- /* except that TabContainer defines borders on it's sub-nodes (tablist and dijitTabPaneWrapper),
- * so override rule setting border on domNode
- */
- border: none;
-}
-
-.nihilo .dijitBorderContainer-dijitBorderContainer {
- /* also, make nested BorderContainers look like a single big widget with lots of splitters */
- border: none;
- padding: 0px;
-}
-
-.nihilo .dijitSplitterH,
-.nihilo .dijitGutterH {
- background:#FCFCFC;
- border:0;
- border-left:0px solid #d3d3d3;
- border-right:0px solid #d3d3d3;
- height:5px;
-}
-
-.nihilo .dijitSplitterH .dijitSplitterThumb {
- background:#8BA0BD none;
- height:1px;
- top:2px;
- width:19px;
-}
-
-.nihilo .dijitSplitterV,
-.nihilo .dijitGutterV {
- background:#FCFCFC;
- border:0;
- border-top:0px solid #d3d3d3;
- border-bottom:0px solid #d3d3d3;
- width:5px;
-}
-
-.nihilo .dijitSplitterV .dijitSplitterThumb {
- background:#8BA0BD none;
- height:19px;
- left:2px;
- width:1px;
-}
-
-/* active splitter */
-.nihilo .dijitSplitterActive {
- font-size: 1px;
- background-image: none;
- background-color: #aaa;
- -moz-opacity: 0.6;
- opacity: 0.6;
- filter: Alpha(Opacity=60);
- margin: 0;
-}
\ No newline at end of file
diff --git a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/themes/nihilo/layout/ContentPane.css b/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/themes/nihilo/layout/ContentPane.css
deleted file mode 100644
index 37ef084..0000000
--- a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/themes/nihilo/layout/ContentPane.css
+++ /dev/null
@@ -1,21 +0,0 @@
-/* ContentPane */
-
-.nihilo .dijitContentPane {
- padding: 0px;
-}
-
-/* nested layouts */
-.nihilo .dijitTabContainerTop-dijitContentPane,
-.nihilo .dijitTabContainerLeft-dijitContentPane,
-.nihilo .dijitTabContainerRight-dijitContentPane,
-.nihilo .dijitTabContainerBottom-dijitContentPane,
-.nihilo .dijitAccordionContainer-dijitContentPane {
- background-color: #fff;
- padding: 5px;
-}
-
-.nihilo .dijitSplitContainer-dijitContentPane,
-.nihilo .dijitBorderContainer-dijitContentPane {
- background-color: #fff; /* override background-color setting on parent .dijitBorderContainer */
- padding: 5px;
-}
\ No newline at end of file
diff --git a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/themes/nihilo/layout/SplitContainer.css b/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/themes/nihilo/layout/SplitContainer.css
deleted file mode 100644
index e73c0e7..0000000
--- a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/themes/nihilo/layout/SplitContainer.css
+++ /dev/null
@@ -1,34 +0,0 @@
-/**
- * dijit.layout.SplitContainer
- *
- */
-
-.nihilo .dijitSplitContainerSizerH {
- background:url("../images/splitContainerSizerV.png") repeat-y #fff;
- border:0;
- border-left:0px solid #d3d3d3;
- border-right:0px solid #d3d3d3;
- width:5px;
-}
-
-.nihilo .dijitSplitContainerSizerH .thumb {
- background:url("../images/splitContainerSizerV-thumb.png") no-repeat;
- left:1px;
- width:2px;
- height:19px;
-}
-
-.nihilo .dijitSplitContainerSizerV {
- background:url("../images/splitContainerSizerH.png") repeat-x #fff;
- border:0;
- border-top:0px solid #d3d3d3;
- border-bottom:0px solid #d3d3d3;
- height:2px;
-}
-
-.nihilo .dijitSplitContainerSizerV .thumb {
- background:url("../images/splitContainerSizerH-thumb.png") no-repeat;
- top:1px;
- width:19px;
- height:5px;
-}
\ No newline at end of file
diff --git a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/themes/nihilo/layout/TabContainer.css b/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/themes/nihilo/layout/TabContainer.css
deleted file mode 100644
index bc2002a..0000000
--- a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/themes/nihilo/layout/TabContainer.css
+++ /dev/null
@@ -1,518 +0,0 @@
-/**
- * dijit.layout.TabContainer
- *
- * To style TabContainer with rounded corners
- * you can use these classes: .dijitTab (left), .dijitTabContent (center), dijitTabInnerDiv (right)
- * For tabs aligned to top you can style a stripe div right underneath the tabs using .dijitTabStripe
- */
-@import url("../Menu.css");
-
-/* Classes for all types of tabs (top/bottom/left/right) */
-
-.nihilo .dijitTabContainer .tabStripRBtn {
- margin-right: 21px;
-}
-.nihilo .dijitTabContainer .tabStripLBtn {
- margin-left: 21px;
-}
-
-.nihilo .dijitTabContainerBottom .nowrapTabStrip .dijitTab {
- top: 0px;
-}
-
-.nihilo .dijitTabContainer .tabStripMenuButton-Hover {
- cursor: pointer;
-}
-
-/* Tabs, shared classes */
-.nihilo .dijitTabPaneWrapper {
- background:#fff;
- border:1px solid #ccc;
- margin: 0;
- padding: 0;
-}
-
-.nihilo .dijitTabInnerDiv {
- padding:0px 3px 0px 0px;
- margin: 0 0 0 4px;
- background: url("../images/tabContainerSprite.gif") no-repeat;
- background-position: right -400px;
-}
-
-.nihilo .dijitTab {
- line-height:normal;
- margin:0 2px 0 0; /* space between one tab and the next in top/bottom mode */
- padding:0px;
- background: url("../images/tabContainerSprite.gif") no-repeat 0 -300px;
- color: #6d6d6d;
- border-bottom: 1px #ccc solid;
-}
-
-.nihilo .dijitTabInnerDiv .dijitTabContent {
- padding:3px 3px 3px 4px;
- background: url("../images/tabContainerSprite.gif") repeat-x 0 -350px;
- position: relative;
-}
-
-/* hovered tab */
-.nihilo .dijitTabHover {
- color: #243C5F;
- background: url("../images/tabContainerSprite.gif") no-repeat 0px -150px;
-}
-
-.nihilo .dijitTabHover .dijitTabInnerDiv {
- background: url("../images/tabContainerSprite.gif") no-repeat right -250px;
-}
-
-.nihilo .dijitTabHover .dijitTabInnerDiv .dijitTabContent {
- background: url("../images/tabContainerSprite.gif") repeat-x 0 -200px;
-}
-
-/* checked tab*/
-.nihilo .dijitTabChecked,
-.nihilo .dijitTabCloseButtonChecked
-{
- /* the selected tab (with or without hover) */
- background: url("../images/tabContainerSprite.gif") no-repeat 0px -0px;
-}
-
-.nihilo .dijitTabChecked .dijitTabInnerDiv {
- background: url("../images/tabContainerSprite.gif") no-repeat right -100px;
-}
-
-.nihilo .dijitTabChecked .dijitTabInnerDiv .dijitTabContent {
- background: url("../images/tabContainerSprite.gif") repeat-x 0 -50px;
- color: #243C5F !important;
-}
-
-/* Nested Tabs */
-.nihilo .dijitTabContainerNested .dijitTabListWrapper {
- height: auto;
-}
-
-.nihilo .dijitTabContainerTabListNested {
- background: #FDFDFD;
- border: none;
- margin-bottom: 0px; /* override margin: -1px; */
-}
-.nihilo .dijitTabContainerTabListNested .dijitTab {
- background: none;
- border: none;
- top: 0px; /* override top:1px setting of top-level tabs */
-}
-.nihilo .dijitTabContainerTabListNested .dijitTab .dijitTabInnerDiv,
-.nihilo .dijitTabContainerTabListNested .dijitTab .dijitTabContent {
- background: none;
-}
-.nihilo .dijitTabContainerTabListNested .dijitTabHover .dijitTabContent .tabLabel {
- text-decoration: underline;
-}
-.nihilo .dijitTabContainerTabListNested .dijitTabChecked .tabLabel {
- text-decoration: underline;
- font-weight: bold;
-}
-.nihilo .dijitTabContainerSpacerNested {
- /* thinner line between tab (labels) and content */
- height: 0px;
- border-bottom: 0px;
-}
-.nihilo .dijitTabPaneWrapperNested {
- border: none; /* prevent double border */
-}
-
-
-/* Close button */
-.nihilo .dijitTab .closeImage {
- background: url("../images/spriteRoundedIconsSmall.png") no-repeat -60px top;
- width: 15px;
- height: 15px;
- margin-top: -1px;
-}
-
-.dj_ie6 .nihilo .dijitTab .closeImage {
- background: url("../images/spriteRoundedIconsSmall.gif") no-repeat -60px top;
-}
-.nihilo .dijitTab .closeButton-hover .closeImage {
- background: url("../images/spriteRoundedIconsSmall.png") no-repeat -60px -15px;
-}
-.dj_ie6 .nihilo .dijitTab .closeButton-hover .closeImage {
- background: url("../images/spriteRoundedIconsSmall.gif") no-repeat -60px -15px;
-}
-
-.nihilo .dijitTab .tabLabel {
- /* make sure tabs w/close button and w/out close button are same height, even w/small (<15px) font */
- min-height: 15px;
- display: inline-block;
-}
-.dj_ie6 .nihilo .dijitTabButtonIcon {
- /* because min-height doesn't work on IE6 */
- height: 18px;
- width: 1px;
-}
-
-/* ================================ */
-/* top tabs */
-.nihilo .dijitTabContainerTop-tabs {
- border-bottom: none;
- padding-bottom: 1px;
- background-position: bottom;
- padding-left: 3px;
-}
-
-.dj_ie6 .nihilo .dijitTabListContainer-top,
-.dj_ie7 .nihilo .dijitTabListContainer-top {
- z-index: 3;
-}
-
-.dj_ie6 .nihilo .dijitTabContainerTop-tabs,
-.dj_ie7 .nihilo .dijitTabContainerTop-tabs {
- border-bottom: 1px solid #ccc;
- padding-bottom: 0px;
-}
-
-.nihilo .dijitTabContainerTopNoStrip {
- padding-top: 3px;
-}
-
-/* top container */
-.nihilo .dijitTabContainerTop-container {
- border-top: none;
-}
-
-/* checked tabs */
-.nihilo .dijitTabContainerTop-tabs .dijitTabChecked {
- border-bottom-color: #f8f8f8;
-}
-
-/* strip */
-.nihilo .dijitTabContainer .dijitTabContainerTopStrip {
- border-bottom: none;
- padding-top: 1px;
- margin-top: 1px;
- background: #f2f2f2;
- border-top: 1px solid #CCC;
- border-right: 1px solid #CCC;
- border-left: 1px solid #CCC;
-}
-
-
-/* ================================ */
-/* bottom tabs */
-.nihilo .dijitTabContainerBottom-tabs {
- border-top: none;
- background-position: top;
- padding-left: 3px;
-}
-
-.dj_ie6 .nihilo .dijitTabListContainer-bottom,
-.dj_ie7 .nihilo .dijitTabListContainer-bottom {
- z-index: 3;
-}
-
-.dj_ie6 .nihilo .dijitTabContainerBottom-tabs,
-.dj_ie7 .nihilo .dijitTabContainerBottom-tabs {
- border-top: 1px solid #ccc;
- margin-top: -1px;
-}
-
-/* bottom container */
-.nihilo .dijitTabContainerBottom-container {
- border-bottom: none;
-}
-
-.nihilo .dijitTabContainerBottom-tabs .dijitTab {
- border-bottom: none;
- border-top: 1px solid #ccc;
- background: url("../images/tabBottomEnabledSpriteLR.gif") no-repeat bottom left;
-}
-
-/* checked tabs */
-.nihilo .dijitTabContainerBottom-tabs .dijitTabChecked {
- border-top-color: #f8f8f8;
-}
-
-.nihilo .dijitTabContainerBottom-tabs .dijitTabInnerDiv .dijitTabContent {
- padding-top: 3px;
- padding-bottom: 3px;
- background: url("../images/tabBottomEnabledC.gif") repeat-x bottom left;
-}
-
-.nihilo .dijitTabContainerBottom-tabs .dijitTabInnerDiv {
- background: url("../images/tabBottomEnabledSpriteLR.gif") no-repeat bottom right;
-}
-
-.nihilo .dijitTabContainerBottom-tabs .dijitTabHover {
- color: #243C5F;
- background: url("../images/tabBottomHoverSpriteLR.gif") no-repeat bottom left;
-}
-
-.nihilo .dijitTabContainerBottom-tabs .dijitTabHover .dijitTabInnerDiv {
- background: url("../images/tabBottomHoverSpriteLR.gif") no-repeat bottom right;
-}
-
-.nihilo .dijitTabContainerBottom-tabs .dijitTabHover .dijitTabInnerDiv .dijitTabContent {
- background: url("../images/tabBottomHoverC.gif") repeat-x bottom left;
-}
-
-.nihilo .dijitTabContainerBottom-tabs .dijitTabChecked,
-.nihilo .dijitTabContainerBottom-tabs .dijitTabCloseButtonChecked
-{
- /* the selected tab (with or without hover) */
- background: url("../images/tabBottomActiveSpriteLR.gif") no-repeat bottom left;
-}
-
-.nihilo .dijitTabContainerBottom-tabs .dijitTabChecked .dijitTabInnerDiv {
- background: url("../images/tabBottomActiveSpriteLR.gif") no-repeat bottom right;
-}
-
-.nihilo .dijitTabContainerBottom-tabs .dijitTabChecked .dijitTabInnerDiv .dijitTabContent {
- background: url("../images/tabBottomActiveC.gif") repeat-x bottom left;
-}
-
-/* strip */
-.nihilo .dijitTabContainer .dijitTabContainerBottomStrip {
- border: 1px solid #ccc;
- background: #f2f2f2;
- border-top: none;
- padding-bottom: 2px;
-}
-
-/* top/bottom strip */
-.nihilo .dijitTabContainerBottom-spacer,
-.nihilo .dijitTabContainerTop-spacer {
- height: 2px;
- border: 1px solid #ccc;
- background: #f8f8f8;
-}
-
-.nihilo .dijitTabContainerTop-spacer {
- margin-top: -1px;
-}
-.nihilo .dijitTabContainerBottom-spacer {
- margin-bottom: -1px;
-}
-
-
-/* ================================ */
-/* right tabs */
-.nihilo .dijitTabContainerRight-tabs {
- border-color: #ccc;
- padding-top: 3px;
-}
-.nihilo .dijitTabContainerRight .dijitTabListWrapper {
- padding-right: 3px;
-}
-
-/* right container */
-.nihilo .dijitTabContainerRight-container {
- border-right: none;
-}
-
-.nihilo .dijitTabContainerRight-tabs .dijitTab {
- border-bottom: none;
- border-left: 1px solid #ccc;
- border-bottom: 1px solid #dedede !important;
-}
-
-
-/* some odd ie bug when borders dissapear when setting a bottom margin, this sortof helps */
-.dj_ie .nihilo .dijitTabContainerRight-tabs .dijitTabInnerDiv {
- border-bottom: solid #fff 1px;
-}
-
-/* checked tabs */
-.nihilo .dijitTabContainerRight-tabs .dijitTabChecked {
- border-left-color: #f8f8f8;
-}
-
-.nihilo .dijitTabContainerRight-tabs .dijitTabChecked {
- background: url("../images/tabRightChecked.gif") no-repeat left top !important;
-}
-
-/* some odd ie bug when borders dissapear when setting a bottom margin, this sortof helps */
-.dj_ie .nihilo .dijitTabContainerRight-tabs .dijitTabChecked .dijitTabInnerDiv,
-.dj_ie .nihilo .dijitTabContainerRight-tabs .dijitTabCheckedHover .dijitTabInnerDiv {
- border-bottom: solid #efefef 1px;
-}
-
-.nihilo .dijitTabContainerRight-tabs .dijitTab {
- background: url("../images/tabContainerSprite.gif") no-repeat left -350px;
-}
-.nihilo .dijitTabContainerRight-tabs .dijitTabHover .dijitTab {
- background: url("../images/tabContainerSprite.gif") no-repeat left -200px;
-}
-
-/* strip */
-.nihilo .dijitTabContainerRightStrip {
- padding-right: 2px;
- border: 1px solid #ccc;
- border-left: none;
- background: #f2f2f2;
-}
-
-/* ================================ */
-/* left tabs */
-.nihilo .dijitTabContainerLeft-tabs {
- border-color: #ccc;
- padding-top: 3px;
-}
-
-/* left conatiner */
-.nihilo .dijitTabContainerLeft-container {
- border-left: none;
-}
-
-.nihilo .dijitTabContainerLeft-tabs .dijitTab {
- border-right: 1px solid #ccc;
- border-bottom: 1px solid #dedede;
-}
-
-/* checked tabs */
-.nihilo .dijitTabContainerLeft-tabs .dijitTabChecked {
- border-right: 1px solid #f8f8f8;
-}
-
-.nihilo .dijitTabContainerLeft-tabs .dijitTabInnerDiv {
- background: url("../images/tabContainerSprite.gif") no-repeat right -350px;
-}
-.nihilo .dijitTabContainerLeft-tabs .dijitTabHover .dijitTabInnerDiv {
- background: url("../images/tabContainerSprite.gif") no-repeat right -200px;
-}
-.nihilo .dijitTabContainerLeft-tabs .dijitTabChecked .dijitTabInnerDiv,
-.nihilo .dijitTabContainerLeft-tabs .dijitTabCheckedHover .dijitTabInnerDiv {
- background: url("../images/tabLeftChecked.gif") no-repeat right top;
-}
-
-.dj_ie .nihilo .dijitTabContainerLeft-tabs .dijitTabChecked .dijitTabInnerDiv,
-.dj_ie .nihilo .dijitTabContainerLeft-tabs .dijitTabCheckedHover .dijitTabInnerDiv {
- border-bottom: solid #efefef 1px;
-}
-
-.dj_ie .nihilo .dijitTabContainerLeft-tabs .dijitTabInnerDiv {
- border-bottom: solid #fff 1px;
-}
-
-/* strip */
-.nihilo .dijitTabContainerLeftStrip {
- padding-left: 2px;
- border: 1px solid #ccc;
- border-right: none;
-}
-
-.nihilo .dijitTabContainerLeftStrip {
- background: #f2f2f2;
-}
-
-/* ================================ */
-/* left/right tabs */
-.nihilo .dijitTabContainerLeft-tabs .dijitTab,
-.nihilo .dijitTabContainerRight-tabs .dijitTab {
- margin-right:auto;
- margin-bottom:2px; /* space between one tab and the next in left/right mode */
-}
-
-/* left/right tabstrip */
-.nihilo .dijitTabContainerLeft-spacer,
-.nihilo .dijitTabContainerRight-spacer {
- width: 2px;
- border: 1px solid #ccc;
- background: #f8f8f8;
-}
-
-.nihilo .dijitTabContainerRight-spacer {
- border-right: none;
-}
-
-.nihilo .dijitTabContainerRight-tabs {
- padding-top: 3px;
- height: 100%;
-}
-.nihilo .dijitTabContainerLeft-tabs {
- height: 100%;
-}
-
-.nihilo .dijitTabContainerLeft-spacer {
- border-left: none;
-}
-
-/* ================================ */
-
-/* this resets the tabcontainer stripe when within a contentpane */
-.nihilo .dijitTabContainerTop-dijitContentPane .dijitTabContainerTop-tabs {
- border-left: 0px solid #ccc;
- border-top: 0px solid #ccc;
- border-right: 0px solid #ccc;
- padding-top: 0px;
- padding-left: 0px;
-}
-
-/* ================================ */
-
-/* Menu and slider control styles */
-.nihilo .dijitTabContainer .tabStripButton {
- margin-right: 0px;
-}
-
-.nihilo .tabStripButton .dijitTabInnerDiv .dijitTabContent {
- padding: 5px 0 6px;
-}
-
-.dj_ie6 .nihilo .tabStripButton .dijitTabInnerDiv .dijitTabContent,
-.dj_ie7 .nihilo .tabStripButton .dijitTabInnerDiv .dijitTabContent,
-.dj_opera .nihilo .tabStripButton .dijitTabInnerDiv .dijitTabContent {
- padding-bottom: 7px;
-}
-
-.nihilo .tabStrip-disabled .tabStripButton .dijitTabInnerDiv .dijitTabContent {
- padding: 3px 0 5px;
-}
-
-.dj_ie6 .nihilo .tabStrip-disabled .tabStripButton .dijitTabInnerDiv .dijitTabContent,
-.dj_ie7 .nihilo .tabStrip-disabled .tabStripButton .dijitTabInnerDiv .dijitTabContent,
-.dj_opera .nihilo .tabStrip-disabled .tabStripButton .dijitTabInnerDiv .dijitTabContent {
- padding-top: 4px;
-}
-
-.nihilo .dijitTabContainer .tabStripButton {
- /* float need width set */
- width: 21px;
-}
-
-.nihilo .dijitTabContainer .tabStripButton img {
- height: 14px;
- background: url(../images/spriteRoundedIconsSmall.png) no-repeat left top ;
-}
-
-.dj_ie6 .nihilo .dijitTabContainer .tabStripButton img {
- background-image: url(../images/spriteRoundedIconsSmall.gif);
-}
-
-.nihilo .dijitTabContainer .tabStripSlideButtonRight img {
- background-position: -30px top;
-}
-
-.nihilo .dijitTabContainer .tabStripMenuButton img {
- background-position: -15px top;
-}
-
-.nihilo .dijitTabContainerTopNone {
- padding-top: 0px;
-}
-
-.nihilo .dijitTabContainer .tabStripButton-top {
- margin-top: 1px;
-}
-
-.nihilo .dijitTabContainer .tabStripButton-bottom {
- background: transparent url(../images/tabBottomEnabledSpriteLR.gif) no-repeat scroll left bottom;
- border-bottom: medium none;
- border-top: 1px solid #CCCCCC;
-}
-
-.nihilo .dijitTabContainer .tabStripButton-bottom .dijitTabInnerDiv {
- background: transparent url(../images/tabBottomEnabledSpriteLR.gif) no-repeat scroll right bottom;
-}
-
-.nihilo .dijitTabContainer .tabStripButton-bottom .dijitTabContent {
- background: transparent;
-}
\ No newline at end of file
diff --git a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/themes/nihilo/layout/TabContainer_rtl.css b/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/themes/nihilo/layout/TabContainer_rtl.css
deleted file mode 100644
index 7421e2e..0000000
--- a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/themes/nihilo/layout/TabContainer_rtl.css
+++ /dev/null
@@ -1,43 +0,0 @@
-.dijitRtl .nihilo .dijitTab {
- margin-right:0;
- margin-left:2px; /* space between one tab and the next in top/bottom mode */
-}
-
-/* tab strips */
-.dijitRtl .nihilo .dijitTabContainer .tabStripButton {
- margin-left: 0;
-}
-
-.dijitRtl .nihilo .dijitTabContainerTopStrip,
-.dijitRtl .nihilo .dijitTabContainerBottomStrip,
-.dijitRtl .nihilo .dijitTabContainerTop-tabs,
-.dijitRtl .nihilo .dijitTabContainerBottom-tabs {
- padding-left: 0;
- padding-right: 3px;
-}
-
-.dijitRtl .nihilo .dijitTabInnerDiv {
- padding-left: 3px;
- padding-right: 4px;
-}
-
-.dijitRtl .nihilo .dijitTabPaneWrapper {
- #zoom: 1;
-}
-
-.dj_ie-rtl .nihilo .dijitTabContainerLeft-tabs {
- margin-left: 0px !important;
-}
-
-.dj_ie-rtl .nihilo .dijitTabContainerRight-tabs {
- margin-right: 0px !important;
-}
-
-.dijitRtl .nihilo .dijitTabContainerLeft-tabs .dijitTab,
-.dijitRtl .nihilo .dijitTabContainerRight-tabs .dijitTab {
- margin-left:0px;
-}
-
-.dj_ie-rtl .nihilo .dijitTab .dijitTabInnerDiv{
- width : 1%;
-}
\ No newline at end of file
diff --git a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/themes/nihilo/nihilo.css b/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/themes/nihilo/nihilo.css
deleted file mode 100644
index dfef7a8..0000000
--- a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/themes/nihilo/nihilo.css
+++ /dev/null
@@ -1,41 +0,0 @@
-/*
- Adds cosmetic styling to Dijit. Users may swap with a custom theme CSS file.
-
- NOTES:
- ---
- Dialog.css contains css classes for both Dialog and Tooltip!
- This because currently a dijit.TooltipDialog exist. Until this is resolved
- you need to include Dialog.css for both dijits
- ---
- Toolbar.css contains classes also used in Editor. Until this is resolved
- you need to include Toolbar.css for both Toolbar and Editor
- ---
- Button.css contains classes for combobox,
-
-*/
-
-@import url("../dijit.css");
-@import url("Common.css");
-
-@import url("layout/ContentPane.css");
-@import url("layout/TabContainer.css");
-@import url("layout/AccordionContainer.css");
-@import url("layout/SplitContainer.css");
-@import url("layout/BorderContainer.css");
-@import url("form/Common.css");
-@import url("form/Button.css");
-@import url("form/ComboBox.css");
-@import url("form/Checkbox.css");
-@import url("form/RadioButton.css");
-@import url("form/Slider.css");
-@import url("form/Select.css");
-@import url("Tree.css");
-@import url("ProgressBar.css");
-@import url("TitlePane.css");
-@import url("Calendar.css");
-@import url("TimePicker.css");
-@import url("Toolbar.css");
-@import url("Dialog.css");
-@import url("Menu.css");
-@import url("Editor.css");
-@import url("ColorPalette.css");
\ No newline at end of file
diff --git a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/themes/nihilo/nihilo_rtl.css b/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/themes/nihilo/nihilo_rtl.css
deleted file mode 100644
index 1edd055..0000000
--- a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/themes/nihilo/nihilo_rtl.css
+++ /dev/null
@@ -1,28 +0,0 @@
-/*
- Adds cosmetic styling to Dijit. Users may swap with a custom theme CSS file.
-
- NOTES:
- ---
- Dialog.css contains css classes for both Dialog and Tooltip!
- This because currently a dijit.TooltipDialog exist. Until this is resolved
- you need to include Dialog.css for both dijits
- ---
- Toolbar.css contains classes also used in Editor. Until this is resolved
- you need to include Toolbar.css for both Toolbar and Editor
- ---
- Button.css contains classes for combobox,
-
-*/
-
-@import url("../dijit_rtl.css");
-@import url("layout/TabContainer_rtl.css");
-@import url("layout/AccordionContainer_rtl.css");
-@import url("form/Slider_rtl.css");
-@import url("form/Button_rtl.css");
-@import url("form/Common_rtl.css");
-@import url("Tree_rtl.css");
-@import url("TitlePane_rtl.css");
-@import url("Calendar_rtl.css");
-@import url("Dialog_rtl.css");
-@import url("Menu_rtl.css");
-@import url("Editor_rtl.css");
\ No newline at end of file
diff --git a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/themes/soria/Calendar.css b/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/themes/soria/Calendar.css
deleted file mode 100644
index f0a8311..0000000
--- a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/themes/soria/Calendar.css
+++ /dev/null
@@ -1,151 +0,0 @@
-/* Calendar*/
-
-.soria .dijitCalendarIncrementControl {
- /* next/prev month buttons */
- width:15px;
- height:15px;
- background-image: url("images/spriteRoundedIconsSmall.png");
- background-repeat: no-repeat;
-}
-.dj_ie6 .soria .dijitCalendarIncrementControl {
- font-size:.1em;
- background-image: url("images/spriteRoundedIconsSmall.gif");
-}
-
-.soria .dijitA11ySideArrow {
- display: none;
-}
-
-.soria .dijitCalendarDecrease {
- background-position: top left;
-}
-.soria .dijitCalendarIncrease {
- background-position: -30px top;
-}
-
-.soria table.dijitCalendarContainer {
- font-size: 100%;
- border-spacing: 0;
- border-collapse: separate;
- border: 1px solid #b1badf;
- margin: 0;
-}
-
-.soria .dijitCalendarMonthContainer th {
- /* month header cell */
- background:#bed7f0 url("images/titleBar.png") repeat-x top;
- padding-top:.3em;
- padding-bottom:.2em;
- text-align:center;
-}
-.dj_ie6 .soria .dijitCalendarMonthContainer th {
- padding-top:.2em;
- padding-bottom:.1em;
-}
-
-.soria .dijitCalendarDayLabelTemplate {
- /* day of week labels */
- background:#bed7f0;
- font-weight:normal;
- padding-top:.15em;
- padding-bottom:.2em;
- border-bottom: 1px solid #b1badf;
- color:#293a4b;
- text-align:center;
-}
-
-.soria .dijitCalendarBodyContainer {
- border-bottom: 1px solid #eeeeee;
-}
-
-.soria .dijitCalendarMonthLabel {
- color:#293a4b;
- font-weight: bold;
-}
-
-.soria .dijitCalendarDateTemplate {
- /* style for each day cell */
- font-size: 0.9em;
- font-weight: bold;
- text-align: center;
- padding: 0.3em 0.3em 0.05em 0.3em;
- letter-spacing: 1px;
- background-color: #fff;
- border:#fff solid 1px !important;
-}
-
-.dj_ie .soria .dijitCalendarDateTemplate {
- padding: 0.1em .33em 0.02em .33em;
-}
-
-.soria .dijitCalendarPreviousMonth,
-.soria .dijitCalendarNextMonth {
- /* days that are part of the previous or next month */
- color:#999999;
- background-color:#fdfdfd !important;
- border:#fdfdfd solid 1px !important;
-}
-
-.soria .dijitCalendarPreviousMonthDisabled,
-.soria .dijitCalendarNextMonthDisabled {
- /* days that are part of the previous or next month - disabled*/
- background-color:#a4a5a6 !important;
-}
-
-.soria .dijitCalendarCurrentMonth {
- /* days that are part of this month */
-}
-
-.soria .dijitCalendarCurrentMonthDisabled {
- /* days that are part of this month - disabled */
- background-color:#bbbbbc !important;
-}
-
-.soria .dijitCalendarDisabledDate {
- /* one or the other? */
- /* background: url(images/noX.gif) no-repeat center center !important; */
- text-decoration:line-through !important;
- cursor:default !important;
-}
-
-.soria .dijitCalendarCurrentDate {
- /* cell for today's date */
- text-decoration:underline;
- font-weight:bold;
-}
-
-.soria .dijitCalendarSelectedDate {
- /* cell for the selected date */
- background-color:#b9cbf1 !important;
- color:black !important;
- border:#4b5aaa solid 1px !important;
-}
-
-
-.soria .dijitCalendarYearContainer {
- /* footer of the table that contains the year display/selector */
- background:white url("images/titleBar.png") repeat-x top;
-}
-
-.soria .dijitCalendarYearLabel {
- /* container for all of 3 year labels */
- margin:0;
- padding:0.4em 0 0.25em 0;
- text-align:center;
-}
-
-.soria .dijitCalendarSelectedYear {
- /* label for selected year */
- color:black;
- padding:0.2em;
- padding-bottom:0.1em;
- background-color:#b9cbf1 !important;
- border:#4b5aaa solid 1px !important;
-}
-
-.soria .dijitCalendarNextYear,
-.soria .dijitCalendarPreviousYear {
- /* label for next/prev years */
- color:black !important;
- font-weight:normal;
-}
\ No newline at end of file
diff --git a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/themes/soria/Calendar_rtl.css b/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/themes/soria/Calendar_rtl.css
deleted file mode 100644
index 70efe52..0000000
--- a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/themes/soria/Calendar_rtl.css
+++ /dev/null
@@ -1,9 +0,0 @@
-/* Calendar */
-
-.dijitRtl .soria .dijitCalendarDecrease {
- background-position: -30px top;
-}
-
-.dijitRtl .soria .dijitCalendarIncrease {
- background-position: 0px top;
-}
diff --git a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/themes/soria/ColorPalette.css b/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/themes/soria/ColorPalette.css
deleted file mode 100644
index ed922ac..0000000
--- a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/themes/soria/ColorPalette.css
+++ /dev/null
@@ -1,5 +0,0 @@
-.dijitColorPalette {
- border:1px solid #cbcbcb;
- background:#fff;
- -moz-border-radius: 0px !important;
-}
\ No newline at end of file
diff --git a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/themes/soria/Common.css b/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/themes/soria/Common.css
deleted file mode 100644
index d5a7c9d..0000000
--- a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/themes/soria/Common.css
+++ /dev/null
@@ -1,23 +0,0 @@
-/* DnD avatar-specific settings */
-/* For now it uses a default set of rules. Some other DnD classes can be modified as well. */
-.soria .dojoDndItemBefore {
- border-top: 2px solid #369;
-}
-
-.soria .dojoDndItemAfter {
- border-bottom: 2px solid #369;
-}
-
-.soria .dojoDndItemOver {
- cursor:pointer;
-}
-
-.soria table.dojoDndAvatar { -moz-border-radius: 0; border: 1px solid #ccc; border-collapse: collapse; background-color: #fff; font-size: 75%; color: black;}
-.soria .dojoDndAvatar td { border: none; }
-.soria .dojoDndAvatar tr { border: none; }
-.soria .dojoDndAvatarHeader td { height: 20px; padding: 0 0 0 21px; }
-.soria .dojoDndAvatarItem td { padding: 2px;}
-.soria.dojoDndMove .dojoDndAvatarHeader {background-color: #f58383; background-image: url(images/dndNoMove.png); background-repeat: no-repeat; background-position: 2px center;}
-.soria.dojoDndCopy .dojoDndAvatarHeader {background-color: #f58383; background-image: url(images/dndNoCopy.png); background-repeat: no-repeat; background-position: 2px center;}
-.soria.dojoDndMove .dojoDndAvatarCanDrop .dojoDndAvatarHeader {background-color: #97e68d; background-image: url(images/dndMove.png); background-repeat: no-repeat; background-position: 2px center;}
-.soria.dojoDndCopy .dojoDndAvatarCanDrop .dojoDndAvatarHeader {background-color: #97e68d; background-image: url(images/dndCopy.png); background-repeat: no-repeat; background-position: 2px center;}
diff --git a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/themes/soria/Dialog.css b/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/themes/soria/Dialog.css
deleted file mode 100644
index ec3d1b1..0000000
--- a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/themes/soria/Dialog.css
+++ /dev/null
@@ -1,163 +0,0 @@
-/* Dialog */
-
-.soria .dijitDialog {
- background: #eee;
- border: 1px solid #cbcbcb;
- -webkit-box-shadow: 0px 5px 10px #adadad;
- padding: 0px;
-}
-
-.soria .dijitDialog .dijitDialogTitle {
- /* typography and styling of the dialog title */
- font-weight: bold;
- padding: 0px 4px;
- font-size: 0.9em;
- color: #3243C5F;
-}
-
-.soria .dijitDialog .dijitDialogPaneContent {
- background: #ffffff;
- border:none;
- border-top: 1px solid #b1badf; /* w/out this, an <h1> on the top line causes a gap between the .content and .label */
- padding:10px;
-
-}
-
-.soria .dijitDialogTitleBar {
- /* outer container for the titlebar of the dialog */
- background: #fafafa url("images/titleBar.png") repeat-x top left;
- padding: 5px 6px 3px 6px;
- cursor: move;
- outline:0; /* remove this line if keyboard focus on dialog startup is an issue. tab still takes you to first focusable element */
-}
-
-.soria .dijitDialogCloseIcon {
- /* the default close icon for the dialog */
- background-image: url("images/spriteRoundedIconsSmallBl.png");
- background-repeat: no-repeat;
- background-position: -60px 0px;
- position: absolute;
- vertical-align: middle;
- right: 6px;
- top: 4px;
- height: 15px;
- width: 15px;
- cursor: pointer;
-}
-.dj_ie6 .soria .dijitDialogCloseIcon {
- background-image: url("images/spriteRoundedIconsSmallBl.gif");
-}
-.soria .dijitDialogCloseIcon-hover {
- background-position: -60px -15px;
-}
-
-/* Tooltip and TooltipDialog */
-
-.soria .dijitTooltip,
-.soria .dijitTooltipDialog {
- /* the outermost dom node, holding the connector and container */
- background: transparent; /* make the area on the sides of the arrow transparent */
-}
-
-.dijitTooltipBelow {
- /* leave room for arrow above content */
- padding-top: 10px;
-}
-
-.dijitTooltipAbove {
- /* leave room for arrow below content */
- padding-bottom: 10px;
-}
-
-.soria .dijitTooltipContainer {
- /*
- The part with the text.
-
- NOTE:
- FF doesn't clip images used as CSS bgs if you specify a border
- radius. If you use a solid color, it does. Webkit gets it right.
- Sigh.
- background: #ffffff url("images/popupMenuBg.gif") repeat-x bottom left;
- */
- background-color: #fff;
- border:1px solid #cbcbcb;
- padding:0.45em;
-}
-
-.soria .dijitTooltipConnector {
- /* the arrow piece */
- border:0px;
- z-index: 2;
-}
-
-.soria .dijitTooltipABRight .dijitTooltipConnector {
- /* above or below tooltip, but the arrow appears on the right,
- and the right edges of target and tooltip are aligned rather than the left */
- left: auto !important;
- right: 6px;
-}
-
-.soria .dijitTooltipBelow .dijitTooltipConnector {
- /* the arrow piece for tooltips below an element */
- top: 0px;
- left: 6px;
- background:url("images/tooltipConnectorUp.png") no-repeat top left;
- width:17px;
- height:11px;
-}
-
-.dj_ie .soria .dijitTooltipBelow .dijitTooltipConnector {
- background-image: url("images/tooltipConnectorUp.gif");
-}
-
-.soria .dijitTooltipAbove .dijitTooltipConnector {
- /* the arrow piece for tooltips above an element */
- bottom: 0px;
- left: 6px;
- background:url("images/tooltipConnectorDown.png") no-repeat top left;
- width:17px;
- height:11px;
-}
-.dj_ie .soria .dijitTooltipAbove .dijitTooltipConnector {
- background-image: url("images/tooltipConnectorDown.gif");
-}
-.dj_ie .soria .dijitTooltipAbove .dijitTooltipConnector {
- background-image: url("images/tooltipConnectorDown.gif");
-}
-.dj_ie6 .soria .dijitTooltipAbove .dijitTooltipConnector {
- bottom: -5px;
-}
-
-.soria .dijitTooltipLeft {
- padding-right: 10px;
-}
-.dj_ie6 .soria .dijitTooltipLeft {
- padding-left: 11px;
-}
-.soria .dijitTooltipLeft .dijitTooltipConnector {
- /* the arrow piece for tooltips to the left of an element, bottom borders aligned */
- right: 0px;
- bottom: 3px;
- background:url("images/tooltipConnectorRight.png") no-repeat top left;
- width:11px;
- height:17px;
-}
-.dj_ie .soria .dijitTooltipLeft .dijitTooltipConnector {
- background-image: url("images/tooltipConnectorRight.gif");
-}
-
-.soria .dijitTooltipRight {
- padding-left: 10px;
-}
-.soria .dijitTooltipRight .dijitTooltipConnector {
- /* the arrow piece for tooltips to the right of an element, bottom borders aligned */
- left: 0px;
- bottom: 3px;
- background:url("images/tooltipConnectorLeft.png") no-repeat top left;
- width:11px;
- height:17px;
-}
-.dj_ie .soria .dijitTooltipRight .dijitTooltipConnector {
- background-image: url("images/tooltipConnectorLeft.gif");
-}
-
diff --git a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/themes/soria/Dialog_rtl.css b/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/themes/soria/Dialog_rtl.css
deleted file mode 100644
index 838700a..0000000
--- a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/themes/soria/Dialog_rtl.css
+++ /dev/null
@@ -1,5 +0,0 @@
-/* Dialog */
-.dijitRtl .soria .dijitDialogTitleBar .dijitDialogCloseIcon {
- right: auto;
- left: 5px;
-}
diff --git a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/themes/soria/Editor.css b/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/themes/soria/Editor.css
deleted file mode 100644
index 73123b6..0000000
--- a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/themes/soria/Editor.css
+++ /dev/null
@@ -1,71 +0,0 @@
-.dijitIEFixedToolbar {
- position:absolute;
- /* top:0; */
- top: expression(eval((document.documentElement||document.body).scrollTop));
-}
-
-.soria .dijitToolbar .dijitToolbarSeparator {
- background: url('images/editor.gif');
-}
-
-/**** ICONS *****/
-
-.soria .dijitEditorIcon {
- background-image: url('images/editor.gif'); /* editor icons sprite image */
- background-repeat: no-repeat;
- width: 18px;
- height: 18px;
- text-align: center;
-}
-.soria .dijitDisabled .dijitEditorIcon {
- background-image: url('images/editorDisabled.gif'); /* editor icons sprite image */
-}
-
-.soria .dijitEditorIconSep { background-position: 0px; }
-.soria .dijitEditorIconBackColor { background-position: -18px; }
-.soria .dijitEditorIconBold { background-position: -36px; }
-.soria .dijitEditorIconCancel { background-position: -54px; }
-.soria .dijitEditorIconCopy { background-position: -72px; }
-.soria .dijitEditorIconCreateLink { background-position: -90px; }
-.soria .dijitEditorIconCut { background-position: -108px; }
-.soria .dijitEditorIconDelete { background-position: -126px; }
-.soria .dijitEditorIconForeColor { background-position: -144px; }
-.soria .dijitEditorIconHiliteColor { background-position: -162px; }
-.soria .dijitEditorIconIndent { background-position: -180px; }
-.soria .dijitEditorIconInsertHorizontalRule { background-position: -198px; }
-.soria .dijitEditorIconInsertImage { background-position: -216px; }
-.soria .dijitEditorIconInsertOrderedList { background-position: -234px; }
-.soria .dijitEditorIconInsertTable { background-position: -252px; }
-.soria .dijitEditorIconInsertUnorderedList { background-position: -270px; }
-.soria .dijitEditorIconItalic { background-position: -288px; }
-.soria .dijitEditorIconJustifyCenter { background-position: -306px; }
-.soria .dijitEditorIconJustifyFull { background-position: -324px; }
-.soria .dijitEditorIconJustifyLeft { background-position: -342px; }
-.soria .dijitEditorIconJustifyRight { background-position: -360px; }
-.soria .dijitEditorIconLeftToRight { background-position: -378px; }
-.soria .dijitEditorIconListBulletIndent { background-position: -396px; }
-.soria .dijitEditorIconListBulletOutdent { background-position: -414px; }
-.soria .dijitEditorIconListNumIndent { background-position: -432px; }
-.soria .dijitEditorIconListNumOutdent { background-position: -450px; }
-.soria .dijitEditorIconOutdent { background-position: -468px; }
-.soria .dijitEditorIconPaste { background-position: -486px; }
-.soria .dijitEditorIconRedo { background-position: -504px; }
-.soria .dijitEditorIconRemoveFormat { background-position: -522px; }
-.soria .dijitEditorIconRightToLeft { background-position: -540px; }
-.soria .dijitEditorIconSave { background-position: -558px; }
-.soria .dijitEditorIconSpace { background-position: -576px; }
-.soria .dijitEditorIconStrikethrough { background-position: -594px; }
-.soria .dijitEditorIconSubscript { background-position: -612px; }
-.soria .dijitEditorIconSuperscript { background-position: -630px; }
-.soria .dijitEditorIconUnderline { background-position: -648px; }
-.soria .dijitEditorIconUndo { background-position: -666px; }
-.soria .dijitEditorIconWikiword { background-position: -684px; }
-.soria .dijitEditorIconToggleDir { background-position: -540px; /* padding: 0; margin: 0; color:#555555;
- font-family:verdana,arial,sans-serif; font-weight: 800; font-size: 70%; */}
-.soria .dijitEditorIconTabIndent { background-position: -702px; }
-.soria .dijitEditorIconSelectAll { background-position: -720px; }
-.soria .dijitEditorIconUnlink { background-position: -738px; }
-.soria .dijitEditorIconFullScreen { background-position: -756px; }
-.soria .dijitEditorIconViewSource { background-position: -774px; }
-.soria .dijitEditorIconPrint { background-position: -792px; }
-.soria .dijitEditorIconNewPage { background-position: -810px; }
\ No newline at end of file
diff --git a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/themes/soria/Editor_rtl.css b/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/themes/soria/Editor_rtl.css
deleted file mode 100644
index 985fef9..0000000
--- a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/themes/soria/Editor_rtl.css
+++ /dev/null
@@ -1,12 +0,0 @@
-/* Editor */
-.dijitRtl .soria .dijitEditorIcon {
- background-image: url('images/editor_rtl.gif'); /* editor icons sprite image */
-}
-.dijitRtl .soria .dijitDisabled .dijitEditorIcon {
- background-image: url('images/editorDisabled_rtl.gif'); /* editor icons sprite image */
-}
-
-/* Toolbar */
-.dijitRtl .soria .dijitToolbar .dijitToolbarSeparator {
- background-image: url('images/editor_rtl.gif');
-}
diff --git a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/themes/soria/Menu.css b/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/themes/soria/Menu.css
deleted file mode 100644
index 6a93f5f..0000000
--- a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/themes/soria/Menu.css
+++ /dev/null
@@ -1,77 +0,0 @@
-
-/* Menu */
-.soria .dijitMenu,
-.soria .dijitMenuBar {
- border: 1px solid #cbcbcb;
- margin: 0px;
- padding: 0px;
- background-color: #fff;
-}
-
-.soria .dijitBorderContainer .dijitMenuBar {
- border:1px solid #B1BADF;
-}
-
-.soria .dijitMenuItem {
- font-family: sans-serif;
- margin: 0px;
- color: #243C5F;
-}
-.soria .dijitMenuBar .dijitMenuItem {
- padding: 4px 5px;
-}
-
-.soria .dijitMenuPreviousButton, .soria .dijitMenuNextButton {
- font-style: italic;
-}
-.soria .dijitMenuItem TD {
- padding:1px;
-}
-
-.soria .dijitMenuPassive .dijitMenuItemHover,
-.soria .dijitMenuItemSelected {
- background-color: #d9e6f9; /* #95a0b0; #555555; #aaaaaa; #646464; #60a1ea; #848484; */
- color: #243C5F;
-}
-
-.soria .dijitMenuItemIcon {
- width: 15px;
- height: 15px;
-}
-
-.soria .dijitMenuExpand {
- width:15px;
- height:15px;
- background-image: url('images/spriteRoundedIconsSmall.png');
- background-position: -30px top;
-}
-.dj_ie6 .soria .dijitMenuExpand {
- background-image: url('images/spriteRoundedIconsSmall.gif');
-}
-
-.soria .dijitMenuSeparator {
- height: 1px;
-}
-
-/* separator can be two pixels -- set border of either one to 0px to have only one */
-.soria .dijitMenuSeparatorTop {
- border-bottom: 1px solid #fff; /*97adcb; */
-}
-
-.soria .dijitMenuSeparatorBottom {
- border-top: 1px solid #8ba0bd;
-}
-
-/* the checked menu item */
-.soria .dijitCheckedMenuItemIconChar {
- display: none;
-}
-
-.soria .dijitCheckedMenuItemIcon {
- background-image: url('images/spriteCheckbox.gif');
- background-position: -80px;
-}
-
-.soria .dijitCheckedMenuItemChecked .dijitCheckedMenuItemIcon {
- background-position: -64px;
-}
\ No newline at end of file
diff --git a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/themes/soria/Menu_rtl.css b/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/themes/soria/Menu_rtl.css
deleted file mode 100644
index fd521af..0000000
--- a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/themes/soria/Menu_rtl.css
+++ /dev/null
@@ -1,10 +0,0 @@
-/* Menu */
-
-.dijitRtl .soria .dijitMenuItem .dijitMenuItemIcon {
- padding-left: 3px;
- padding-right: 0px;
-}
-
-.dijitRtl .soria .dijitMenuItem .dijitMenuExpand {
- background-position: left top;
-}
diff --git a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/themes/soria/ProgressBar.css b/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/themes/soria/ProgressBar.css
deleted file mode 100644
index 7919cf3..0000000
--- a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/themes/soria/ProgressBar.css
+++ /dev/null
@@ -1,33 +0,0 @@
-
-/****
- dijit.ProgressBar
- ****/
-
-.soria .dijitProgressBar {
- margin:2px 0px 2px 0px;
-}
-
-.soria .dijitProgressBarEmpty{
- /* outer container and background of the bar that's not finished yet*/
- background:#fff url("images/progressBarEmpty.png") repeat-x center center;
- border-color: #8ba0bd;
-}
-
-.soria .dijitProgressBarTile{
- /* inner container for finished portion when in 'tile' (image) mode */
- background:#f0f0f0 url("images/progressBarFull.png") repeat-x center center;
-}
-
-.soria .dijitProgressBarFull {
- border-right:1px solid #8ba0bd;
-}
-
-.soria .dijitProgressBarLabel {
- /* Set to a color that contrasts with both the "Empty" and "Full" parts. */
- color:#293a4b;
-}
-
-.soria .dijitProgressBarIndeterminate .dijitProgressBarTile {
- /* use an animated gif for the progress bar in 'indeterminate' mode */
- background:#cad2de url("images/progressBarAnim.gif") repeat-x center center;
-}
\ No newline at end of file
diff --git a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/themes/soria/TimePicker.css b/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/themes/soria/TimePicker.css
deleted file mode 100644
index 5f985e9..0000000
--- a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/themes/soria/TimePicker.css
+++ /dev/null
@@ -1,61 +0,0 @@
-/* Time Picker */
-.soria .dijitTimePickerTick,
-.soria .dijitTimePickerMarker {
- border-color: #b1badf;
-}
-
-.soria .dijitTimePickerTick {
- color:white;
-}
-
-.soria .dijitTimePickerMarker {
- background:#bed7f0 url("images/titleBar.png") repeat-x top;
- color:#293a4b;
- font-weight: bold;
-}
-
-.soria .dijitTimePickerItemSelected {
- color: black;
- background: #b9cbf1 none;
-}
-
-.soria .dijitTimePickerItemHover {
- background: #60a1ea none;
- color:white;
-}
-
-.soria .dijitTimePickerItemHover,
-.soria .dijitTimePickerItemSelected {
- position: relative;
- z-index: 10;
-}
-
-.soria .dijitTimePickerTick .dijitTimePickerItemInner {
- font-size:0.4em;
-}
-
-.soria .dijitTimePickerItemHover .dijitTimePickerItemInner,
-.soria .dijitTimePickerItemSelected .dijitTimePickerItemInner {
- font-size:1em;
-}
-
-.soria .dijitTimePickerMarkerHover {
- border-top: 1px solid #94b9ef;
-}
-
-.soria .dijitTimePickerTickHover,
-.soria .dijitTimePickerTickSelected {
- margin-top:-0.3em;
- margin-bottom:-0.3em;
- border-bottom: none;
-}
-
-.dijit_a11y .dijitTimePickerTickHover {
- background-color: #CCC !important;
- border-top: 1px solid #333 !important;
- border-bottom: 1px solid #333 !important;
-}
-
-.dijit_a11y .dijitTimePickerMarkerHover {
- border-bottom-width: 2px;
-}
diff --git a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/themes/soria/TitlePane.css b/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/themes/soria/TitlePane.css
deleted file mode 100644
index 0144b8d..0000000
--- a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/themes/soria/TitlePane.css
+++ /dev/null
@@ -1,84 +0,0 @@
-/**
- * dijit.TitlePane
- *
- */
-
-.soria .dijitTitlePaneTitle {
- background: #cccccc;
- background:#fff url("images/titleBar.png") repeat-x top left;
- border:1px solid #bfbfbf;
- padding:3px 4px;
- font-size: 0.9em;
- font-weight: bold;
- color: #6d6d6d;
-}
-.soria .dijitTitlePaneTitle-hover {
- background: #f9f9f9 url("images/accordionItemActive.png") top repeat-x;
- cursor: pointer;
-}
-
-.soria .dijitTitlePaneTitle * {
- vertical-align: middle;
-}
-
-.soria .dijitTitlePane .dijitOpen .dijitArrowNode,
-.soria .dijitTitlePane .dijitClosed .dijitArrowNode {
- width:15px;
- height:15px;
-}
-
-.soria .dijitTitlePaneFocused .dijitTitlePaneTextNode {
- color: #243C5F;
-}
-
-
-.soria .dijitOpen .dijitTitlePaneTextNode,
-.soria .dijitFixedOpen .dijitTitlePaneTextNode {
- color: #243C5F;
-}
-
-.soria .dijitTitlePane .dijitClosed .dijitArrowNode {
- background: url('images/spriteRoundedIconsSmall.png') no-repeat -30px top;
-}
-.dj_ie6 .soria .dijitTitlePane .dijitClosed .dijitArrowNode {
- background:url('images/spriteRoundedIconsSmall.gif') no-repeat -30px top;
-}
-.soria .dijitTitlePane .dijitOpen .dijitArrowNode {
- background:url('images/spriteRoundedIconsSmall.png') no-repeat -15px top;
-}
-.dj_ie6 .soria .dijitTitlePane .dijitOpen .dijitArrowNode {
- background:url('images/spriteRoundedIconsSmall.gif') no-repeat -15px top;
-}
-.soria .dijitTitlePane .dijitArrowNodeInner {
- display:none;
-}
-
-.dijit_a11y .dijitTitlePane .dijitOpen .dijitArrowNodeInner,
-.dijit_a11y .dijitTitlePane .dijitClosed .dijitArrowNodeInner {
- display:inline !important;
- font-family:monospace;
- padding-bottom:.2em;
-}
-
-.dijit_a11y .dijitTitlePane .dijitArrowNode {
- display:none;
-}
-
-.soria .dijitTitlePaneContentOuter {
- background: #ffffff;
- border:1px solid #bfbfbf;
- border-top: 0px solid #3d3d3d; /* w/out this, an <h1> on the top line causes a gap between the .content and .label */
-}
-.soria .dijitTitlePaneContentInner {
- padding:10px;
-}
-/* force hasLayout to ensure borders etc, show up */
-.dj_ie6 .soria .dijitTitlePaneContentOuter,
-.dj_ie6 .soria .dijitTitlePane .dijitTitlePaneTitle {
- zoom: 1;
-}
-
-.soria .dijitTitlePaneTextNode {
- margin-left: 4px;
- margin-right: 4px;
-}
\ No newline at end of file
diff --git a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/themes/soria/TitlePane_rtl.css b/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/themes/soria/TitlePane_rtl.css
deleted file mode 100644
index 82174fa..0000000
--- a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/themes/soria/TitlePane_rtl.css
+++ /dev/null
@@ -1,6 +0,0 @@
-.dijitRtl .soria .dijitTitlePane .dijitClosed .dijitArrowNode {
- background-position: 0px top;
-}
-.dj_ie6-rtl .soria .dijitTitlePane .dijitClosed .dijitArrowNode {
- background-position: 0px top;
-}
\ No newline at end of file
diff --git a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/themes/soria/Toolbar.css b/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/themes/soria/Toolbar.css
deleted file mode 100644
index b1d5a39..0000000
--- a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/themes/soria/Toolbar.css
+++ /dev/null
@@ -1,65 +0,0 @@
-.soria .dijitToolbar {
- border-bottom: 1px solid #ccc;
- background:#eaeaea url("images/titleBar.png") repeat-x top left;
-}
-
-/* setting a min-height on ditor toolbar */
-.dj_ie6 .soria .dijitToolbar {
- height: 10px;
-}
-
-.soria .dijitToolbar .dijitButtonNode,
-.soria .dijitToolbar .dijitComboButton .dijitButtonContents,
-.soria .dijitToolbar .dijitComboButton .dijitDownArrowButton {
- background: none;
- margin: 0px;
- padding: 0px;
- border: none;
- font-size: 12px;
-}
-
-.soria .dijitToolbar .dijitButton,
-.soria .dijitToolbar .dijitToggleButton,
-.soria .dijitToolbar .dijitDropDownButton,
-.soria .dijitToolbar .dijitComboButton .dijitButtonContents,
-.soria .dijitToolbar .dijitComboButton .dijitDownArrowButton {
- background: none;
- padding: 1px; /* on hover etc., margin replaced w/border */
-}
-
-.soria .dijitToolbar .dijitButtonChecked,
-.soria .dijitToolbar .dijitToggleButtonChecked {
- background-color:#d8e5f8;
- border:1px solid #316ac5;
- padding: 0px;
-}
-
-.soria .dijitToolbar .dijitButtonCheckedHover,
-.soria .dijitToolbar .dijitToggleButtonCheckedHover
- {
- background-color:#9abbea;
- border:1px solid #316ac5;
- padding: 0px;
-}
-
-.soria .dijitToolbar .dijitButtonHover,
-.soria .dijitToolbar .dijitToggleButtonHover,
-.soria .dijitToolbar .dijitDropDownButtonHover,
-.soria .dijitToolbar .dijitComboButtonHover .dijitButtonContents,
-.soria .dijitToolbar .dijitComboButtonDownArrowHover .dijitDownArrowButton {
- /* TODO: change this from Hover to Selected so that button is still highlighted while drop down is being used */
- border: 1px solid #316ac5;
- padding: 0px;
- background-color:#9abbea;
-}
-
-.soria .dijitToolbar label {
- padding: 3px 3px 0 6px;
-}
-
-.dj_ie .soria .dijitToolbar .dijitComboButton .dijitButtonContentsFocused,
-.dj_ie .soria .dijitToolbar .dijitComboButton .dijitDownArrowButtonFocused {
- /* focus border doesn't appear on <td> for IE, so need to add it manually */
- border: 1px #777 dotted !important;
- padding: 0px;
-}
diff --git a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/themes/soria/Tree.css b/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/themes/soria/Tree.css
deleted file mode 100644
index a66fdc1..0000000
--- a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/themes/soria/Tree.css
+++ /dev/null
@@ -1,122 +0,0 @@
-/* Tree */
-
-.soria .dijitTreeNode {
- background : url('images/treeI.gif') no-repeat;
- background-position : top left;
- background-repeat : repeat-y;
- zoom: 1; /* MOW: what the heck is this doing in here? */
-}
-
-.soria .dijitTreeNodeHover {
- /* using a transparent png so that we can still see grid lines, which are (unfortunately) behind the dijitRowNode that we are hovering over */
- background-image: url(images/treeHover.png);
- background-repeat: repeat;
- background-color: none !important;
-}
-
-
-/* left vertical line (grid) for all nodes */
-.soria .dijitTreeIsLast {
- background: url('images/treeI_half.gif') no-repeat;
-}
-
-.soria .dijitTreeLabel {
- font-weight: normal;
- margin-left: 3px;
-}
-
-.soria .dijitTreeIsRoot {
- margin-left: 0;
- background-image: none;
-}
-
-.soria .dijitTreeExpando {
- width: 18px;
- height: 18px;
-}
-
-.soria .dijitTreeRow {
- /* so insert line shows up on IE when dropping after a target element */
- padding-bottom: 2px;
-}
-
-.soria .dijitTreeContent {
- min-height: 18px;
- min-width: 18px;
- padding-left:1px;
-}
-
-
-.soria .dijitTreeExpand {
- width: 18px;
- height: 18px;
- background-repeat : no-repeat;
-}
-
-/* same style as IE selection */
-.soria .dijitTreeNodeEmphasized {
- background-color: Highlight;
- color: HighlightText;
-}
-
-/* don't use :focus due to opera and IE's lack of support on div's */
-.soria .dijitTreeLabelFocused {
- outline: 1px invert dotted;
-}
-.soria .dijitTreeNodeSelected .dijitTreeLabel{
- background:#b8cbec;
-}
-
-.soria .dijitTreeExpandoOpened {
- background: url('images/spriteTree.gif') no-repeat -18px top;
-}
-
-.soria .dijitTreeExpandoClosed {
- background-image: url('images/spriteTree.gif');
-}
-
-.soria .dijitTreeExpandoLeaf {
- background: url('images/spriteTree.gif') no-repeat -36px top;
-}
-
-.soria .dijitTreeExpandoLoading {
- background-image: url('images/treeExpand_loading.gif');
-}
-
-.soria .dijitTreeIcon {
- width: 16px;
- height: 16px;
-}
-
-.soria .dijitFolderOpened {
- background: url('images/spriteDivIcons.gif') no-repeat -16px top;
-}
-
-.soria .dijitFolderClosed {
- background: url('images/spriteDivIcons.gif') no-repeat top left;
-}
-
-.soria .dijitLeaf {
- background: url('images/spriteDivIcons.gif') no-repeat -32px top;
-}
-
-/* Drag and Drop on TreeNodes
- * Put insert line on dijitTreeContent node so it's aligned w/
- * (ie, indented equally with) target element, even
- * though dijitTreeRowNode is the actual "drag object"
- */
-.soria .dijitTreeNode .dojoDndItemBefore,
-.soria .dijitTreeNode .dojoDndItemAfter {
- border-bottom: none;
- border-top: none;
-}
-
-.soria .dijitTreeNode .dojoDndItemBefore .dijitTreeContent {
- /* copied from Common.css */
- border-top: 2px solid #369;
-}
-
-.soria .dijitTreeNode .dojoDndItemAfter .dijitTreeContent {
- /* copied from Common.css */
- border-bottom: 2px solid #369;
-}
diff --git a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/themes/soria/Tree_rtl.css b/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/themes/soria/Tree_rtl.css
deleted file mode 100644
index ff83272..0000000
--- a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/themes/soria/Tree_rtl.css
+++ /dev/null
@@ -1,23 +0,0 @@
-
-
-/* Tree */
-.dijitRtl .soria .dijitTreeContainer .dijitTreeNode {
- background-image : none;
-}
-
-.dijitRtl .soria .dijitTreeContainer .dijitTreeContent {
- padding-left: auto;
- padding-right: 1px;
-}
-
-.dijitRtl .soria .dijitTreeContainer .dijitTreeExpandoOpened {
- background: url('images/spriteTree_rtl.gif') no-repeat -18px top;
-}
-
-.dijitRtl .soria .dijitTreeContainer .dijitTreeExpandoClosed {
- background-image: url('images/spriteTree_rtl.gif');
-}
-
-.dijitRtl .soria .dijitTreeContainer .dijitTreeExpandoLeaf {
- background: none;
-}
\ No newline at end of file
diff --git a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/themes/soria/form/Button.css b/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/themes/soria/form/Button.css
deleted file mode 100644
index 1e25f90..0000000
--- a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/themes/soria/form/Button.css
+++ /dev/null
@@ -1,113 +0,0 @@
-
-/*****
- dijit.form.Button
- dijit.form.DropDownButton
- dijit.form.ComboButton
- dijit.form.ComboBox (partial)
- *****/
-
-.soria .dijitButtonNode {
- /* enabled state - inner */
- /* border:1px outset #a0a0a0; */
- border: 1px solid #8ba0bd;
- border-bottom:1px solid #657c9c;
- padding: 0.1em 0.2em 0.2em 0.2em;
- background: #bcd5f0 url("../images/buttonEnabled.png") repeat-x top left;
-}
-.soria .dijitSelect .dijitButtonContents {
- border-right: none;
-}
-
-.soria .dijitButtonNode button {
- border: 0px;
- background-color: transparent;
-}
-
-.soria .dijitButtonText {
- text-align: center;
- padding: 0 0.3em;
-}
-
-.soria .dijitComboBox .dijitButtonNode {
- border-width: 0px 0px 0px 1px;
-}
-
-.soria .dijitArrowButton {
- color: #111;
-}
-
-.soria .dijitComboButton .dijitDownArrowButton {
- padding-right:4px;
-}
-
-.soria .dijitComboBoxReadOnly,
-.soria .dijitSpinnerReadOnly,
-.soria .dijitSpinnerReadOnly .dijitButtonNode,
-.soria .dijitButtonDisabled .dijitButtonNode,
-.soria .dijitToggleButtonDisabled .dijitButtonNode,
-.soria .dijitDropDownButtonDisabled .dijitButtonNode,
-.soria .dijitComboButtonDisabled .dijitButtonNode,
-.soria .dijitComboBoxDisabled,
-.soria .dijitSpinnerDisabled,
-.soria .dijitSpinnerDisabled .dijitButtonNode {
- /* disabled state - inner */
- border-color: #b9bbdd #b9bbdd #b9bbdd #b9bbdd;
- background:#c3d3e5 url("../images/buttonDisabled.png") top repeat-x;
- opacity: 0.60;
-}
-.dj_ie6 .soria .dijitComboButtonDisabled .dijitButtonText {
- /* opacity doesn't work on table node in IE, work around here */
- color: #aaa;
-}
-.soria .dijitButtonHover .dijitButtonNode,
-.soria .dijitButtonNodeHover,
-.soria .dijitToggleButtonHover .dijitButtonNode,
-.soria .dijitDropDownButtonHover .dijitButtonNode,
-.soria .dijitComboButtonHover .dijitButtonContents,
-.soria .dijitComboButtonDownArrowHover .dijitDownArrowButton,
-.soria .dijitComboBoxHover .dijitDownArrowButton,
-.soria .dijitSpinnerUpArrowHover .dijitUpArrowButton,
-.soria .dijitSpinnerDownArrowHover .dijitDownArrowButton {
- /* hover state - inner */
- /* TODO: change from Hover to Selected so that button is still highlighted while drop down is being used */
- color:#243C5F;
- background:#acc5e2 url("../images/buttonHover.png") repeat-x top left;
-}
-
-.soria .dijitButtonActive .dijitButtonNode,
-.soria .dijitToggleButtonActive .dijitButtonNode,
-.soria .dijitDropDownButtonActive .dijitButtonNode,
-.soria .dijitComboButtonActive .dijitButtonContents,
-.soria .dijitStackController .dijitToggleButtonChecked .dijitButtonNode {
- /* active state - inner (for when you are pressing a normal button, or
- * when a radio-type button is in a depressed state
- */
- border-color:#657c9c;
- background: #91b4e5 url("../images/buttonActive.png") top left repeat-x;
-}
-.soria .dijitSpinnerUpArrowActive .dijitUpArrowButton,
-.soria .dijitSpinnerDownArrowActive .dijitDownArrowButton,
-.soria .dijitComboBoxActive .dijitDownArrowButton {
- /* same as above except don't adjust border color (it's controlled by the containing Spinner/ComboBox) */
- background: #91b4e5 url("../images/buttonActive.png") top left repeat-x;
-}
-
-
-.soria .dijitArrowButtonInner {
- background-image: url("../images/spriteArrows.png");
- background-repeat: no-repeat;
- background-position: 0px top;
- width: 11px;
-}
-.soria .dijitLeftArrowButton .dijitArrowButtonInner {
- background-position: -11px top;
-}
-.soria .dijitUpArrowButton .dijitArrowButtonInner {
- background-position: -22px top;
-}
-.soria .dijitRightArrowButton .dijitArrowButtonInner {
- background-position: -33px top;
-}
-.dj_ie6 .soria .dijitArrowButtonInner {
- background-image: url("../images/spriteArrows.gif");
-}
diff --git a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/themes/soria/form/Button_rtl.css b/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/themes/soria/form/Button_rtl.css
deleted file mode 100644
index 50a5c5e..0000000
--- a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/themes/soria/form/Button_rtl.css
+++ /dev/null
@@ -1,7 +0,0 @@
-.dijitRtl .soria .dijitComboBox .dijitButtonNode {
- border-width: 0px 0px 0px 1px;
-}
-.dijitRtl .soria .dijitSelect .dijitButtonContents {
- border-left: none;
- border-right-width: 1px;
-}
diff --git a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/themes/soria/form/Checkbox.css b/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/themes/soria/form/Checkbox.css
deleted file mode 100644
index 7ad1411..0000000
--- a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/themes/soria/form/Checkbox.css
+++ /dev/null
@@ -1,67 +0,0 @@
-
-/*
- * CheckBox and Radio Widgets,
- * and the CSS to embed a checkbox or radio icon inside a ToggleButton.
- *
- * Order of images in the default sprite (from L to R, checkbox and radio in same image):
- * checkbox normal - checked
- * - unchecked
- * disabled - checked
- * - unchecked
- * hover - checked
- * - unchecked
- *
- * radio normal - checked
- * - unchecked
- * disabled - checked
- * - unchecked
- * hover - checked
- * - unchecked
-*/
-
-.soria .dijitToggleButton .dijitCheckBox,
-.soria .dijitToggleButton .dijitCheckBoxIcon {
- background-image: url('../images/spriteCheckbox.gif');
-}
-
-.soria .dijitCheckBox,
-.soria .dijitCheckBoxIcon { /* inside a toggle button */
- background-image: url('../images/spriteCheckbox.gif'); /* checkbox sprite image */
- background-repeat: no-repeat;
- width: 16px;
- height: 16px;
- margin: 0;
- padding: 0;
-}
-
-.soria .dijitCheckBox,
-.soria .dijitToggleButton .dijitCheckBoxIcon {
- /* unchecked */
- background-position: -16px;
-}
-
-.soria .dijitCheckBoxChecked,
-.soria .dijitToggleButtonChecked .dijitCheckBoxIcon {
- /* checked */
- background-position: 0px;
-}
-
-.soria .dijitCheckBoxDisabled {
- /* disabled */
- background-position: -48px;
-}
-
-.soria .dijitCheckBoxCheckedDisabled {
- /* disabled but checked */
- background-position: -32px;
-}
-
-.soria .dijitCheckBoxHover {
- /* hovering over an unchecked enabled checkbox */
- background-position: -80px;
-}
-
-.soria .dijitCheckBoxCheckedHover {
- /* hovering over a checked enabled checkbox */
- background-position: -64px;
-}
\ No newline at end of file
diff --git a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/themes/soria/form/ComboBox.css b/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/themes/soria/form/ComboBox.css
deleted file mode 100644
index a602c90..0000000
--- a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/themes/soria/form/ComboBox.css
+++ /dev/null
@@ -1,12 +0,0 @@
-.soria .dijitComboBox .dijitArrowButton .dijitArrowButtonInner {
- background:url("../images/spriteArrows.png") no-repeat left center;
- width: 11px;
-}
-
-.dj_ie6 .soria .dijitComboBox .dijitArrowButton .dijitArrowButtonInner {
- background:url("../images/spriteArrows.gif") no-repeat left center;
-}
-
-.soria .dijitComboBoxHover .dijitArrowButtonInner {
- /* TODO: url("images/arrowDownHover.png") but in IE6 it flickers some? */
-}
\ No newline at end of file
diff --git a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/themes/soria/form/Common.css b/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/themes/soria/form/Common.css
deleted file mode 100644
index 2f6fddc..0000000
--- a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/themes/soria/form/Common.css
+++ /dev/null
@@ -1,100 +0,0 @@
-
-/****
- dijit.form.TextBox
- dijit.form.ValidationTextBox
- dijit.form.SerializableTextBox
- dijit.form.RangeBoundTextBox
- dijit.form.NumberTextBox
- dijit.form.CurrencyTextBox
- dijit.form.NumberSpinner
- dijit.form.ComboBox (partial)
- ****/
-
-.soria .dijitInputField INPUT,
-.soria .dijitTextBox,
-.soria .dijitComboBox,
-.soria .dijitSpinner {
- margin: 0em 0.1em;
-}
-
-.soria .dijitTextBox,
-.soria .dijitComboBox,
-.soria .dijitSpinner,
-.soria .dijitInlineEditor input,
-.soria .dijitTextArea {
- /* For all except dijit.form.NumberSpinner: the actual input element.
- For TextBox, ComboBox, Spinner: the table that contains the input.
- Otherwise the actual input element.
- */
- background:#fff url("../images/validationInputBg.png") repeat-x top left;
- border:1px solid #8ba0bd;
- line-height: normal;
-}
-
-.dj_ie6 .soria .dijitTextBox,
-.dj_ie6 .soria .dijitComboBox,
-.dj_ie6 .soria .dijitSpinner,
-.dj_ie6 .soria .dijitInlineEditor input,
-.dj_ie6 .soria .dijitTextArea {
- background:#fff url('../images/validationInputBg.gif') repeat-x top left;
-}
-
-.soria .dijitComboBox .dijitButtonNode {
- padding: 0 0.2em;
-}
-.soria .dijitComboBox .dijitButtonNode,
-.soria .dijitSpinner .dijitButtonNode {
- /* line between the input area and the drop down button */
- border-color: #8ba0bd;
- border-left: 1px solid #8ba0bd;
-}
-
-.soria .dijitTextBoxFocused,
-.soria .dijitComboBoxFocused,
-.soria .dijitSpinnerFocused, .soria .dijitSpinnerUpArrowActive, .soria .dijitSpinnerDownArrowActive,
-.soria .dijitTextAreaFocused {
- /* input field when focused (ie: typing affects it) */
- border-color:#406b9b;
-}
-.soria .dijitComboBoxFocused .dijitButtonNode,
-.soria .dijitSpinnerFocused .dijitButtonNode,
-.soria .dijitSpinnerUpArrowActive .dijitButtonNode,
-.soria .dijitSpinnerDownArrowActive .dijitButtonNode {
- border-left-color:#8ba0bd;
-}
-.soria .dijitSpinnerFocused .dijitDownArrowButton,
-.soria .dijitSpinnerUpArrowActive .dijitDownArrowButton,
-.soria .dijitSpinnerDownArrowActive .dijitDownArrowButton {
- border-top-color:#8ba0bd;
-}
-
-.soria .dijitError {
- border-color:#f3d118;
- background-color:#f9f7ba;
- background-image:none;
-}
-.dj_ie6 .soria .dijitError INPUT {
- /* background-color: transparent on an <input> doesn't work on IE6 */
- background-color:#f9f7ba !important;
-}
-
-.soria .dijitErrorFocused {
- background-color:#ff6;
- background-image:none;
-}
-.dj_ie6 .soria .dijitErrorFocused INPUT {
- /* background-color: transparent on an <input> doesn't work on IE6 */
- background-color:#ff6 !important;
-}
-
-/* Validation errors */
-.soria .dijitValidationIcon {
- /* prevent height change when widget goes from valid to invalid state */
- width: 16px;
- background: transparent url('../images/warning.png') no-repeat center center;
-}
-
-/* The highlight is shown in the ComboBox menu. */
-.soria .dijitComboBoxHighlightMatch {
- background-color:#f9f7ba;
-}
\ No newline at end of file
diff --git a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/themes/soria/form/Common_rtl.css b/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/themes/soria/form/Common_rtl.css
deleted file mode 100644
index 6d51812..0000000
--- a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/themes/soria/form/Common_rtl.css
+++ /dev/null
@@ -1,7 +0,0 @@
-.dijitRtl .soria .dijitComboBox .dijitButtonNode,
-.dijitRtl .soria .dijitSpinner .dijitButtonNode {
- /* line between the input area and the drop down button */
- border-color: #8ba0bd;
- border-left: 0px solid #8ba0bd;
- border-right: 1px solid #8ba0bd;
-}
\ No newline at end of file
diff --git a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/themes/soria/form/RadioButton.css b/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/themes/soria/form/RadioButton.css
deleted file mode 100644
index 7b875db..0000000
--- a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/themes/soria/form/RadioButton.css
+++ /dev/null
@@ -1,66 +0,0 @@
-/*
- * CheckBox and Radio Widgets,
- * and the CSS to embed a checkbox or radio icon inside a ToggleButton.
- *
- * Order of images in the default sprite (from L to R, checkbox and radio in same image):
- * checkbox normal - checked
- * - unchecked
- * disabled - checked
- * - unchecked
- * hover - checked
- * - unchecked
- *
- * radio normal - checked
- * - unchecked
- * disabled - checked
- * - unchecked
- * hover - checked
- * - unchecked
-*/
-
-.soria .dijitToggleButton .dijitRadio,
-.soria .dijitToggleButton .dijitRadioIcon {
- background-image: url('../images/spriteRadio.gif');
-}
-
-.soria .dijitRadio,
-.soria .dijitRadioIcon { /* inside a toggle button */
- background-image: url('../images/spriteRadio.gif'); /* checkbox sprite image */
- background-repeat: no-repeat;
- width: 16px;
- height: 16px;
- margin: 0;
- padding: 0;
-}
-
-.soria .dijitRadio,
-.soria .dijitToggleButton .dijitRadioIcon {
- /* unselected */
- background-position: -16px;
-}
-
-.soria .dijitRadioChecked,
-.soria .dijitToggleButtonChecked .dijitRadioIcon {
- /* selected */
- background-position: 0px;
-}
-
-.soria .dijitRadioDisabled {
- /* unselected and disabled */
- background-position: -48px;
-}
-
-.soria .dijitRadioCheckedDisabled {
- /* selected but disabled */
- background-position: -32px;
-}
-
-.soria .dijitRadioHover {
- /* hovering over an unselected enabled radio button */
- background-position: -80px;
-}
-
-.soria .dijitRadioCheckedHover {
- /* hovering over a selected enabled radio button */
- background-position: -64px;
-}
\ No newline at end of file
diff --git a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/themes/soria/form/Select.css b/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/themes/soria/form/Select.css
deleted file mode 100644
index 80c7f98..0000000
--- a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/themes/soria/form/Select.css
+++ /dev/null
@@ -1,61 +0,0 @@
-/* Cursor States */
-.soria .dijitSelectDisabled * {
- cursor: not-allowed !important;
-}
-.soria .dijitSelectReadOnly * {
- cursor: default !important;
-}
-.soria .dijitSelect .dijitButtonNode {
- padding: 0px;
-}
-
-/* Make unselected "look" more like a text box and less like a button */
-.soria .dijitSelect .dijitButtonContents {
- padding-top: 1px;
- background:#fff url("../images/validationInputBg.png") repeat-x top left;
- #background:#fff url('../images/validationInputBg.gif') repeat-x top left;
-}
-.soria .dijitSelectHover .dijitButtonContents,
-.soria .dijitSelectActive .dijitButtonContents,
-.soria .dijitSelectOpened .dijitButtonContents,
-.soria .dijitSelectDisabled .dijitButtonContents,
-.soria .dijitSelectReadOnly .dijitButtonContents{
- background: transparent none;
-}
-.dj_ie .soria .dijitSelect .dijitButtonContents {
- padding-top: 0px;
-}
-
-/* Mirror DropDownButton */
-.soria .dijitSelectDisabled .dijitButtonNode {
- border-color: #b9bbdd #b9bbdd #b9bbdd #b9bbdd;
- background:#c3d3e5 url("../images/buttonDisabled.png") top repeat-x;
-}
-.dj_ie .soria .dijitSelectDisabled .dijitButtonNode * {
- filter: gray() alpha(opacity=50);
-}
-
-.soria .dijitSelectHover .dijitButtonNode {
- color:#000;
- background:#acc5e2 url("../images/buttonHover.png") repeat-x top left;
-}
-
-.soria .dijitSelectActive .dijitButtonNode,
-.soria .dijitSelectOpened .dijitButtonNode {
- border-color:#657c9c;
- background: #91b4e5 url("../images/buttonActive.png") top left repeat-x;
-}
-
-/* Make the menu look more combobox-like */
-.soria .dijitSelectMenu td {
- padding: 0em;
-}
-.soria .dijitSelectMenu .dijitMenuItemIcon {
- margin: 0.1em 0.2em;
- display: none;
-}
-.soria .dijitSelectMenu .dijitMenuItemLabel,
-.soria .dijitSelectMenu .dijitMenuArrowCell {
- padding: 0.1em 0.2em;
-}
-
diff --git a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/themes/soria/form/Slider.css b/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/themes/soria/form/Slider.css
deleted file mode 100644
index 23374fe..0000000
--- a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/themes/soria/form/Slider.css
+++ /dev/null
@@ -1,152 +0,0 @@
-
-/****
- SLIDER
-****/
-
-.soria .dijitSliderProgressBarH {
- border-color: #b1badf;
- background: #c0c2c5 url("../images/sliderFull.png") repeat-x top left;
-}
-
-.soria .dijitSliderProgressBarV {
- border-color: #b1badf;
- background: #c0c2c5 url("../images/sliderFullVertical.png") repeat-y bottom left;
-}
-
-.soria .dijitSliderFocused .dijitSliderProgressBarH,
-.soria .dijitSliderFocused .dijitSliderLeftBumper {
- background-image:url("../images/sliderFullFocus.png");
-}
-
-.soria .dijitSliderFocused .dijitSliderProgressBarV,
-.soria .dijitSliderFocused .dijitSliderBottomBumper {
- background-image:url("../images/sliderFullVerticalFocus.png");
-}
-
-.soria .dijitSliderRemainingBarV {
- border-color: #b4b4b4;
- background: #dcdcdc url("../images/sliderEmptyVertical.png") repeat-y bottom left;
-}
-
-.soria .dijitSliderRemainingBarH {
- border-color: #b4b4b4;
- background: #dcdcdc url("../images/sliderEmpty.png") repeat-x top left;
-}
-
-.soria .dijitSliderBar {
- border-style: solid;
- outline:1px;
- /* border-color: #b4b4b4; */
-}
-.soria .dijitSliderFocused .dijitSliderBar {
- border-color:#8ba0bd;
-}
-
-.dijit_a11y .dijitSliderProgressBar {
- background-color:#333 !important;
-}
-
-.soria .dijitSliderImageHandleH {
- border:0px;
- width:15px;
- height:18px;
- background:url("../images/preciseSliderThumb.png") no-repeat center top;
- cursor:pointer;
-}
-.soria .dijitSliderFocused .dijitSliderImageHandleH {
- background-image:url("../images/preciseSliderThumbFocus.png");
- #background-image:url("../images/preciseSliderThumbFocus.gif");
-}
-
-.dj_ie6 .soria .dijitSliderImageHandleH {
- background-image:url("../images/preciseSliderThumb.gif");
-}
-
-.soria .dijitSliderLeftBumper {
- border-left-width: 1px;
- border-color: #aab0bb;
- background: #c0c2c5 url("../images/sliderFull.png") repeat-x top left;
-}
-
-.soria .dijitSliderRightBumper {
- background: #dcdcdc url("../images/sliderEmpty.png") repeat-x top left;
- border-color: #b4b4b4;
- border-right-width: 1px;
-}
-
-.soria .dijitSliderImageHandleV {
- border:0px;
- width:20px;
- height:15px;
- background:url("../images/sliderThumb.png") no-repeat center center;
- #background:url("../images/sliderThumb.gif") no-repeat center center;
- cursor:pointer;
-}
-
-.soria .dijitSliderFocused .dijitSliderImageHandleV {
- background-image:url("../images/sliderThumbFocus.png");
- #background-image:url("../images/sliderThumbFocus.gif");
-}
-
-.soria .dijitSliderBottomBumper {
- border-bottom-width: 1px;
- border-color: #aab0bb;
- background: #c0c2c5 url("../images/sliderFullVertical.png") repeat-y bottom left;
-}
-
-.soria .dijitSliderTopBumper {
- background: #dcdcdc url("../images/sliderEmptyVertical.png") repeat-y top left;
- border-color: #b4b4b4;
- border-top-width: 1px;
-}
-
-.soria .dijitSliderIncrementIconH,
-.soria .dijitSliderIncrementIconV {
- background:url('../images/spriteRoundedIconsSmall.png') no-repeat -45px top;
- #background:url('../images/spriteRoundedIconsSmall.gif') no-repeat -45px top;
- width:15px; height:15px;
- cursor:pointer;
-}
-.soria .dijitSliderIncrementIconH {
- background:url('../images/spriteRoundedIconsSmall.png') no-repeat -30px top;
- #background:url('../images/spriteRoundedIconsSmall.gif') no-repeat -30px top;
-}
-
-.soria .dijitSliderDecrementIconH,
-.soria .dijitSliderDecrementIconV {
- width:15px;
- height:15px;
- cursor:pointer;
- background:url('../images/spriteRoundedIconsSmall.png') no-repeat -15px top;
- #background:url('../images/spriteRoundedIconsSmall.gif') no-repeat -15px top;
-}
-.soria .dijitSliderDecrementIconH {
- background:url('../images/spriteRoundedIconsSmall.png') no-repeat 0px top;
- #background:url('../images/spriteRoundedIconsSmall.gif') no-repeat 0px top;
-}
-
-.soria .dijitSliderButtonInner {
- visibility:hidden;
-}
-
-.soria .dijitSliderReadOnly *,
-.soria .dijitSliderDisabled * {
- border-color: #d5d5d5 #bdbdbd #bdbdbd #d5d5d5;
- color: #bdbdbd;
-}
-.soria .dijitSliderReadOnly .dijitSliderDecrementIconH,
-.soria .dijitSliderDisabled .dijitSliderDecrementIconH {
- background-position: 0px -15px;
-}
-.soria .dijitSliderReadOnly .dijitSliderIncrementIconH,
-.soria .dijitSliderDisabled .dijitSliderIncrementIconH {
- background-position: -30px -15px;
-}
-.soria .dijitSliderReadOnly .dijitSliderDecrementIconV,
-.soria .dijitSliderDisabled .dijitSliderDecrementIconV {
- background-position: -15px -15px;
-}
-.soria .dijitSliderReadOnly .dijitSliderIncrementIconV,
-.soria .dijitSliderDisabled .dijitSliderIncrementIconV {
- background-position: -45px -15px;
-}
\ No newline at end of file
diff --git a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/themes/soria/form/Slider_rtl.css b/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/themes/soria/form/Slider_rtl.css
deleted file mode 100644
index 2f7a08a..0000000
--- a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/themes/soria/form/Slider_rtl.css
+++ /dev/null
@@ -1,36 +0,0 @@
-
-/* Slider */
-
-.dijitRtl .soria .dijitSliderProgressBarH,
-.dijitRtl .soria .dijitSliderRemainingBarH,
-.dijitRtl .soria .dijitSliderLeftBumper,
-.dijitRtl .soria .dijitSliderRightBumper,
-.dijitRtl .soria .dijitSliderTopBumper {
- background-position: top right;
-}
-
-.dijitRtl .soria .dijitSliderProgressBarV,
-.dijitRtl .soria .dijitSliderRemainingBarV,
-.dijitRtl .soria .dijitSliderBottomBumper {
- background-position: bottom right;
-}
-
-.dijitRtl .soria .dijitSliderLeftBumper {
- border-left-width: 0px;
- border-right-width: 1px;
-}
-
-.dijitRtl .soria .dijitSliderRightBumper {
- border-left-width: 1px;
- border-right-width: 0px;
-}
-
-.dijitRtl .soria .dijitSliderIncrementIconH {
- background:url('../images/spriteRoundedIconsSmall.png') no-repeat left top;
- #background:url('../images/spriteRoundedIconsSmall.gif') no-repeat left top;
-}
-
-.dijitRtl .soria .dijitSliderDecrementIconH {
- background:url('../images/spriteRoundedIconsSmall.png') no-repeat -30px top;
- #background:url('../images/spriteRoundedIconsSmall.gif') no-repeat -30px top;
-}
diff --git a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/themes/soria/form/TimeTextBox.css b/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/themes/soria/form/TimeTextBox.css
deleted file mode 100644
index bf67b66..0000000
--- a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/themes/soria/form/TimeTextBox.css
+++ /dev/null
@@ -1 +0,0 @@
-@CHARSET "UTF-8";
\ No newline at end of file
diff --git a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/themes/soria/images/accordionItemActive.gif b/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/themes/soria/images/accordionItemActive.gif
deleted file mode 100644
index 249a153..0000000
--- a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/themes/soria/images/accordionItemActive.gif
+++ /dev/null
Binary files differ
diff --git a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/themes/soria/images/accordionItemActive.png b/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/themes/soria/images/accordionItemActive.png
deleted file mode 100644
index 92c7431..0000000
--- a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/themes/soria/images/accordionItemActive.png
+++ /dev/null
Binary files differ
diff --git a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/themes/soria/images/buttonActive.png b/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/themes/soria/images/buttonActive.png
deleted file mode 100644
index f815983..0000000
--- a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/themes/soria/images/buttonActive.png
+++ /dev/null
Binary files differ
diff --git a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/themes/soria/images/buttonDisabled.png b/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/themes/soria/images/buttonDisabled.png
deleted file mode 100644
index f76e4ab..0000000
--- a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/themes/soria/images/buttonDisabled.png
+++ /dev/null
Binary files differ
diff --git a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/themes/soria/images/buttonEnabled.png b/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/themes/soria/images/buttonEnabled.png
deleted file mode 100644
index 3c55c83..0000000
--- a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/themes/soria/images/buttonEnabled.png
+++ /dev/null
Binary files differ
diff --git a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/themes/soria/images/buttonHover.png b/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/themes/soria/images/buttonHover.png
deleted file mode 100644
index a22ebda..0000000
--- a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/themes/soria/images/buttonHover.png
+++ /dev/null
Binary files differ
diff --git a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/themes/soria/images/dndCopy.png b/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/themes/soria/images/dndCopy.png
deleted file mode 100644
index baecd7c..0000000
--- a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/themes/soria/images/dndCopy.png
+++ /dev/null
Binary files differ
diff --git a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/themes/soria/images/dndMove.png b/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/themes/soria/images/dndMove.png
deleted file mode 100644
index 07f878c..0000000
--- a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/themes/soria/images/dndMove.png
+++ /dev/null
Binary files differ
diff --git a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/themes/soria/images/dndNoCopy.png b/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/themes/soria/images/dndNoCopy.png
deleted file mode 100644
index 9bf9c33..0000000
--- a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/themes/soria/images/dndNoCopy.png
+++ /dev/null
Binary files differ
diff --git a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/themes/soria/images/dndNoMove.png b/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/themes/soria/images/dndNoMove.png
deleted file mode 100644
index cb8bd8b..0000000
--- a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/themes/soria/images/dndNoMove.png
+++ /dev/null
Binary files differ
diff --git a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/themes/soria/images/editor.gif b/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/themes/soria/images/editor.gif
deleted file mode 100644
index 750c6b9..0000000
--- a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/themes/soria/images/editor.gif
+++ /dev/null
Binary files differ
diff --git a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/themes/soria/images/editorDisabled.gif b/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/themes/soria/images/editorDisabled.gif
deleted file mode 100644
index e40460d..0000000
--- a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/themes/soria/images/editorDisabled.gif
+++ /dev/null
Binary files differ
diff --git a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/themes/soria/images/editorDisabled_rtl.gif b/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/themes/soria/images/editorDisabled_rtl.gif
deleted file mode 100644
index a0f6c10..0000000
--- a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/themes/soria/images/editorDisabled_rtl.gif
+++ /dev/null
Binary files differ
diff --git a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/themes/soria/images/editor_rtl.gif b/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/themes/soria/images/editor_rtl.gif
deleted file mode 100644
index a9740c2..0000000
--- a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/themes/soria/images/editor_rtl.gif
+++ /dev/null
Binary files differ
diff --git a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/themes/soria/images/preciseSliderThumb.gif b/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/themes/soria/images/preciseSliderThumb.gif
deleted file mode 100644
index 53b33e5..0000000
--- a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/themes/soria/images/preciseSliderThumb.gif
+++ /dev/null
Binary files differ
diff --git a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/themes/soria/images/preciseSliderThumb.png b/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/themes/soria/images/preciseSliderThumb.png
deleted file mode 100644
index 045bf35..0000000
--- a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/themes/soria/images/preciseSliderThumb.png
+++ /dev/null
Binary files differ
diff --git a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/themes/soria/images/preciseSliderThumbFocus.gif b/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/themes/soria/images/preciseSliderThumbFocus.gif
deleted file mode 100644
index 8c6f92e..0000000
--- a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/themes/soria/images/preciseSliderThumbFocus.gif
+++ /dev/null
Binary files differ
diff --git a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/themes/soria/images/preciseSliderThumbFocus.png b/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/themes/soria/images/preciseSliderThumbFocus.png
deleted file mode 100644
index c235849..0000000
--- a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/themes/soria/images/preciseSliderThumbFocus.png
+++ /dev/null
Binary files differ
diff --git a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/themes/soria/images/progressBarAnim.gif b/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/themes/soria/images/progressBarAnim.gif
deleted file mode 100644
index 73e25e1..0000000
--- a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/themes/soria/images/progressBarAnim.gif
+++ /dev/null
Binary files differ
diff --git a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/themes/soria/images/progressBarEmpty.png b/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/themes/soria/images/progressBarEmpty.png
deleted file mode 100644
index 04d81df..0000000
--- a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/themes/soria/images/progressBarEmpty.png
+++ /dev/null
Binary files differ
diff --git a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/themes/soria/images/progressBarFull.png b/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/themes/soria/images/progressBarFull.png
deleted file mode 100644
index bed17b3..0000000
--- a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/themes/soria/images/progressBarFull.png
+++ /dev/null
Binary files differ
diff --git a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/themes/soria/images/sliderEmpty.png b/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/themes/soria/images/sliderEmpty.png
deleted file mode 100644
index 99fbd72..0000000
--- a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/themes/soria/images/sliderEmpty.png
+++ /dev/null
Binary files differ
diff --git a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/themes/soria/images/sliderEmptyVertical.png b/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/themes/soria/images/sliderEmptyVertical.png
deleted file mode 100644
index 2d497e3..0000000
--- a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/themes/soria/images/sliderEmptyVertical.png
+++ /dev/null
Binary files differ
diff --git a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/themes/soria/images/sliderFull.png b/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/themes/soria/images/sliderFull.png
deleted file mode 100644
index 171eb54..0000000
--- a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/themes/soria/images/sliderFull.png
+++ /dev/null
Binary files differ
diff --git a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/themes/soria/images/sliderFullFocus.png b/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/themes/soria/images/sliderFullFocus.png
deleted file mode 100644
index 0956a72..0000000
--- a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/themes/soria/images/sliderFullFocus.png
+++ /dev/null
Binary files differ
diff --git a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/themes/soria/images/sliderFullVertical.png b/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/themes/soria/images/sliderFullVertical.png
deleted file mode 100644
index 35845da..0000000
--- a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/themes/soria/images/sliderFullVertical.png
+++ /dev/null
Binary files differ
diff --git a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/themes/soria/images/sliderFullVerticalFocus.png b/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/themes/soria/images/sliderFullVerticalFocus.png
deleted file mode 100644
index 9b158bb..0000000
--- a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/themes/soria/images/sliderFullVerticalFocus.png
+++ /dev/null
Binary files differ
diff --git a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/themes/soria/images/sliderThumb.gif b/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/themes/soria/images/sliderThumb.gif
deleted file mode 100644
index 29899a4..0000000
--- a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/themes/soria/images/sliderThumb.gif
+++ /dev/null
Binary files differ
diff --git a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/themes/soria/images/sliderThumb.png b/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/themes/soria/images/sliderThumb.png
deleted file mode 100644
index b6abbd2..0000000
--- a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/themes/soria/images/sliderThumb.png
+++ /dev/null
Binary files differ
diff --git a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/themes/soria/images/sliderThumbFocus.gif b/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/themes/soria/images/sliderThumbFocus.gif
deleted file mode 100644
index f8d306f..0000000
--- a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/themes/soria/images/sliderThumbFocus.gif
+++ /dev/null
Binary files differ
diff --git a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/themes/soria/images/sliderThumbFocus.png b/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/themes/soria/images/sliderThumbFocus.png
deleted file mode 100644
index 73ee705..0000000
--- a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/themes/soria/images/sliderThumbFocus.png
+++ /dev/null
Binary files differ
diff --git a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/themes/soria/images/splitContainerSizerH-thumb.png b/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/themes/soria/images/splitContainerSizerH-thumb.png
deleted file mode 100644
index 0e8f397..0000000
--- a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/themes/soria/images/splitContainerSizerH-thumb.png
+++ /dev/null
Binary files differ
diff --git a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/themes/soria/images/splitContainerSizerH.png b/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/themes/soria/images/splitContainerSizerH.png
deleted file mode 100644
index 7cdf79a..0000000
--- a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/themes/soria/images/splitContainerSizerH.png
+++ /dev/null
Binary files differ
diff --git a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/themes/soria/images/splitContainerSizerV-thumb.png b/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/themes/soria/images/splitContainerSizerV-thumb.png
deleted file mode 100644
index 7f12fed..0000000
--- a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/themes/soria/images/splitContainerSizerV-thumb.png
+++ /dev/null
Binary files differ
diff --git a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/themes/soria/images/splitContainerSizerV.png b/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/themes/soria/images/splitContainerSizerV.png
deleted file mode 100644
index 9ff14d6..0000000
--- a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/themes/soria/images/splitContainerSizerV.png
+++ /dev/null
Binary files differ
diff --git a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/themes/soria/images/spriteArrows.gif b/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/themes/soria/images/spriteArrows.gif
deleted file mode 100644
index fc81207..0000000
--- a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/themes/soria/images/spriteArrows.gif
+++ /dev/null
Binary files differ
diff --git a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/themes/soria/images/spriteArrows.png b/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/themes/soria/images/spriteArrows.png
deleted file mode 100644
index 73aa700..0000000
--- a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/themes/soria/images/spriteArrows.png
+++ /dev/null
Binary files differ
diff --git a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/themes/soria/images/spriteCheckbox.gif b/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/themes/soria/images/spriteCheckbox.gif
deleted file mode 100644
index d2c4ebf..0000000
--- a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/themes/soria/images/spriteCheckbox.gif
+++ /dev/null
Binary files differ
diff --git a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/themes/soria/images/spriteCheckbox.png b/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/themes/soria/images/spriteCheckbox.png
deleted file mode 100644
index e992330..0000000
--- a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/themes/soria/images/spriteCheckbox.png
+++ /dev/null
Binary files differ
diff --git a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/themes/soria/images/spriteDivIcons.gif b/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/themes/soria/images/spriteDivIcons.gif
deleted file mode 100644
index f5c58e4..0000000
--- a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/themes/soria/images/spriteDivIcons.gif
+++ /dev/null
Binary files differ
diff --git a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/themes/soria/images/spriteDivIcons.png b/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/themes/soria/images/spriteDivIcons.png
deleted file mode 100644
index d76325f..0000000
--- a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/themes/soria/images/spriteDivIcons.png
+++ /dev/null
Binary files differ
diff --git a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/themes/soria/images/spriteRadio.gif b/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/themes/soria/images/spriteRadio.gif
deleted file mode 100644
index 8dd6e57..0000000
--- a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/themes/soria/images/spriteRadio.gif
+++ /dev/null
Binary files differ
diff --git a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/themes/soria/images/spriteRadio.png b/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/themes/soria/images/spriteRadio.png
deleted file mode 100644
index 14c1080..0000000
--- a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/themes/soria/images/spriteRadio.png
+++ /dev/null
Binary files differ
diff --git a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/themes/soria/images/spriteRoundedIconsSmall.gif b/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/themes/soria/images/spriteRoundedIconsSmall.gif
deleted file mode 100644
index 795ea84..0000000
--- a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/themes/soria/images/spriteRoundedIconsSmall.gif
+++ /dev/null
Binary files differ
diff --git a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/themes/soria/images/spriteRoundedIconsSmall.png b/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/themes/soria/images/spriteRoundedIconsSmall.png
deleted file mode 100644
index 10c0d13..0000000
--- a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/themes/soria/images/spriteRoundedIconsSmall.png
+++ /dev/null
Binary files differ
diff --git a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/themes/soria/images/spriteRoundedIconsSmallBl.gif b/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/themes/soria/images/spriteRoundedIconsSmallBl.gif
deleted file mode 100644
index 6758181..0000000
--- a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/themes/soria/images/spriteRoundedIconsSmallBl.gif
+++ /dev/null
Binary files differ
diff --git a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/themes/soria/images/spriteRoundedIconsSmallBl.png b/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/themes/soria/images/spriteRoundedIconsSmallBl.png
deleted file mode 100644
index 2c9f51a..0000000
--- a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/themes/soria/images/spriteRoundedIconsSmallBl.png
+++ /dev/null
Binary files differ
diff --git a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/themes/soria/images/spriteTree.gif b/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/themes/soria/images/spriteTree.gif
deleted file mode 100644
index e546e28..0000000
--- a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/themes/soria/images/spriteTree.gif
+++ /dev/null
Binary files differ
diff --git a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/themes/soria/images/spriteTree.png b/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/themes/soria/images/spriteTree.png
deleted file mode 100644
index 33ae07b..0000000
--- a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/themes/soria/images/spriteTree.png
+++ /dev/null
Binary files differ
diff --git a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/themes/soria/images/spriteTree_rtl.gif b/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/themes/soria/images/spriteTree_rtl.gif
deleted file mode 100644
index bbcc64b..0000000
--- a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/themes/soria/images/spriteTree_rtl.gif
+++ /dev/null
Binary files differ
diff --git a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/themes/soria/images/spriteTree_rtl.png b/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/themes/soria/images/spriteTree_rtl.png
deleted file mode 100644
index b06afdb..0000000
--- a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/themes/soria/images/spriteTree_rtl.png
+++ /dev/null
Binary files differ
diff --git a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/themes/soria/images/tabBottomActiveC.gif b/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/themes/soria/images/tabBottomActiveC.gif
deleted file mode 100644
index fb61df9..0000000
--- a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/themes/soria/images/tabBottomActiveC.gif
+++ /dev/null
Binary files differ
diff --git a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/themes/soria/images/tabBottomActiveSpriteLR.gif b/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/themes/soria/images/tabBottomActiveSpriteLR.gif
deleted file mode 100644
index 7c2ed86..0000000
--- a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/themes/soria/images/tabBottomActiveSpriteLR.gif
+++ /dev/null
Binary files differ
diff --git a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/themes/soria/images/tabBottomEnabledC.gif b/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/themes/soria/images/tabBottomEnabledC.gif
deleted file mode 100644
index 0a5f0f8..0000000
--- a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/themes/soria/images/tabBottomEnabledC.gif
+++ /dev/null
Binary files differ
diff --git a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/themes/soria/images/tabBottomEnabledSpriteLR.gif b/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/themes/soria/images/tabBottomEnabledSpriteLR.gif
deleted file mode 100644
index a77da39..0000000
--- a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/themes/soria/images/tabBottomEnabledSpriteLR.gif
+++ /dev/null
Binary files differ
diff --git a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/themes/soria/images/tabBottomHoverC.gif b/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/themes/soria/images/tabBottomHoverC.gif
deleted file mode 100644
index 47b9da2..0000000
--- a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/themes/soria/images/tabBottomHoverC.gif
+++ /dev/null
Binary files differ
diff --git a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/themes/soria/images/tabBottomHoverSpriteLR.gif b/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/themes/soria/images/tabBottomHoverSpriteLR.gif
deleted file mode 100644
index 59f3edd..0000000
--- a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/themes/soria/images/tabBottomHoverSpriteLR.gif
+++ /dev/null
Binary files differ
diff --git a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/themes/soria/images/tabContainerSprite.gif b/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/themes/soria/images/tabContainerSprite.gif
deleted file mode 100644
index f0b3842..0000000
--- a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/themes/soria/images/tabContainerSprite.gif
+++ /dev/null
Binary files differ
diff --git a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/themes/soria/images/tabLeftChecked.gif b/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/themes/soria/images/tabLeftChecked.gif
deleted file mode 100644
index 3e7475a..0000000
--- a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/themes/soria/images/tabLeftChecked.gif
+++ /dev/null
Binary files differ
diff --git a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/themes/soria/images/tabRightChecked.gif b/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/themes/soria/images/tabRightChecked.gif
deleted file mode 100644
index ec4b659..0000000
--- a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/themes/soria/images/tabRightChecked.gif
+++ /dev/null
Binary files differ
diff --git a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/themes/soria/images/tabStripe.gif b/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/themes/soria/images/tabStripe.gif
deleted file mode 100644
index 51a2d40..0000000
--- a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/themes/soria/images/tabStripe.gif
+++ /dev/null
Binary files differ
diff --git a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/themes/soria/images/tabStripeBottom.gif b/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/themes/soria/images/tabStripeBottom.gif
deleted file mode 100644
index 41b1ac0..0000000
--- a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/themes/soria/images/tabStripeBottom.gif
+++ /dev/null
Binary files differ
diff --git a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/themes/soria/images/tabStripeLeft.gif b/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/themes/soria/images/tabStripeLeft.gif
deleted file mode 100644
index b2214fa..0000000
--- a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/themes/soria/images/tabStripeLeft.gif
+++ /dev/null
Binary files differ
diff --git a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/themes/soria/images/tabStripeRight.gif b/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/themes/soria/images/tabStripeRight.gif
deleted file mode 100644
index bff3115..0000000
--- a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/themes/soria/images/tabStripeRight.gif
+++ /dev/null
Binary files differ
diff --git a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/themes/soria/images/titleBar.png b/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/themes/soria/images/titleBar.png
deleted file mode 100644
index 93c4146..0000000
--- a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/themes/soria/images/titleBar.png
+++ /dev/null
Binary files differ
diff --git a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/themes/soria/images/titleBarActive.png b/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/themes/soria/images/titleBarActive.png
deleted file mode 100644
index fb8a2e6..0000000
--- a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/themes/soria/images/titleBarActive.png
+++ /dev/null
Binary files differ
diff --git a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/themes/soria/images/tooltipConnectorDown.gif b/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/themes/soria/images/tooltipConnectorDown.gif
deleted file mode 100644
index 9c38495..0000000
--- a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/themes/soria/images/tooltipConnectorDown.gif
+++ /dev/null
Binary files differ
diff --git a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/themes/soria/images/tooltipConnectorDown.png b/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/themes/soria/images/tooltipConnectorDown.png
deleted file mode 100644
index d75af71..0000000
--- a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/themes/soria/images/tooltipConnectorDown.png
+++ /dev/null
Binary files differ
diff --git a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/themes/soria/images/tooltipConnectorLeft.gif b/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/themes/soria/images/tooltipConnectorLeft.gif
deleted file mode 100644
index fc947e0..0000000
--- a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/themes/soria/images/tooltipConnectorLeft.gif
+++ /dev/null
Binary files differ
diff --git a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/themes/soria/images/tooltipConnectorLeft.png b/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/themes/soria/images/tooltipConnectorLeft.png
deleted file mode 100644
index f3de66a..0000000
--- a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/themes/soria/images/tooltipConnectorLeft.png
+++ /dev/null
Binary files differ
diff --git a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/themes/soria/images/tooltipConnectorRight.gif b/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/themes/soria/images/tooltipConnectorRight.gif
deleted file mode 100644
index b0e8097..0000000
--- a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/themes/soria/images/tooltipConnectorRight.gif
+++ /dev/null
Binary files differ
diff --git a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/themes/soria/images/tooltipConnectorRight.png b/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/themes/soria/images/tooltipConnectorRight.png
deleted file mode 100644
index 64190ee..0000000
--- a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/themes/soria/images/tooltipConnectorRight.png
+++ /dev/null
Binary files differ
diff --git a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/themes/soria/images/tooltipConnectorUp.gif b/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/themes/soria/images/tooltipConnectorUp.gif
deleted file mode 100644
index 54bcf65..0000000
--- a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/themes/soria/images/tooltipConnectorUp.gif
+++ /dev/null
Binary files differ
diff --git a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/themes/soria/images/tooltipConnectorUp.png b/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/themes/soria/images/tooltipConnectorUp.png
deleted file mode 100644
index 7f7a5d8..0000000
--- a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/themes/soria/images/tooltipConnectorUp.png
+++ /dev/null
Binary files differ
diff --git a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/themes/soria/images/treeExpand_loading.gif b/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/themes/soria/images/treeExpand_loading.gif
deleted file mode 100644
index db9ddd0..0000000
--- a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/themes/soria/images/treeExpand_loading.gif
+++ /dev/null
Binary files differ
diff --git a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/themes/soria/images/treeHover.png b/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/themes/soria/images/treeHover.png
deleted file mode 100644
index cd6d28b..0000000
--- a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/themes/soria/images/treeHover.png
+++ /dev/null
Binary files differ
diff --git a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/themes/soria/images/treeI.gif b/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/themes/soria/images/treeI.gif
deleted file mode 100644
index 6f669e2..0000000
--- a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/themes/soria/images/treeI.gif
+++ /dev/null
Binary files differ
diff --git a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/themes/soria/images/treeI_half.gif b/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/themes/soria/images/treeI_half.gif
deleted file mode 100644
index e5fd015..0000000
--- a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/themes/soria/images/treeI_half.gif
+++ /dev/null
Binary files differ
diff --git a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/themes/soria/images/treeI_half_rtl.gif b/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/themes/soria/images/treeI_half_rtl.gif
deleted file mode 100644
index 44ad021..0000000
--- a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/themes/soria/images/treeI_half_rtl.gif
+++ /dev/null
Binary files differ
diff --git a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/themes/soria/images/treeI_rtl.gif b/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/themes/soria/images/treeI_rtl.gif
deleted file mode 100644
index 0d32a2f..0000000
--- a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/themes/soria/images/treeI_rtl.gif
+++ /dev/null
Binary files differ
diff --git a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/themes/soria/images/validationInputBg.gif b/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/themes/soria/images/validationInputBg.gif
deleted file mode 100644
index c28475c..0000000
--- a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/themes/soria/images/validationInputBg.gif
+++ /dev/null
Binary files differ
diff --git a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/themes/soria/images/validationInputBg.png b/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/themes/soria/images/validationInputBg.png
deleted file mode 100644
index f3039f9..0000000
--- a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/themes/soria/images/validationInputBg.png
+++ /dev/null
Binary files differ
diff --git a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/themes/soria/images/warning.png b/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/themes/soria/images/warning.png
deleted file mode 100644
index c52f83d..0000000
--- a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/themes/soria/images/warning.png
+++ /dev/null
Binary files differ
diff --git a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/themes/soria/layout/AccordionContainer.css b/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/themes/soria/layout/AccordionContainer.css
deleted file mode 100644
index 1347e51..0000000
--- a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/themes/soria/layout/AccordionContainer.css
+++ /dev/null
@@ -1,48 +0,0 @@
-/**
- * dijit.layout.Accordioncontainer
- *
- */
-
-.soria .dijitAccordionContainer {
- border-color: #b1badf;
- background-color: #fff;
-}
-
-/* common */
-
-.soria .dijitAccordionTitle {
- background:#fafafa url("../images/titleBar.png") repeat-x top left;
- border-top: 1px solid #b9bbdd;
- padding: 5px 4px 6px 8px;
- cursor:pointer;
- font-size: 0.9em;
- font-weight: bold;
- color: #373941;
-}
-
-.soria .dijitAccordionTitle-selected {
- background: #f9f9f9 url("../images/accordionItemActive.png") top repeat-x;
- font-weight: bold;
- border-top: 1px solid #b9bbdd;
- border-bottom: 1px solid #b9bbdd;
- padding: 5px 4px 5px 8px;
- cursor: default;
- color: #243C5F;
-}
-
-.soria .dijitAccordionArrow {
- background:url("../images/spriteRoundedIconsSmallBl.gif") no-repeat -30px top;
- width:15px;
- height:15px;
- margin-top:-1px;
-}
-
-.soria .dijitAccordionTitle-selected .dijitAccordionArrow {
- background:url("../images/spriteRoundedIconsSmallBl.gif") no-repeat -15px top;
- margin-top:-1px;
-}
-
-.soria .dijitAccordionText {
- margin-left: 4px;
- margin-right: 4px;
-}
\ No newline at end of file
diff --git a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/themes/soria/layout/AccordionContainer_rtl.css b/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/themes/soria/layout/AccordionContainer_rtl.css
deleted file mode 100644
index f357460..0000000
--- a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/themes/soria/layout/AccordionContainer_rtl.css
+++ /dev/null
@@ -1,8 +0,0 @@
-.dijitRtl .soria .dijitAccordionArrow {
- background-position: 0px top;
-}
-
-.dijitRtl .soria .dijitAccordionTitle-selected .dijitAccordionArrow {
- /* same rule as LTR mode, just listed to override previous rule in this file */
- background-position: -15px top;
-}
diff --git a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/themes/soria/layout/BorderContainer.css b/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/themes/soria/layout/BorderContainer.css
deleted file mode 100644
index a170e83..0000000
--- a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/themes/soria/layout/BorderContainer.css
+++ /dev/null
@@ -1,77 +0,0 @@
-/**
- * dijit.layout.BorderContainer
- *
- */
-
-.soria .dijitBorderContainer {
- background-color: #e1ebfb;
- padding: 5px;
-}
-
-.soria .dijitSplitContainer-child,
-.soria .dijitBorderContainer-child {
- /* By default put borders on all children of BorderContainer,
- * to give illusion of borders on the splitters themselves.
- */
- border: 1px #b1badf solid;
-}
-
-.soria .dijitBorderContainer-dijitTabContainerTop,
-.soria .dijitBorderContainer-dijitTabContainerBottom,
-.soria .dijitBorderContainer-dijitTabContainerLeft,
-.soria .dijitBorderContainer-dijitTabContainerRight {
- /* except that TabContainer defines borders on it's sub-nodes (tablist and dijitTabPaneWrapper),
- * so no border on domNode
- */
- border: none;
-}
-
-.soria .dijitBorderContainer-dijitBorderContainer {
- /* also, make nested BorderContainers look like a single big widget with lots of splitters */
- border: none;
- padding: 0px;
-}
-
-
-.soria .dijitSplitterH,
-.soria .dijitGutterH {
- background: #E1EBFB;
- border:0;
- border-left:0px solid #d3d3d3;
- border-right:0px solid #d3d3d3;
- height:5px;
-}
-
-.soria .dijitSplitterH .dijitSplitterThumb {
- background:#B0B0B0 none;
- height:1px;
- top:2px;
- width:19px;
-}
-
-.soria .dijitSplitterV,
-.soria .dijitGutterV {
- background: #E1EBFB;
- border:0;
- border-top:0px solid #d3d3d3;
- border-bottom:0px solid #d3d3d3;
- width:5px;
-}
-
-.soria .dijitSplitterV .dijitSplitterThumb {
- background:#B0B0B0 none;
- height:19px;
- left:2px;
- width:1px;
-}
-
-/* active splitter */
-.soria .dijitSplitterActive {
- font-size: 1px;
- background-image: none;
- background-color: #aaa;
- -moz-opacity: 0.6;
- opacity: 0.6;
- filter: Alpha(Opacity=60);
- margin: 0;
-}
\ No newline at end of file
diff --git a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/themes/soria/layout/ContentPane.css b/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/themes/soria/layout/ContentPane.css
deleted file mode 100644
index d1492d5..0000000
--- a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/themes/soria/layout/ContentPane.css
+++ /dev/null
@@ -1,21 +0,0 @@
-/* ContentPane */
-
-.soria .dijitContentPane {
- padding: 0px;
-}
-
-/* nested layouts */
-.soria .dijitTabContainerTop-dijitContentPane,
-.soria .dijitTabContainerLeft-dijitContentPane,
-.soria .dijitTabContainerBottom-dijitContentPane,
-.soria .dijitTabContainerRight-dijitContentPane,
-.soria .dijitAccordionContainer-dijitContentPane {
- background-color: #fff;
- padding: 5px;
-}
-
-.soria .dijitSplitContainer-dijitContentPane,
-.soria .dijitBorderContainer-dijitContentPane {
- background-color: #fff; /* override background-color setting on parent .dijitBorderContainer */
- padding: 5px;
-}
\ No newline at end of file
diff --git a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/themes/soria/layout/SplitContainer.css b/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/themes/soria/layout/SplitContainer.css
deleted file mode 100644
index e066a3c..0000000
--- a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/themes/soria/layout/SplitContainer.css
+++ /dev/null
@@ -1,34 +0,0 @@
-/**
- * dijit.layout.SplitContainer
- *
- */
-
-.soria .dijitSplitContainerSizerH {
- background:url("../images/splitContainerSizerV.png") repeat-y #cddef4;
- border:0;
- border-left:0px solid #436496;
- border-right:0px solid #436496;
- width:5px;
-}
-
-.soria .dijitSplitContainerSizerH .thumb {
- background:url("../images/splitContainerSizerV-thumb.png") no-repeat #ccc;
- left:1px;
- width:2px;
- height:19px;
-}
-
-.soria .dijitSplitContainerSizerV {
- background:url("../images/splitContainerSizerH.png") repeat-x #cddef4;
- border:0;
- border-top:0px solid #436496;
- border-bottom:0px solid #436496;
- height:2px;
-}
-
-.soria .dijitSplitContainerSizerV .thumb {
- background:url("../images/splitContainerSizerH-thumb.png") no-repeat #ccc;
- top:1px;
- width:19px;
- height:5px;
-}
\ No newline at end of file
diff --git a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/themes/soria/layout/TabContainer.css b/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/themes/soria/layout/TabContainer.css
deleted file mode 100644
index 53c05b0..0000000
--- a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/themes/soria/layout/TabContainer.css
+++ /dev/null
@@ -1,520 +0,0 @@
-/**
- * dijit.layout.TabContainer
- *
- * To style TabContainer with rounded corners
- * you can use these classes: .dijitTab (left), .dijitTabContent (center), dijitTabInnerDiv (right)
- * For tabs aligned to top you can style a stripe div right underneath the tabs using .dijitTabStripe
- */
-
-/* Classes for all types of tabs (top/bottom/left/right) */
-
- .soria .dijitTabContainer .tabStripRBtn {
- margin-right: 21px;
-}
- .soria .dijitTabContainer .tabStripLBtn {
- margin-left: 21px;
-}
-
- .soria .nowrapTabStrip .dijitTab {
- top: 2px;
-}
-
- .soria .dijitTabContainerBottom-tabs .dijitTab {
- top: -1px;
- bottom: 2px;
-}
-
- .soria .dijitTabContainer .tabStripMenuButton-Hover {
- cursor: pointer;
-}
-
-/* Tabs, shared classes */
-.soria .dijitTabPaneWrapper {
- background:#fff;
- border:1px solid #B1BADF;
- margin: 0;
- padding-left: 0px;
-}
-
-.soria .dijitTabInnerDiv {
- padding:0px 3px 0px 0px;
- margin: 0 0 0 4px;
- background: url("../images/tabContainerSprite.gif") no-repeat;
- background-position: right -400px;
-}
-
-.soria .dijitTab {
- line-height:normal;
- margin:0 2px 0 0; /* space between one tab and the next in top/bottom mode */
- padding:0px;
- background: url("../images/tabContainerSprite.gif") no-repeat 0 -300px;
- color: #243C5F;
- border-bottom: 1px #B1BADF solid;
-}
-
-.soria .dijitTabInnerDiv .dijitTabContent {
- padding:4px 3px 2px 4px;
- background: url("../images/tabContainerSprite.gif") repeat-x 0 -350px;
- position: relative;
-}
-
-
-
-.soria .dijitTabListWrapper {
- z-index: 10;
-}
-
-/* hovered tab */
-.soria .dijitTabHover {
- color: #243C5F;
- background: url("../images/tabContainerSprite.gif") no-repeat 0px -150px;
-}
-
-.soria .dijitTabHover .dijitTabInnerDiv {
- background: url("../images/tabContainerSprite.gif") no-repeat right -250px;
-}
-
-.soria .dijitTabHover .dijitTabInnerDiv .dijitTabContent {
- background: url("../images/tabContainerSprite.gif") repeat-x 0 -200px;
-}
-
-/* checked tab*/
-.soria .dijitTabChecked,
-.soria .dijitTabCloseButtonChecked
-{
- /* the selected tab (with or without hover) */
- background: url("../images/tabContainerSprite.gif") no-repeat 0px -0px;
-}
-
-.soria .dijitTabChecked .dijitTabInnerDiv {
- background: url("../images/tabContainerSprite.gif") no-repeat right -100px;
-}
-
-.soria .dijitTabChecked .dijitTabInnerDiv .dijitTabContent {
- background: url("../images/tabContainerSprite.gif") repeat-x 0 -50px;
- color: #243C5F !important;
-}
-
-/* Nested Tabs */
-
-.soria .dijitTabContainerTabListNested {
- background: #F0F4FC;
- background: #D9E9F9;
- border: none;
-}
-.soria .dijitTabContainerTabListNested .dijitTab {
- background: none;
- border: none;
- top: 0px; /* override top:1px setting of top-level tabs */
-}
-.soria .dijitTabContainerTabListNested .dijitTab .dijitTabInnerDiv,
-.soria .dijitTabContainerTabListNested .dijitTab .dijitTabContent {
- background: none;
-}
-.soria .dijitTabContainerTabListNested .dijitTabHover .dijitTabContent .tabLabel {
- text-decoration: underline;
-}
-.soria .dijitTabContainerTabListNested .dijitTabChecked .tabLabel {
- text-decoration: underline;
- font-weight: bold;
-}
-.soria .dijitTabContainerSpacerNested .dijitTabSpacer {
- /* thinner line between tab (labels) and content */
- height: 0px;
-}
-.soria .dijitTabPaneWrapperNested {
- border: none; /* prevent double border */
-}
-
-
-/* Close Button */
-.soria .dijitTab .closeImage {
- width: 15px;
- height: 15px;
- background: url("../images/spriteRoundedIconsSmall.png") no-repeat -60px top;
- margin-top: -1px;
-}
-.dj_ie6 .soria .dijitTab .dijitClosable .closeImage {
- background: url("../images/spriteRoundedIconsSmall.gif") no-repeat -60px top;
-}
-
-.soria .dijitTab .closeButton-hover .closeImage {
- background: url("../images/spriteRoundedIconsSmall.png") no-repeat -60px -15px;
-}
-.dj_ie6 .soria .dijitTab .closeButton-hover .closeImage {
- background: url("../images/spriteRoundedIconsSmall.gif") no-repeat -60px -15px;
-}
-
-.soria .dijitTab .tabLabel {
- /* make sure tabs w/close button and w/out close button are same height, even w/small (<15px) font */
- min-height: 15px;
- display: inline-block;
-}
-.dj_ie6 .soria .dijitTabButtonIcon {
- /* because min-height doesn't work on IE6 */
- height: 18px;
- width: 1px;
-}
-
-/* ================================ */
-/* top tabs */
-.soria .dijitTabContainerTop-tabs {
- border-color: #B1BADF;
- padding-left: 3px;
-}
-
-.soria .dijitTabContainerTopNoStrip {
- padding-top: 3px;
-}
-
-/* top container */
-.soria .dijitTabContainerTop-container {
- border-top: none;
-}
-
-.soria .dijitTabContainerTop .dijitTabListWrapper {
- border-bottom: none;
-}
-
-/*non-checked tabs */
-.soria .dijitTabContainerTop-tabs .dijitTab {
- top: 1px;
-}
-
-/* checked tabs */
-.soria .dijitTabContainerTop-tabs .dijitTabChecked {
- border-bottom-color: #94b4e6;
-}
-
-/* strip */
-.soria .dijitTabContainerTopStrip {
- border: 1px solid #B1BADF;
- margin-top: 1px;
- padding-top: 1px;
- background: #F0F4FC;
-}
-
-.soria .dijitTabContainerTopStrip .dijitTabContainerTop-tabs {
- padding-left: 3px;
-}
-
-
-.soria .dijitTabContainerNested .dijitTabListWrapper {
- height: auto;
-}
-
-/* ================================ */
-/* bottom tabs */
-.soria .dijitTabContainerBottom-tabs {
- margin-top: -1px;
- padding-left: 3px;
- border-top: 1px solid #B1BADF;
-}
-
-.soria .dijitTabContainerBottom .dijitTabListWrapper {
- border-top: none;
- padding-top: 1px;
- padding-bottom: 1px;
- float: left;
-}
-
-/* bottom container */
-.soria .dijitTabContainerBottom-container {
- border-bottom: none;
-}
-
-.soria .dijitTabContainerBottom-tabs .dijitTab {
- border-bottom: none;
- border-top: 1px solid #B1BADF;
- background: url("../images/tabBottomEnabledSpriteLR.gif") no-repeat bottom left;
-}
-
-/* checked tabs */
-.soria .dijitTabContainerBottom-tabs .dijitTabChecked {
- border-top-color:#94b4e6;
-}
-
-
-.soria .dijitTabContainerBottom-tabs .dijitTabInnerDiv .dijitTabContent {
- padding-top: 3px;
- padding-bottom: 3px;
- background: url("../images/tabBottomEnabledC.gif") repeat-x bottom left;
-}
-
-.soria .dijitTabContainerBottom-tabs .dijitTabInnerDiv {
- background: url("../images/tabBottomEnabledSpriteLR.gif") no-repeat bottom right;
-}
-
-.soria .dijitTabContainerBottom-tabs .dijitTabHover {
- color: #243C5F;
- background: url("../images/tabBottomHoverSpriteLR.gif") no-repeat bottom left;
-}
-
-.soria .dijitTabContainerBottom-tabs .dijitTabHover .dijitTabInnerDiv {
- background: url("../images/tabBottomHoverSpriteLR.gif") no-repeat bottom right;
-}
-
-.soria .dijitTabContainerBottom-tabs .dijitTabHover .dijitTabInnerDiv .dijitTabContent {
- background: url("../images/tabBottomHoverC.gif") repeat-x bottom left;
-}
-
-.soria .dijitTabContainerBottom-tabs .dijitTabChecked,
-.soria .dijitTabContainerBottom-tabs .dijitTabCloseButtonChecked
-{
- /* the selected tab (with or without hover) */
- background: url("../images/tabBottomActiveSpriteLR.gif") no-repeat bottom left;
-}
-
-.soria .dijitTabContainerBottom-tabs .dijitTabChecked .dijitTabInnerDiv {
- background: url("../images/tabBottomActiveSpriteLR.gif") no-repeat bottom right;
-}
-
-.soria .dijitTabContainerBottom-tabs .dijitTabChecked .dijitTabInnerDiv .dijitTabContent {
- background: url("../images/tabBottomActiveC.gif") repeat-x bottom left;
-}
-
-/* strip */
-.soria .dijitTabContainerBottomStrip {
- padding-bottom: 2px;
- border: 1px solid #B1BADF;
-}
-
-.soria .dijitTabContainerBottomStrip {
- background: #F0F4FC;
-}
-
-/* top/bottom strip */
-.soria .dijitTabContainerBottom-spacer,
-.soria .dijitTabContainerTop-spacer {
- height: 2px;
- border: 1px solid #8ba0bd;
- background: #94b4e6;
-}
-
-.soria .dijitTabContainerTop-spacer {
- border-top: none;
-}
-
-.soria .dijitTabContainerBottom-spacer {
- border-bottom: none;
-}
-
-/* ================================ */
-/* right tabs */
-.soria .dijitTabContainerRight-tabs {
- height: 100%;
- border-color: #ccc;
- padding-top: 3px;
-}
-
-/* right container */
-.soria .dijitTabContainerRight-container {
- border-right: none;
-}
-
-.soria .dijitTabContainerRight-tabs .dijitTab {
- border-bottom: none;
- border-left: 1px solid #B1BADF;
- border-bottom: 1px solid #B1BADF !important;
-}
-
-
-/* some odd ie bug when borders dissapear when setting a bottom margin, this sortof helps */
-.dj_ie6 .soria .dijitTabContainerRight-tabs .dijitTabInnerDiv,
-.dj_ie7 .soria .dijitTabContainerRight-tabs .dijitTabInnerDiv {
- border-bottom: solid #B1BADF 1px;
- margin-bottom: -1px;
-}
-
-/* checked tabs */
-.soria .dijitTabContainerRight-tabs .dijitTabChecked {
- border-left-color: #94b4e6;
-}
-
-.soria .dijitTabContainerRight-tabs .dijitTabChecked {
- background: url("../images/tabRightChecked.gif") no-repeat left top !important;
-}
-
-/* some odd ie bug when borders dissapear when setting a bottom margin, this sortof helps */
-.dj_ie6 .soria .dijitTabContainerRight-tabs .dijitTabChecked .dijitTabInnerDiv,
-.dj_ie7 .soria .dijitTabContainerRight-tabs .dijitTabChecked .dijitTabInnerDiv,
-.dj_ie6 .soria .dijitTabContainerRight-tabs .dijitTabCheckedHover .dijitTabInnerDiv,
-.dj_ie7 .soria .dijitTabContainerRight-tabs .dijitTabCheckedHover .dijitTabInnerDiv {
- border-bottom: solid #94b4e6 1px;
- margin-bottom: -1px;
-}
-
-.soria .dijitTabContainerRight-tabs .dijitTab {
- background: url("../images/tabContainerSprite.gif") no-repeat left -350px;
-}
-.soria .dijitTabContainerRight-tabs .dijitTabHover .dijitTab {
- background: url("../images/tabContainerSprite.gif") no-repeat left -200px;
-}
-
-/* strip */
-.soria .dijitTabContainerRightStrip {
- padding-right: 2px;
- border: 1px solid #B1BADF;
- background: #F0F4FC;
- border-left: none;
-}
-
-/* ================================ */
-/* left tabs */
-.soria .dijitTabContainerLeft-tabs {
- border-color: #ccc;
- padding-top: 3px;
- height: 100%;
-}
-
-/* left conatiner */
-.soria .dijitTabContainerLeft-container {
- border-left: none;
-}
-
-.soria .dijitTabContainerLeft-tabs .dijitTab {
- border-right: 1px solid #B1BADF;
- border-bottom: 1px solid #B1BADF;
-}
-
-/* checked tabs */
-.soria .dijitTabContainerLeft-tabs .dijitTabChecked {
- border-right: 1px solid #94b4e6;
-}
-
-.soria .dijitTabContainerLeft-tabs .dijitTabInnerDiv {
- background: url("../images/tabContainerSprite.gif") no-repeat right -350px;
-}
-.soria .dijitTabContainerLeft-tabs .dijitTabHover .dijitTabInnerDiv {
- background: url("../images/tabContainerSprite.gif") no-repeat right -200px;
-}
-.soria .dijitTabContainerLeft-tabs .dijitTabChecked .dijitTabInnerDiv,
-.soria .dijitTabContainerLeft-tabs .dijitTabCheckedHover .dijitTabInnerDiv {
- background: url("../images/tabLeftChecked.gif") no-repeat right top;
-}
-
-.dj_ie6 .soria .dijitTabContainerLeft-tabs .dijitTabInnerDiv,
-.dj_ie7 .soria .dijitTabContainerLeft-tabs .dijitTabInnerDiv {
- border-bottom: solid #B1BADF 1px;
- margin-bottom: -1px;
-}
-
-.dj_ie6 .soria .dijitTabContainerLeft-tabs .dijitTabChecked .dijitTabInnerDiv,
-.dj_ie7 .soria .dijitTabContainerLeft-tabs .dijitTabChecked .dijitTabInnerDiv,
-.dj_ie6 .soria .dijitTabContainerLeft-tabs .dijitTabCheckedHover .dijitTabInnerDiv,
-.dj_ie7 .soria .dijitTabContainerLeft-tabs .dijitTabCheckedHover .dijitTabInnerDiv {
- border-bottom: solid #94b4e6 1px;
- margin-bottom: -1px;
-}
-
-/* strip */
-.soria .dijitTabContainerLeftStrip {
- padding-left: 2px;
- border: 1px solid #B1BADF;
- background: #F0F4FC;
- border-right: none;
-}
-
-/* ================================ */
-/* left/right tabs */
-.soria .dijitTabContainerLeft-tabs .dijitTab,
-.soria .dijitTabContainerRight-tabs .dijitTab {
- margin-right:auto;
- margin-bottom:2px; /* space between one tab and the next in left/right mode */
-}
-
-/* left/right tabstrip */
-.soria .dijitTabContainerLeft-spacer,
-.soria .dijitTabContainerRight-spacer {
- width: 2px;
- border: 1px solid #8ba0bd;
- background: #94b4e6;
-}
-
-.soria .dijitTabContainerLeft-spacer {
- border-left: none;
-}
-.soria .dijitTabContainerRight-spacer {
- border-right: none;
-}
-/* ================================ */
-
-/* this resets the tabcontainer stripe when within a contentpane */
-.soria .dijitTabContainerTop-dijitContentPane .dijitTabContainerTop-tabs {
- border-left: 0px solid #ccc;
- border-top: 0px solid #ccc;
- border-right: 0px solid #ccc;
- padding-top: 0px;
- padding-left: 0px;
-}
-
-
-/* ================================ */
-
-/* Menu and slider control styles */
-.soria .dijitTabContainer .tabStripButton {
- margin-right: 0;
-}
-.soria .dijitTabContainer .tabStripButton-top {
- margin-top: 1px;
-}
-
-.soria .tabStripButton .dijitTabContent{
- padding: 6px 0 5px 0;
-}
-
-.dj_ie6 .soria .tabStripButton .dijitTabContent,
-.dj_ie7 .soria .tabStripButton .dijitTabContent {
- padding-top: 7px;
-}
-
-.soria .tabStrip-disabled .tabStripButton .dijitTabContent {
- padding: 5px 0 3px 0;
-}
-
-.dj_ie6 .soria .tabStrip-disabled .tabStripButton .dijitTabContent,
-.dj_ie7 .soria .tabStrip-disabled .tabStripButton .dijitTabContent {
- padding-top: 6px;
-}
-
-.soria .dijitTabContainer .tabStripButton-bottom {
- background: transparent url(../images/tabBottomEnabledSpriteLR.gif) no-repeat scroll left bottom;
- border-bottom: medium none;
- border-top: 1px solid #B1BADF;
-}
-
-.soria .dijitTabContainer .tabStripButton-bottom .dijitTabInnerDiv {
- background: transparent url(../images/tabBottomEnabledSpriteLR.gif) no-repeat scroll right bottom;
-}
-
-.soria .dijitTabContainer .tabStripButton-bottom .dijitTabContent {
- background: transparent;
-}
-
-.soria .dijitTabContainer .tabStripButton {
- /* float need width set */
- width: 21px;
-}
-
-.soria .dijitTabContainer .tabStripButton img {
- height: 14px;
- background: url(../images/spriteRoundedIconsSmall.png) no-repeat;
-}
-.dj_ie6 .soria .dijitTabContainer .tabStripButton img {
- background-image: url(../images/spriteRoundedIconsSmall.gif);
-}
-.soria .dijitTabContainer .tabStripMenuButton img {
- background-position: -15px top;
-}
-.soria .dijitTabContainer .tabStripSlideButtonLeft img {
- background-position: 0px top;
-}
-.soria .dijitTabContainer .tabStripSlideButtonRight img {
- background-position: -30px top;
-}
-/*
-.soria .dijitTabContent .dijitTabIcon {
- height: 13px;
- width: 14px;
-}
-*/
\ No newline at end of file
diff --git a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/themes/soria/layout/TabContainer_rtl.css b/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/themes/soria/layout/TabContainer_rtl.css
deleted file mode 100644
index e9e1fbf..0000000
--- a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/themes/soria/layout/TabContainer_rtl.css
+++ /dev/null
@@ -1,43 +0,0 @@
-.dijitRtl .soria .dijitTab {
- margin-right:0;
- margin-left:2px; /* space between one tab and the next in top/bottom mode */
-}
-
-/* tab strips */
-.dijitRtl .soria .dijitTabContainer .tabStripButton {
- margin-left: 0;
-}
-
-.dijitRtl .soria .dijitTabContainerTopStrip,
-.dijitRtl .soria .dijitTabContainerBottomStrip,
-.dijitRtl .soria .dijitTabContainerTop-tabs,
-.dijitRtl .soria .dijitTabContainerBottom-tabs {
- padding-left: 0;
- padding-right: 3px;
-}
-
-.dijitRtl .soria .dijitTabInnerDiv {
- padding-left: 3px;
- padding-right: 4px;
-}
-
-.dijitRtl .soria .dijitTabPaneWrapper {
- #zoom: 1;
-}
-
-.dj_ie-rtl .soria .dijitTabContainerLeft-tabs {
- margin-left: 0px !important;
-}
-
-.dj_ie-rtl .soria .dijitTabContainerRight-tabs {
- margin-right: 0px !important;
-}
-
-.dijitRtl .soria .dijitTabContainerLeft-tabs .dijitTab,
-.dijitRtl .soria .dijitTabContainerRight-tabs .dijitTab {
- margin-left:0px;
-}
-
-.dj_ie-rtl .soria .dijitTab .dijitTabInnerDiv{
- width : 1%;
-}
\ No newline at end of file
diff --git a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/themes/soria/soria.css b/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/themes/soria/soria.css
deleted file mode 100644
index dfef7a8..0000000
--- a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/themes/soria/soria.css
+++ /dev/null
@@ -1,41 +0,0 @@
-/*
- Adds cosmetic styling to Dijit. Users may swap with a custom theme CSS file.
-
- NOTES:
- ---
- Dialog.css contains css classes for both Dialog and Tooltip!
- This because currently a dijit.TooltipDialog exist. Until this is resolved
- you need to include Dialog.css for both dijits
- ---
- Toolbar.css contains classes also used in Editor. Until this is resolved
- you need to include Toolbar.css for both Toolbar and Editor
- ---
- Button.css contains classes for combobox,
-
-*/
-
-@import url("../dijit.css");
-@import url("Common.css");
-
-@import url("layout/ContentPane.css");
-@import url("layout/TabContainer.css");
-@import url("layout/AccordionContainer.css");
-@import url("layout/SplitContainer.css");
-@import url("layout/BorderContainer.css");
-@import url("form/Common.css");
-@import url("form/Button.css");
-@import url("form/ComboBox.css");
-@import url("form/Checkbox.css");
-@import url("form/RadioButton.css");
-@import url("form/Slider.css");
-@import url("form/Select.css");
-@import url("Tree.css");
-@import url("ProgressBar.css");
-@import url("TitlePane.css");
-@import url("Calendar.css");
-@import url("TimePicker.css");
-@import url("Toolbar.css");
-@import url("Dialog.css");
-@import url("Menu.css");
-@import url("Editor.css");
-@import url("ColorPalette.css");
\ No newline at end of file
diff --git a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/themes/soria/soria_rtl.css b/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/themes/soria/soria_rtl.css
deleted file mode 100644
index 1edd055..0000000
--- a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/themes/soria/soria_rtl.css
+++ /dev/null
@@ -1,28 +0,0 @@
-/*
- Adds cosmetic styling to Dijit. Users may swap with a custom theme CSS file.
-
- NOTES:
- ---
- Dialog.css contains css classes for both Dialog and Tooltip!
- This because currently a dijit.TooltipDialog exist. Until this is resolved
- you need to include Dialog.css for both dijits
- ---
- Toolbar.css contains classes also used in Editor. Until this is resolved
- you need to include Toolbar.css for both Toolbar and Editor
- ---
- Button.css contains classes for combobox,
-
-*/
-
-@import url("../dijit_rtl.css");
-@import url("layout/TabContainer_rtl.css");
-@import url("layout/AccordionContainer_rtl.css");
-@import url("form/Slider_rtl.css");
-@import url("form/Button_rtl.css");
-@import url("form/Common_rtl.css");
-@import url("Tree_rtl.css");
-@import url("TitlePane_rtl.css");
-@import url("Calendar_rtl.css");
-@import url("Dialog_rtl.css");
-@import url("Menu_rtl.css");
-@import url("Editor_rtl.css");
\ No newline at end of file
diff --git a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/themes/tundra/Calendar.css b/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/themes/tundra/Calendar.css
deleted file mode 100644
index e2deaa0..0000000
--- a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/themes/tundra/Calendar.css
+++ /dev/null
@@ -1,148 +0,0 @@
-/* Calendar*/
-
-.tundra .dijitCalendarIncrementControl {
- /* next/prev month buttons */
- width:15px;
- height:15px;
- background-image: url("images/spriteRoundedIconsSmall.png");
- background-repeat: no-repeat
-}
-.dj_ie6 .tundra .dijitCalendarIncrementControl {
- font-size:.1em;
- background-image: url("images/spriteRoundedIconsSmall.gif");
-}
-
-.tundra .dijitA11ySideArrow {
- display: none;
-}
-
-.tundra .dijitCalendarDecrease {
- background-position: top left;
-}
-.tundra .dijitCalendarIncrease {
- background-position: -30px top;
-}
-
-.tundra table.dijitCalendarContainer {
- font-size: 100%;
- border-spacing: 0;
- border-collapse: separate;
- border: 1px solid #ccc;
- margin: 0;
-}
-
-.tundra .dijitCalendarMonthContainer th {
- /* month header cell */
- background:#d3d3d3 url("images/titleBar.png") repeat-x top;
- padding-top:.3em;
- padding-bottom:.2em;
- text-align:center;
-}
-.dj_ie6 .tundra .dijitCalendarMonthContainer th {
- padding-top:.2em;
- padding-bottom:.1em;
-}
-
-.tundra .dijitCalendarDayLabelTemplate {
- /* day of week labels */
- background:white url("images/calendarDayLabel.png") repeat-x bottom;
- font-weight:normal;
- padding-top:.15em;
- padding-bottom:0em;
- border-top: 1px solid #eeeeee;
- color:#293a4b;
- text-align:center;
-}
-
-.tundra .dijitCalendarBodyContainer {
- border-bottom: 1px solid #eeeeee;
-}
-
-.tundra .dijitCalendarMonthLabel {
- color:#293a4b;
- font-weight: bold;
-}
-
-.tundra .dijitCalendarDateTemplate {
- /* style for each day cell */
- font-size: 0.9em;
- font-weight: bold;
- text-align: center;
- padding: 0.3em 0.3em 0.05em 0.3em;
- letter-spacing: 1px;
-}
-
-.dj_ie .tundra .dijitCalendarDateTemplate {
- padding: 0.1em .33em 0.02em .33em;
-}
-
-.tundra .dijitCalendarPreviousMonth,
-.tundra .dijitCalendarNextMonth {
- /* days that are part of the previous or next month */
- color:#999999;
- background-color:#f8f8f8 !important;
-}
-
-.tundra .dijitCalendarPreviousMonthDisabled,
-.tundra .dijitCalendarNextMonthDisabled {
- /* days that are part of the previous or next month - disabled*/
- background-color:#a4a5a6 !important;
-}
-
-.tundra .dijitCalendarCurrentMonth {
- /* days that are part of this month */
- background-color:white !important;
-}
-
-.tundra .dijitCalendarCurrentMonthDisabled {
- /* days that are part of this month - disabled */
- background-color:#bbbbbc !important;
-}
-
-.tundra .dijitCalendarDisabledDate {
- cursor:default !important;
- text-decoration:line-through !important;
-}
-
-.tundra .dijitCalendarCurrentDate {
- /* cell for today's date */
- text-decoration:underline;
- font-weight:bold;
-}
-
-.tundra .dijitCalendarHoveredDate {
- background-color: #e2ebf2 !important;
-}
-
-.tundra .dijitCalendarSelectedDate {
- /* cell for the selected date */
- background-color:#bbc4d0 !important;
- color:black !important;
-}
-.tundra .dijitCalendarYearContainer {
- /* footer of the table that contains the year display/selector */
- background:white url("images/calendarYearLabel.png") repeat-x bottom;
- border-top:1px solid #ccc;
-}
-
-.tundra .dijitCalendarYearLabel {
- /* container for all of 3 year labels */
- margin:0;
- padding:0.4em 0 0.25em 0;
- text-align:center;
-}
-
-.tundra .dijitCalendarSelectedYear {
- /* label for selected year */
- color:black;
- padding:0.2em;
- padding-bottom:0.1em;
- background-color:#bbc4d0 !important;
-}
-
-.tundra .dijitCalendarNextYear,
-.tundra .dijitCalendarPreviousYear {
- /* label for next/prev years */
- color:black !important;
- font-weight:normal;
-}
\ No newline at end of file
diff --git a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/themes/tundra/Calendar_rtl.css b/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/themes/tundra/Calendar_rtl.css
deleted file mode 100644
index 3a50cb8..0000000
--- a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/themes/tundra/Calendar_rtl.css
+++ /dev/null
@@ -1,9 +0,0 @@
-/* Calendar */
-
-.dijitRtl .tundra .dijitCalendarDecrease {
- background-position: -30px top;
-}
-
-.dijitRtl .tundra .dijitCalendarIncrease {
- background-position: 0px top;
-}
diff --git a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/themes/tundra/ColorPalette.css b/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/themes/tundra/ColorPalette.css
deleted file mode 100644
index 9d3c4cc..0000000
--- a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/themes/tundra/ColorPalette.css
+++ /dev/null
@@ -1,5 +0,0 @@
-.dijitColorPalette {
- border:1px solid #7eabcd;
- background:#fff;
- -moz-border-radius: 0px !important;
-}
\ No newline at end of file
diff --git a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/themes/tundra/Common.css b/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/themes/tundra/Common.css
deleted file mode 100644
index c339263..0000000
--- a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/themes/tundra/Common.css
+++ /dev/null
@@ -1,33 +0,0 @@
-/* DnD avatar-specific settings */
-/* For now it uses a default set of rules. Some other DnD classes can be modified as well. */
-.tundra .dojoDndItemBefore {
- border-top: 2px solid #369;
-}
-
-.tundra .dojoDndItemAfter {
- border-bottom: 2px solid #369;
-}
-
-.tundra .dojoDndItemOver {
- cursor:pointer;
-}
-
-.tundra table.dojoDndAvatar { -moz-border-radius: 0; border: 1px solid #ccc; border-collapse: collapse; background-color: #fff; font-size: 75%; color: black;}
-.tundra .dojoDndAvatar td { border: none; }
-.tundra .dojoDndAvatar tr { border: none; }
-.tundra .dojoDndAvatarHeader td { height: 20px; padding: 0 0 0 21px; }
-.tundra .dojoDndAvatarItem td { padding: 2px;}
-.tundra.dojoDndMove .dojoDndAvatarHeader {background-color: #f58383; background-image: url(images/dndNoMove.png); background-repeat: no-repeat; background-position: 2px center;}
-.tundra.dojoDndCopy .dojoDndAvatarHeader {background-color: #f58383; background-image: url(images/dndNoCopy.png); background-repeat: no-repeat; background-position: 2px center;}
-.tundra.dojoDndMove .dojoDndAvatarCanDrop .dojoDndAvatarHeader {background-color: #97e68d; background-image: url(images/dndMove.png); background-repeat: no-repeat; background-position: 2px center;}
-.tundra.dojoDndCopy .dojoDndAvatarCanDrop .dojoDndAvatarHeader {background-color: #97e68d; background-image: url(images/dndCopy.png); background-repeat: no-repeat; background-position: 2px center;}
-
-.tundra .dijitContentPaneLoading {
- background:url('images/loading.gif') no-repeat left center;
- padding-left:25px;
-}
-
-.tundra .dijitContentPaneError {
- background:url('images/warning.png') no-repeat left center;
- padding-left:25px;
-}
diff --git a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/themes/tundra/Dialog.css b/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/themes/tundra/Dialog.css
deleted file mode 100644
index 871df61..0000000
--- a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/themes/tundra/Dialog.css
+++ /dev/null
@@ -1,176 +0,0 @@
-/* Dialog */
-
-.tundra .dijitDialog {
- background: #fff;
- border: 1px solid #7eabcd;
- /*
- filter: progid:DXImageTransform.Microsoft.DropShadow(OffX=5, OffY=5, Color='#adadad', Positive='true');
- filter: progid:DXImageTransform.Microsoft.Blur(PixelRadius=3, ShadowOpacity=.30), progid:DXImageTransform.Microsoft.Alpha(Opacity=100);
- filter: progid:DXImageTransform.Microsoft.Blur(PixelRadius='5', MakeShadow='true', ShadowOpacity='0.50');
- filter: progid:DXImageTransform.Microsoft.Shadow(color='#666666', ShadowOpacity=.30, Direction=135, Strength=3);
- */
- padding: 0px;
- -webkit-box-shadow: 0px 5px 10px #adadad;
-}
-
-.tundra .dijitDialog .dijitDialogPaneContent {
- background: #fff;
- border:none;
- border-top: 1px solid #d3d3d3; /* w/out this, an <h1> on the top line causes a gap between the .content and .label */
- padding:10px;
-
-}
-
-.tundra .dijitDialogTitleBar {
- /* outer container for the titlebar of the dialog */
- background: #fafafa url("images/titleBar.png") repeat-x top left;
- padding: 5px 6px 3px 6px;
- cursor: move;
- outline:0; /* remove this line if keyboard focus on dialog startup is an issue. tab still takes you to first focusable element */
-}
-
-.tundra .dijitDialogTitle {
- /* typography and styling of the dialog title */
- font-weight: bold;
- padding: 0px 4px;
-}
-
-.tundra .dijitDialogCloseIcon {
- /* the default close icon for the dialog */
- /* background : url("images/spriteRoundedIconsSmall.png") no-repeat right top; */
- background: url("images/tabClose.png") no-repeat right top;
- position: absolute;
- vertical-align: middle;
- right: 6px;
- top: 4px;
- height: 15px;
- width: 15px;
- cursor: pointer;
-}
-.dj_ie6 .tundra .dijitDialogCloseIcon {
- background : url("images/tabClose.gif") no-repeat right top;
-}
-
-.tundra .dijitDialogCloseIcon-hover {
- background: url("images/tabCloseHover.png") no-repeat right top;
-}
-.dj_ie6 .tundra .dijitDialogCloseIcon-hover {
- background : url("images/tabCloseHover.gif") no-repeat right top;
-}
-
-/* Tooltip and TooltipDialog */
-
-.tundra .dijitTooltip,
-.tundra .dijitTooltipDialog {
- /* the outermost dom node, holding the connector and container */
- background: transparent; /* make the area on the sides of the arrow transparent */
-}
-
-.dijitTooltipBelow {
- /* leave room for arrow above content */
- padding-top: 13px;
-}
-
-.dijitTooltipAbove {
- /* leave room for arrow below content */
- padding-bottom: 13px;
-}
-
-.tundra .dijitTooltipContainer {
- /*
- The part with the text.
- */
- background: #ffffff url("images/popupMenuBg.gif") repeat-x bottom left;
- border: 1px solid #7eabcd;
- padding: 0.45em;
- -webkit-border-radius: 3px;
- -moz-border-radius: 3px;
-}
-
-.tundra .dijitTooltipConnector {
- /* the arrow piece */
- border:0px;
- z-index: 2;
-}
-.tundra .dijitTooltipABRight .dijitTooltipConnector {
- /* above or below tooltip, but the arrow appears on the right,
- and the right edges of target and tooltip are aligned rather than the left */
- left: auto !important;
- right: 3px;
-}
-
-.tundra .dijitTooltipBelow .dijitTooltipConnector {
- /* the arrow piece for tooltips below an element */
- top: 0px;
- left: 3px;
- background:url("images/tooltipConnectorUp.png") no-repeat top left;
- width:16px;
- height:14px;
-}
-
-.dj_ie .tundra .dijitTooltipBelow .dijitTooltipConnector {
- /* use gif for IE7 too, due to png rendering problems on fade-in (see http://trac.dojotoolkit.org/ticket/6555) */
- background-image: url("images/tooltipConnectorUp.gif");
-}
-
-.tundra .dijitTooltipAbove .dijitTooltipConnector {
- /* the arrow piece for tooltips above an element */
- bottom: 0px;
- left: 3px;
- background:url("images/tooltipConnectorDown.png") no-repeat top left;
- width:16px;
- height:14px;
-}
-.dj_ie .tundra .dijitTooltipAbove .dijitTooltipConnector {
- background-image: url("images/tooltipConnectorDown.gif");
-}
-.dj_ie6 .tundra .dijitTooltipAbove .dijitTooltipConnector {
- bottom: -3px;
-}
-
-.tundra .dijitTooltipLeft {
- padding-right: 14px;
-}
-.dj_ie6 .tundra .dijitTooltipLeft {
- padding-left: 15px;
-}
-.tundra .dijitTooltipLeft .dijitTooltipConnector {
- /* the arrow piece for tooltips to the left of an element, bottom borders aligned */
- right: 0px;
- bottom: 3px;
- background:url("images/tooltipConnectorRight.png") no-repeat top left;
- width:16px;
- height:14px;
-}
-.dj_ie .tundra .dijitTooltipLeft .dijitTooltipConnector {
- background-image: url("images/tooltipConnectorRight.gif");
-}
-
-.tundra .dijitTooltipRight {
- padding-left: 14px;
-}
-.tundra .dijitTooltipRight .dijitTooltipConnector {
- /* the arrow piece for tooltips to the right of an element, bottom borders aligned */
- left: 0px;
- bottom: 3px;
- background:url("images/tooltipConnectorLeft.png") no-repeat top left;
- width:16px;
- height:14px;
-}
-.dj_ie .tundra .dijitTooltipRight .dijitTooltipConnector {
- background-image: url("images/tooltipConnectorLeft.gif");
-}
-
-.dj_webkit .tundra .dijitPopup .dijitTooltipContainer,
-.dj_webkit .tundra .dijitPopup .dijitMenu {
- /* -webkit-border-radius: 5px; */
- -webkit-box-shadow: 0px 5px 10px #adadad;
-}
-
-/*
-.dj_ie6 .tundra .dijitPopup .dijitTooltipContainer,
-.dj_ie6 .tundra .dijitPopup .dijitMenu {
- filter: progid:DXImageTransform.Microsoft.Shadow(color='#666666', Direction=135, Strength=3);
-}
-*/
-
diff --git a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/themes/tundra/Dialog_rtl.css b/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/themes/tundra/Dialog_rtl.css
deleted file mode 100644
index e396b57..0000000
--- a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/themes/tundra/Dialog_rtl.css
+++ /dev/null
@@ -1,5 +0,0 @@
-/* Dialog */
-.dijitRtl .tundra .dijitDialogTitleBar .dijitDialogCloseIcon {
- right: auto;
- left: 5px;
-}
diff --git a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/themes/tundra/Editor.css b/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/themes/tundra/Editor.css
deleted file mode 100644
index 74fc40c..0000000
--- a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/themes/tundra/Editor.css
+++ /dev/null
@@ -1,69 +0,0 @@
-.dijitIEFixedToolbar {
- position:absolute;
- /* top:0; */
- top: expression(eval((document.documentElement||document.body).scrollTop));
-}
-
-.tundra .dijitToolbar .dijitToolbarSeparator {
- background: url('images/editor.gif');
-}
-
-.tundra .dijitEditorIcon {
- background-image: url('images/editor.gif'); /* editor icons sprite image */
- background-repeat: no-repeat;
- width: 18px;
- height: 18px;
- text-align: center;
-}
-.tundra .dijitDisabled .dijitEditorIcon {
- background-image: url('images/editorDisabled.gif'); /* editor icons sprite image */
-}
-
-.tundra .dijitEditorIconSep { background-position: 0px; }
-.tundra .dijitEditorIconBackColor { background-position: -18px; }
-.tundra .dijitEditorIconBold { background-position: -36px; }
-.tundra .dijitEditorIconCancel { background-position: -54px; }
-.tundra .dijitEditorIconCopy { background-position: -72px; }
-.tundra .dijitEditorIconCreateLink { background-position: -90px; }
-.tundra .dijitEditorIconCut { background-position: -108px; }
-.tundra .dijitEditorIconDelete { background-position: -126px; }
-.tundra .dijitEditorIconForeColor { background-position: -144px; }
-.tundra .dijitEditorIconHiliteColor { background-position: -162px; }
-.tundra .dijitEditorIconIndent { background-position: -180px; }
-.tundra .dijitEditorIconInsertHorizontalRule { background-position: -198px; }
-.tundra .dijitEditorIconInsertImage { background-position: -216px; }
-.tundra .dijitEditorIconInsertOrderedList { background-position: -234px; }
-.tundra .dijitEditorIconInsertTable { background-position: -252px; }
-.tundra .dijitEditorIconInsertUnorderedList { background-position: -270px; }
-.tundra .dijitEditorIconItalic { background-position: -288px; }
-.tundra .dijitEditorIconJustifyCenter { background-position: -306px; }
-.tundra .dijitEditorIconJustifyFull { background-position: -324px; }
-.tundra .dijitEditorIconJustifyLeft { background-position: -342px; }
-.tundra .dijitEditorIconJustifyRight { background-position: -360px; }
-.tundra .dijitEditorIconLeftToRight { background-position: -378px; }
-.tundra .dijitEditorIconListBulletIndent { background-position: -396px; }
-.tundra .dijitEditorIconListBulletOutdent { background-position: -414px; }
-.tundra .dijitEditorIconListNumIndent { background-position: -432px; }
-.tundra .dijitEditorIconListNumOutdent { background-position: -450px; }
-.tundra .dijitEditorIconOutdent { background-position: -468px; }
-.tundra .dijitEditorIconPaste { background-position: -486px; }
-.tundra .dijitEditorIconRedo { background-position: -504px; }
-.tundra .dijitEditorIconRemoveFormat { background-position: -522px; }
-.tundra .dijitEditorIconRightToLeft { background-position: -540px; }
-.tundra .dijitEditorIconSave { background-position: -558px; }
-.tundra .dijitEditorIconSpace { background-position: -576px; }
-.tundra .dijitEditorIconStrikethrough { background-position: -594px; }
-.tundra .dijitEditorIconSubscript { background-position: -612px; }
-.tundra .dijitEditorIconSuperscript { background-position: -630px; }
-.tundra .dijitEditorIconUnderline { background-position: -648px; }
-.tundra .dijitEditorIconUndo { background-position: -666px; }
-.tundra .dijitEditorIconWikiword { background-position: -684px; }
-.tundra .dijitEditorIconToggleDir { background-position: -540px; /* padding: 0; margin: 0; color:#555555;
- font-family:verdana,arial,sans-serif; font-weight: 800; font-size: 70%; */}
-.tundra .dijitEditorIconTabIndent { background-position: -702px; }
-.tundra .dijitEditorIconSelectAll { background-position: -720px; }
-.tundra .dijitEditorIconUnlink { background-position: -738px; }
-.tundra .dijitEditorIconFullScreen { background-position: -756px; }
-.tundra .dijitEditorIconViewSource { background-position: -774px; }
-.tundra .dijitEditorIconPrint { background-position: -792px; }
-.tundra .dijitEditorIconNewPage { background-position: -810px; }
diff --git a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/themes/tundra/Editor_rtl.css b/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/themes/tundra/Editor_rtl.css
deleted file mode 100644
index c914930..0000000
--- a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/themes/tundra/Editor_rtl.css
+++ /dev/null
@@ -1,12 +0,0 @@
-/* Editor */
-.dijitRtl .tundra .dijitEditorIcon {
- background-image: url('images/editor_rtl.gif'); /* editor icons sprite image */
-}
-.dijitRtl .tundra .dijitDisabled .dijitEditorIcon {
- background-image: url('images/editorDisabled_rtl.gif'); /* editor icons sprite image */
-}
-
-/* Toolbar */
-.dijitRtl .tundra .dijitToolbar .dijitToolbarSeparator {
- background-image: url('images/editor_rtl.gif');
-}
diff --git a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/themes/tundra/Menu.css b/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/themes/tundra/Menu.css
deleted file mode 100644
index b91d869..0000000
--- a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/themes/tundra/Menu.css
+++ /dev/null
@@ -1,76 +0,0 @@
-.tundra .dijitMenu,
-.tundra .dijitMenuBar {
- border: 1px solid #7eabcd;
- margin: 0px;
- padding: 0px;
- background-color: #f7f7f7;
- /* background:#eaeaea url("images/titleBar.png") repeat-x top left; */
-}
-
-.tundra .dijitBorderContainer .dijitMenuBar {
- border:1px solid #ccc;
-}
-
-.tundra .dijitMenuItem {
- font-family: sans-serif;
- margin: 0;
-}
-
-.tundra .dijitMenuBar .dijitMenuItem {
- padding: 4px 5px;
-}
-
-.tundra .dijitMenuPreviousButton, .tundra .dijitMenuNextButton {
- font-style: italic;
-}
-.tundra .dijitMenuItem td {
- padding: 2px;
-}
-
-.tundra .dijitMenuPassive .dijitMenuItemHover,
-.tundra .dijitMenuItemSelected {
- background-color: #3559ac;
- color:#fff;
-}
-
-.tundra .dijitMenuItemIcon {
- width: 16px;
- height: 16px;
-}
-
-.tundra .dijitMenuExpand {
- width: 7px;
- height: 7px;
- background-image: url('images/spriteArrows.png');
- background-position: -14px 0px;
-}
-.dj_ie6 .tundra .dijitMenuExpand {
- background-image: url('images/spriteArrows.gif');
-}
-
-/* separator can be two pixels -- set border of either one to 0px to have only one */
-.tundra .dijitMenuSeparatorTop {
- border-bottom: 1px solid #9b9b9b;
-}
-
-.tundra .dijitMenuSeparatorBottom {
- border-top: 1px solid #e8e8e8;
-}
-
-/* the checked menu item */
-.tundra .dijitCheckedMenuItemIconChar {
- display: none;
-}
-
-.tundra .dijitCheckedMenuItemIcon {
- background-image: url('images/checkmark.png');
- background-position: -80px;
-}
-
-.dj_ie6 .tundra .dijitCheckedMenuItemIcon {
- background-image: url('images/checkmark.gif');
-}
-
-.tundra .dijitCheckedMenuItemChecked .dijitCheckedMenuItemIcon {
- background-position: -64px;
-}
\ No newline at end of file
diff --git a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/themes/tundra/Menu_rtl.css b/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/themes/tundra/Menu_rtl.css
deleted file mode 100644
index 917676b..0000000
--- a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/themes/tundra/Menu_rtl.css
+++ /dev/null
@@ -1,8 +0,0 @@
-.dijitRtl .tundra .dijitMenuItem .dijitMenuItemIcon {
- padding-left: 3px;
- padding-right: 0px;
-}
-
-.dijitRtl .tundra .dijitMenuItem .dijitMenuExpand {
- background-position: -7px 0px;
-}
\ No newline at end of file
diff --git a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/themes/tundra/ProgressBar.css b/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/themes/tundra/ProgressBar.css
deleted file mode 100644
index 5b8a118..0000000
--- a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/themes/tundra/ProgressBar.css
+++ /dev/null
@@ -1,28 +0,0 @@
-.tundra .dijitProgressBar {
- margin:2px 0px 2px 0px;
-}
-
-.tundra .dijitProgressBarEmpty {
- /* outer container and background of the bar that's not finished yet*/
- background:#fff url("images/progressBarEmpty.png") repeat-x center center;
- border-color: #a2a2a2 #b8b8b8 #b8b8b8 #a2a2a2;
-}
-
-.tundra .dijitProgressBarTile {
- /* inner container for finished portion when in 'tile' (image) mode */
- background:#f0f0f0 url("images/progressBarFull.png") repeat-x center center;
-}
-
-.tundra .dijitProgressBarFull {
- border-right:1px solid #b8b8b8;
-}
-
-.tundra .dijitProgressBarLabel {
- /* Set to a color that contrasts with both the "Empty" and "Full" parts. */
- color:#293a4b;
-}
-
-.tundra .dijitProgressBarIndeterminate .dijitProgressBarTile {
- /* use an animated gif for the progress bar in 'indeterminate' mode */
- background:#cad2de url("images/progressBarAnim.gif") repeat-x center center;
-}
diff --git a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/themes/tundra/TimePicker.css b/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/themes/tundra/TimePicker.css
deleted file mode 100644
index 307d45e..0000000
--- a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/themes/tundra/TimePicker.css
+++ /dev/null
@@ -1,62 +0,0 @@
-/* Time Picker */
-.tundra .dijitTimePickerTick,
-.tundra .dijitTimePickerMarker {
- border-color: #ccc;
-}
-
-.tundra .dijitTimePickerTick {
- color:white;
-}
-
-.tundra .dijitTimePickerMarker {
- background:#d3d3d3 url("images/titleBar.png") repeat-x top;
- color:#293a4b;
- font-weight: bold;
-}
-
-.tundra .dijitTimePickerItemSelected {
- color: black;
- background: #bbc4d0 none;
-}
-
-.tundra .dijitTimePickerItemHover {
- background: #60a1ea none;
- color:white;
-}
-
-.tundra .dijitTimePickerItemHover,
-.tundra .dijitTimePickerItemSelected {
- position: relative;
- z-index: 10;
-}
-
-.tundra .dijitTimePickerTick .dijitTimePickerItemInner {
- font-size:0.4em;
-}
-
-.tundra .dijitTimePickerItemHover .dijitTimePickerItemInner,
-.tundra .dijitTimePickerItemSelected .dijitTimePickerItemInner {
- font-size:1em;
-}
-
-.tundra .dijitTimePickerMarkerHover {
- border-top: 1px solid #ccc;
-}
-
-.tundra .dijitTimePickerTickHover,
-.tundra .dijitTimePickerTickSelected {
- margin-top:-0.3em;
- margin-bottom:-0.3em;
- border-bottom: none;
-}
-
-.dijit_a11y .dijitTimePickerTickHover {
- background-color: #CCC !important;
- border-top: 1px solid #333 !important;
- border-bottom: 1px solid #333 !important;
-}
-
-.dijit_a11y .dijitTimePickerMarkerHover {
- border-bottom-width: 2px;
-}
-
diff --git a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/themes/tundra/TitlePane.css b/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/themes/tundra/TitlePane.css
deleted file mode 100644
index 58c6bcd..0000000
--- a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/themes/tundra/TitlePane.css
+++ /dev/null
@@ -1,72 +0,0 @@
-.tundra .dijitTitlePaneTitle {
- background: #cccccc;
- background:#fff url("images/titleBar.png") repeat-x bottom left;
- border:1px solid #bfbfbf;
- padding:3px 4px;
-}
-.tundra .dijitTitlePaneTitle-hover {
- background: #f8fafd url("images/accordionItemHover.gif") bottom repeat-x;
- cursor: pointer;
-}
-
-.tundra .dijitTitlePaneTitle * {
- vertical-align: middle;
-}
-
-.tundra .dijitTitlePane .dijitOpen .dijitArrowNode,
-.tundra .dijitTitlePane .dijitClosed .dijitArrowNode {
- background-image: url('images/spriteArrows.png');
- background-repeat: no-repeat;
- height: 7px;
- width: 7px;
-}
-.dj_ie6 .tundra .dijitTitlePane .dijitArrowNode {
- background-image: url('images/spriteArrows.gif');
-}
-
-.tundra .dijitTitlePane .dijitOpen .dijitArrowNode {
- background-position: 0px 0px;
-}
-.tundra .dijitTitlePane .dijitClosed .dijitArrowNode {
- background-position: -14px 0px;
-}
-
-.tundra .dijitTitlePaneFocused .dijitTitlePaneTextNode {
- text-decoration:underline;
-}
-
-.tundra .dijitTitlePane .dijitArrowNodeInner {
- /* hide A11Y text in favor of icon */
- display:none;
-}
-
-.dijit_a11y .dijitTitlePane .dijitOpen .dijitArrowNodeInner,
-.dijit_a11y .dijitTitlePane .dijitClosed .dijitArrowNodeInner {
- display:inline !important;
- font-family:monospace;
- padding-bottom:.2em;
-}
-
-.dijit_a11y .dijitTitlePane .dijitArrowNode {
- /* except in a11y mode, then hide icon in favor of text */
- display:none;
-}
-
-.tundra .dijitTitlePaneContentOuter {
- background: #ffffff;
- border:1px solid #bfbfbf;
- border-top: 1px solid #ccc; /* w/out this, an <h1> on the top line causes a gap between the .content and .label */
-}
-.tundra .dijitTitlePaneContentInner {
- padding:10px;
-}
-/* force hasLayout to ensure borders etc, show up */
-.dj_ie6 .tundra .dijitTitlePaneContentOuter,
-.dj_ie6 .tundra .dijitTitlePane .dijitTitlePaneTitle {
- zoom: 1;
-}
-
-.tundra .dijitTitlePaneTextNode {
- margin-left: 4px;
- margin-right: 4px;
-}
\ No newline at end of file
diff --git a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/themes/tundra/TitlePane_rtl.css b/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/themes/tundra/TitlePane_rtl.css
deleted file mode 100644
index 1279d6c..0000000
--- a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/themes/tundra/TitlePane_rtl.css
+++ /dev/null
@@ -1,3 +0,0 @@
-.dijitRtl .tundra .dijitTitlePane .dijitClosed .dijitArrowNode {
- background-position: -7px 0px;
-}
\ No newline at end of file
diff --git a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/themes/tundra/Toolbar.css b/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/themes/tundra/Toolbar.css
deleted file mode 100644
index 007b8f3..0000000
--- a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/themes/tundra/Toolbar.css
+++ /dev/null
@@ -1,65 +0,0 @@
-.tundra .dijitToolbar {
- border-bottom: 1px solid #ccc;
- background:#eaeaea url("images/titleBar.png") repeat-x top left;
-}
-
-/* setting a min-height on ditor toolbar */
-.dj_ie6 .tundra .dijitToolbar {
- height: 10px;
-}
-
-.tundra .dijitToolbar .dijitButtonNode,
-.tundra .dijitToolbar .dijitComboButton .dijitButtonContents,
-.tundra .dijitToolbar .dijitComboButton .dijitDownArrowButton {
- background: none;
- margin: 0px;
- padding: 0px;
- border: none;
- font-size: 12px;
-}
-
-.tundra .dijitToolbar .dijitButton,
-.tundra .dijitToolbar .dijitToggleButton,
-.tundra .dijitToolbar .dijitDropDownButton,
-.tundra .dijitToolbar .dijitComboButton .dijitButtonContents,
-.tundra .dijitToolbar .dijitComboButton .dijitDownArrowButton {
- background: none;
- padding: 1px;
-}
-
-.tundra .dijitToolbar .dijitButtonChecked,
-.tundra .dijitToolbar .dijitToggleButtonChecked {
- background-color:#d4dff2;
- border:1px solid #316ac5;
- padding: 0px; /* reduce padding to compensate for space taken by border */
-}
-
-.tundra .dijitToolbar .dijitButtonCheckedHover,
-.tundra .dijitToolbar .dijitToggleButtonCheckedHover
- {
- background-color:#abc1e5;
- border:1px solid #316ac5;
- padding: 0px; /* reduce padding to compensate for space taken by border */
-}
-
-.tundra .dijitToolbar .dijitButtonHover,
-.tundra .dijitToolbar .dijitToggleButtonHover,
-.tundra .dijitToolbar .dijitDropDownButtonHover,
-.tundra .dijitToolbar .dijitComboButtonHover .dijitButtonContents,
-.tundra .dijitToolbar .dijitComboButtonDownArrowHover .dijitDownArrowButton {
- /* TODO: change this from Hover to Selected so that button is still highlighted while drop down is being used */
- border: 1px solid #869cbf;
- padding: 0px; /* reduce padding to compensate for space taken by border */
- background-color:#e1e5f0;
-}
-
-.tundra .dijitToolbar label {
- padding: 3px 3px 0 6px;
-}
-
-.dj_ie .tundra .dijitToolbar .dijitComboButton .dijitButtonContentsFocused,
-.dj_ie .tundra .dijitToolbar .dijitComboButton .dijitDownArrowButtonFocused {
- /* focus border doesn't appear on <td> for IE, so need to add it manually */
- border: 1px #555 dotted !important;
- padding: 0px;
-}
diff --git a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/themes/tundra/Tree.css b/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/themes/tundra/Tree.css
deleted file mode 100644
index 08426d7..0000000
--- a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/themes/tundra/Tree.css
+++ /dev/null
@@ -1,115 +0,0 @@
-
-/* Tree */
-
-.tundra .dijitTreeNode {
- background-image : url('images/i.gif');
- background-repeat : repeat-y;
- zoom: 1; /* force layout on IE (TODO: may not be needed anymore) */
-}
-
-/* left vertical line (grid) for all nodes */
-.tundra .dijitTreeIsLast {
- background: url('images/i_half.gif') no-repeat;
-}
-
-.tundra .dijitTreeIsRoot {
- margin-left: 0;
- background-image: none;
-}
-
-.tundra .dijitTreeExpando {
- width: 18px;
- height: 18px;
-}
-
-.tundra .dijitTreeRow {
- /* so insert line shows up on IE when dropping after a target element */
- padding-bottom: 2px;
-}
-
-.tundra .dijitTreeContent {
- min-height: 18px;
- min-width: 18px;
- }
-
-.tundra .dijitTreeExpand {
- width: 18px;
- height: 18px;
- background-repeat : no-repeat;
-}
-
-/* same style as IE selection */
-.tundra .dijitTreeNodeEmphasized {
- background-color: Highlight;
- color: HighlightText;
-}
-
-/* don't use :focus due to opera and IE's lack of support on div's */
-.tundra .dijitTreeLabelFocused {
- outline: 1px invert dotted;
-}
-.tundra .dijitTreeNodeSelected .dijitTreeLabel {
- background:#e2ebfe;
-}
-.tundra .dijitTreeNodeHover {
- /*background-color: #f6f9fa !important;*/
- /* using a transparent png so that we can still see grid lines, which are (unfortunately) behind the dijitRowNode that we are hovering over */
- background-image: url(images/treeHover.png);
- background-repeat: repeat;
- background-color: none !important;
-}
-
-
-.tundra .dijitTreeExpandoOpened {
- background-image: url('images/treeExpand_minus.gif');
-}
-
-.tundra .dijitTreeExpandoClosed {
- background-image: url('images/treeExpand_plus.gif');
-}
-
-.tundra .dijitTreeExpandoLeaf {
- background-image: url('images/treeExpand_leaf.gif');
-}
-
-.tundra .dijitTreeExpandoLoading {
- background-image: url('images/treeExpand_loading.gif');
-}
-
-.tundra .dijitTreeIcon {
- width: 16px;
- height: 16px;
-}
-
-.tundra .dijitFolderOpened {
- background: url('images/folderOpened.gif') no-repeat;
-}
-
-.tundra .dijitFolderClosed {
- background: url('images/folderClosed.gif') no-repeat;
-}
-
-.tundra .dijitLeaf {
- background: url('images/leaf.gif') no-repeat;
-}
-
-/* Drag and Drop on TreeNodes
- * Put insert line on dijitTreeContent node so it's aligned w/
- * (ie, indented equally with) target element, even
- * though dijitTreeRowNode is the actual "drag object"
- */
-.tundra .dijitTreeNode .dojoDndItemBefore,
-.tundra .dijitTreeNode .dojoDndItemAfter {
- border-bottom: none;
- border-top: none;
-}
-
-.tundra .dijitTreeNode .dojoDndItemBefore .dijitTreeContent {
- /* copied from Common.css */
- border-top: 2px solid #369;
-}
-
-.tundra .dijitTreeNode .dojoDndItemAfter .dijitTreeContent {
- /* copied from Common.css */
- border-bottom: 2px solid #369;
-}
diff --git a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/themes/tundra/Tree_rtl.css b/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/themes/tundra/Tree_rtl.css
deleted file mode 100644
index f5c1013..0000000
--- a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/themes/tundra/Tree_rtl.css
+++ /dev/null
@@ -1,17 +0,0 @@
-
-/* Tree */
-.dijitRtl .tundra .dijitTreeContainer .dijitTreeNode {
- background-image : none;
-}
-
-.dijitRtl .tundra .dijitTreeContainer .dijitTreeExpandoOpened {
- background-image: url('images/treeExpand_minus_rtl.gif');
-}
-
-.dijitRtl .tundra .dijitTreeContainer .dijitTreeExpandoClosed {
- background-image: url('images/treeExpand_plus_rtl.gif');
-}
-
-.dijitRtl .tundra .dijitTreeContainer .dijitTreeExpandoLeaf {
- background-image: none;
-}
diff --git a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/themes/tundra/form/Button.css b/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/themes/tundra/form/Button.css
deleted file mode 100644
index b0c806c..0000000
--- a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/themes/tundra/form/Button.css
+++ /dev/null
@@ -1,160 +0,0 @@
-
-/*****
- dijit.form.Button
- dijit.form.DropDownButton
- dijit.form.ComboButton
- dijit.form.ComboBox (partial)
- *****/
-
-.tundra .dijitButtonNode {
- /* enabled state - inner */
- border: 1px solid #c0c0c0;
- border-bottom: 1px solid #9b9b9b;
- padding: 0.1em 0.2em 0.2em 0.2em;
- background: #fff url("../images/buttonEnabled.png") repeat-x bottom left;
-}
-
-.tundra .dijitSelect .dijitButtonContents {
- border-right: none;
-}
-.dijitRtl .tundra .dijitSelect .dijitButtonContents {
- border-left: none;
- border-right-width: 1px;
-}
-
-.tundra .dijitButtonNode button {
- border: 0px;
- background-color: transparent;
-}
-
-.tundra .dijitButtonText {
- text-align: center;
- padding: 0 0.3em;
-}
-
-.tundra .dijitDisabled .dijitButtonText {
- color: #7F7F7F;
-}
-
-/*
-.tundra .dijitComboBox .dijitButtonNode {
- border: 0px;
-}
-*/
-
-.tundra .dijitArrowButton {
- color: #111;
-}
-
-.tundra .dijitComboButton .dijitDownArrowButton {
- padding-right:4px;
-}
-
-.tundra .dijitComboBoxReadOnly,
-.tundra .dijitSpinnerReadOnly,
-.tundra .dijitSpinnerReadOnly .dijitButtonNode,
-.tundra .dijitButtonDisabled .dijitButtonNode,
-.tundra .dijitToggleButtonDisabled .dijitButtonNode,
-.tundra .dijitDropDownButtonDisabled .dijitButtonNode,
-.tundra .dijitComboButtonDisabled .dijitButtonNode,
-.tundra .dijitComboBoxDisabled,
-.tundra .dijitSpinnerDisabled,
-.tundra .dijitSpinnerDisabled .dijitButtonNode {
- /* disabled state - inner */
- /* border-color: #d5d5d5 #bdbdbd #bdbdbd #d5d5d5; */
- border-color: #d5d5d5 #d5d5d5 #bdbdbd #d5d5d5;
- background:#e4e4e4 url("../images/buttonDisabled.png") top repeat-x;
-}
-
-.tundra .dijitButtonHover .dijitButtonNode,
-.tundra .dijitButtonNodeHover,
-.tundra .dijitToggleButtonHover .dijitButtonNode,
-.tundra .dijitDropDownButtonHover .dijitButtonNode,
-.tundra .dijitComboButtonHover .dijitButtonContents,
-.tundra .dijitComboButtonDownArrowHover .dijitArrowButton {
- /* hover state - inner */
- /* TODO: change from Hover to Selected so that button is still highlighted while drop down is being used */
- border-color: #a5beda;
- border-bottom-color:#5c7590;
- color:#243C5F;
- background:#fcfdff url("../images/buttonHover.png") repeat-x bottom;
-}
-.tundra .dijitComboBoxHover .dijitDownArrowButton,
-.tundra .dijitSpinnerUpArrowHover .dijitUpArrowButton,
-.tundra .dijitSpinnerDownArrowHover .dijitDownArrowButton {
- /* same as above except don't adjust border color (it's controlled by the containing Spinner/ComboBox) */
- color:#243C5F;
- background:#fcfdff url("../images/buttonHover.png") repeat-x bottom;
-}
-
-.tundra .dijitSpinnerUpArrowActive .dijitUpArrowButton,
-.tundra .dijitSpinnerDownArrowActive .dijitDownArrowButton,
-.tundra .dijitButtonActive .dijitButtonNode,
-.tundra .dijitToggleButtonActive .dijitButtonNode,
-.tundra .dijitDropDownButtonActive .dijitButtonNode,
-.tundra .dijitComboButtonActive .dijitButtonContents,
-.tundra .dijitDownArrowActive .dijitDownArrowButton,
-.tundra .dijitComboBoxActive .dijitDownArrowButton,
-.tundra .dijitStackController .dijitToggleButtonChecked .dijitButtonNode {
- /* active state - inner (for when you are pressing a normal button, or
- * when a radio-type button is in a depressed state
- */
- border-color:#366dba;
- background: #ededed url("../images/buttonActive.png") bottom repeat-x;
-}
-
-.tundra .dijitArrowButtonInner {
- background:url("../images/spriteArrows.png") no-repeat scroll 0px center;
- width: 7px;
- height: 7px;
- font-size: 1px;
- margin: 0px 4px 0px 5px;
-}
-.dj_ie6 .tundra .dijitArrowButtonInner {
- background-image:url("../images/spriteArrows.gif");
-}
-
-.tundra .dijitLeftArrowButton .dijitArrowButtonInner {
- background-position: -7px center;
-}
-.tundra .dijitRightArrowButton .dijitArrowButtonInner {
- background-position: -14px center;
-}
-.tundra .dijitUpArrowButton .dijitArrowButtonInner {
- background-position: -21px center;
-}
-
-.tundra .dijitDisabled .dijitArrowButtonInner {
- background-position: -28px center;
-}
-.tundra .dijitDisabled .dijitLeftArrowButton .dijitArrowButtonInner {
- background-position: -35px center;
-}
-.tundra .dijitDisabled .dijitRightArrowButton .dijitArrowButtonInner {
- background-position: -42px center;
-}
-.tundra .dijitDisabled .dijitUpArrowButton .dijitArrowButtonInner {
- background-position: -49px center;
-}
-
-
-/* Since ComboBox doesn't have it's own file... */
-.tundra .dijitComboBox .dijitArrowButton .dijitArrowButtonInner {
- height: auto;
- font-size: 100%;
- font-size: inherit;
-}
-.tundra .dijitComboBoxHover .dijitArrowButtonInner {
- /* TODO: url("../images/arrowDownHover.png") but in IE6 it flickers some? */
-}
-
-/* Since Spinner doesn't have it's own file */
-.tundra .dijitSpinner .dijitArrowButtonInner {
- display: block; /* inline just isnt going to work for us here IMO */
- position:absolute;
- top: 50%;
- margin-top: -4px; /* half its height */
- left: 50%;
- margin-left: -4px; /* half its width */
- line-height: 2px;
-}
diff --git a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/themes/tundra/form/Checkbox.css b/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/themes/tundra/form/Checkbox.css
deleted file mode 100644
index 5a93037..0000000
--- a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/themes/tundra/form/Checkbox.css
+++ /dev/null
@@ -1,54 +0,0 @@
-.tundra .dijitToggleButton .dijitCheckBoxIcon {
- background-image: url('../images/checkmarkNoBorder.png');
-}
-
-.dj_ie6 .tundra .dijitToggleButton .dijitCheckBoxIcon {
- background-image: url('../images/checkmarkNoBorder.gif');
-}
-
-.tundra .dijitCheckBox,
-.tundra .dijitCheckBoxIcon /* inside a toggle button */ {
- background-image: url('../images/checkmark.png'); /* checkbox sprite image */
- background-repeat: no-repeat;
- width: 16px;
- height: 16px;
- margin: 0 2px 0 0;
- padding: 0;
-}
-
-.dj_ie6 .tundra .dijitCheckBox,
-.dj_ie6 .tundra .dijitCheckBoxIcon /* inside a toggle button */ {
- background-image: url('../images/checkmark.gif'); /* checkbox sprite image */
-}
-
-.tundra .dijitCheckBox,
-.tundra .dijitToggleButton .dijitCheckBoxIcon {
- /* unchecked */
- background-position: -16px;
-}
-
-.tundra .dijitCheckBoxChecked,
-.tundra .dijitToggleButtonChecked .dijitCheckBoxIcon {
- /* checked */
- background-position: 0px;
-}
-
-.tundra .dijitCheckBoxDisabled {
- /* disabled */
- background-position: -48px;
-}
-
-.tundra .dijitCheckBoxCheckedDisabled {
- /* disabled but checked */
- background-position: -32px;
-}
-
-.tundra .dijitCheckBoxHover {
- /* hovering over an unchecked enabled checkbox */
- background-position: -80px;
-}
-
-.tundra .dijitCheckBoxCheckedHover {
- /* hovering over a checked enabled checkbox */
- background-position: -64px;
-}
diff --git a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/themes/tundra/form/Common.css b/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/themes/tundra/form/Common.css
deleted file mode 100644
index 7d5d1de..0000000
--- a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/themes/tundra/form/Common.css
+++ /dev/null
@@ -1,148 +0,0 @@
-
-/****
- dijit.form.TextBox
- dijit.form.ValidationTextBox
- dijit.form.SerializableTextBox
- dijit.form.RangeBoundTextBox
- dijit.form.NumberTextBox
- dijit.form.CurrencyTextBox
- dijit.form.NumberSpinner
- dijit.form.ComboBox (partial)
- ****/
-
-.tundra .dijitInputField INPUT,
-.tundra .dijitTextBox,
-.tundra .dijitComboBox,
-.tundra .dijitSpinner {
- margin: 0em 0.1em;
-}
-
-.tundra .dijitTextBox,
-.tundra .dijitComboBox,
-.tundra .dijitSpinner,
-.tundra .dijitTextArea {
- font-family: sans-serif;
- font-size: 100%;
-}
-
-.tundra .dijitTextArea {
- padding: 3px;
-}
-
-.tundra .dijitTextBox,
-.tundra .dijitComboBox,
-.tundra .dijitSpinner,
-.tundra .dijitTextArea,
-.tundra .dijitInlineEditor input {
- /* For all except dijit.form.NumberSpinner: the actual input element.
- For TextBox, ComboBox, Spinner: the div that contains the input.
- Otherwise the actual input element.
- */
- background:#fff url("../images/validationInputBg.png") repeat-x top left;
- #background:#fff url('../images/validationInputBg.gif') repeat-x top left;
- border:1px solid #b3b3b3;
- line-height: normal;
-}
-
-/* ComboBox specifix rules*/
-.tundra .dijitComboBox .dijitInputField {
- padding: 1px 0;
-}
-
-.tundra .dijitComboBox .dijitButtonNode {
- padding: 1px 0.2em;
-}
-.tundra .dijitComboBox .dijitButtonNode,
-.tundra .dijitSpinner .dijitButtonNode {
- /* line between the input area and the drop down button */
- border-color: #9b9b9b;
- border-width: 0px 0px 0px 1px;
- border-style: solid;
-}
-
-.tundra .dijitTextBoxFocused,
-.tundra .dijitComboBoxFocused,
-.tundra .dijitSpinnerFocused, .tundra .dijitSpinnerUpArrowActive, .tundra .dijitSpinnerDownArrowActive,
-.tundra .dijitTextAreaFocused {
- /* input field when focused (ie: typing affects it) */
- border-color:#406b9b;
-}
-.tundra .dijitComboBoxFocused .dijitButtonNode,
-.tundra .dijitSpinnerFocused .dijitButtonNode,
-.tundra .dijitSpinnerUpArrowActive .dijitButtonNode,
-.tundra .dijitSpinnerDownArrowActive .dijitButtonNode {
- border-left-color:#366dba;
-}
-.tundra .dijitSpinnerFocused .dijitDownArrowButton,
-.tundra .dijitSpinnerUpArrowActive .dijitDownArrowButton,
-.tundra .dijitSpinnerDownArrowActive .dijitDownArrowButton {
- border-top-color:#366dba;
-}
-
-.tundra .dijitError {
- background-color:#f9f7ba;
- background-image:none;
-}
-.dj_ie6 .tundra .dijitError INPUT {
- /* background-color: transparent on an <input> doesn't work on IE6 */
- background-color:#f9f7ba !important;
-}
-
-.tundra .dijitErrorFocused {
- background-color:#f9f999;
- background-image:none;
-}
-.dj_ie6 .tundra .dijitErrorFocused INPUT {
- /* background-color: transparent on an <input> doesn't work on IE6 */
- background-color:#f9f999 !important;
-}
-
-/* Validation errors */
-.tundra .dijitValidationIcon {
- /* prevent height change when widget goes from valid to invalid state */
- width: 16px;
- background: transparent url('../images/warning.png') no-repeat center center;
-}
-
-
-
-/* inline edit boxen */
-.tundra .dijitInlineValue {
- /* span around an inline-editable value when NOT in edit mode */
- padding:3px;
- margin:4px;
-}
-
-
-.tundra .dijitInlineEditor {
- /* fieldset surrounding an inlineEditor in edit mode */
- display: inline-block;
- #display:inline;
-}
-
-.dijitInlineEditor .saveButton,
-.dijitInlineEditor .cancelButton {
- margin:3px 3px 3px 0px;
-}
-
-.RichTextEditable {
- border:1px solid #bfbfbf;
- border-top:0;
-}
-
-/*
- * IE6: can't display PNG images with gradient transparency.
- * Want to use filter property for those images, but then need to specify a path relative
- * to the main page, rather than relative to this file... using gifs for now
- */
-
-/* The highlight is shown in the ComboBox menu. */
-.tundra .dijitComboBoxHighlightMatch {
- background-color:#a5beda;
-}
-
-
-.tundra .dijitFocusedLabel {
- /* for checkboxes or radio buttons, hatch border around the corresponding label, to indicate focus */
- outline: 1px dotted #666666;
-}
diff --git a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/themes/tundra/form/Common_rtl.css b/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/themes/tundra/form/Common_rtl.css
deleted file mode 100644
index 3438a0a..0000000
--- a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/themes/tundra/form/Common_rtl.css
+++ /dev/null
@@ -1,6 +0,0 @@
-.dijitRtl .tundra .dijitComboBox .dijitButtonNode,
-.dijitRtl .tundra .dijitSpinner .dijitButtonNode {
- /* line between the input area and the drop down button */
- border-left-width: 0px;
- border-right-width: 1px;
-}
\ No newline at end of file
diff --git a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/themes/tundra/form/RadioButton.css b/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/themes/tundra/form/RadioButton.css
deleted file mode 100644
index e87dc85..0000000
--- a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/themes/tundra/form/RadioButton.css
+++ /dev/null
@@ -1,54 +0,0 @@
-.tundra .dijitToggleButton .dijitRadio,
-.tundra .dijitToggleButton .dijitRadioIcon {
- background-image: url('../images/checkmarkNoBorder.png');
-}
-
-.dj_ie6 .tundra .dijitToggleButton .dijitRadio,
-.dj_ie6 .tundra .dijitToggleButton .dijitRadioIcon {
- background-image: url('../images/checkmarkNoBorder.gif');
-}
-
-.tundra .dijitRadio,
-.tundra .dijitRadioIcon { /* inside a toggle button */
- background-image: url('../images/checkmark.png'); /* checkbox sprite image */
- background-repeat: no-repeat;
- width: 16px;
- height: 16px;
- margin: 0;
- padding: 0;
-}
-
-.dj_ie6 .tundra .dijitRadio,
-.dj_ie6 .tundra .dijitRadioIcon { /* inside a toggle button */
- background-image: url('../images/checkmark.gif'); /* checkbox sprite image */
-}
-
-.tundra .dijitRadio,
-.tundra .dijitToggleButton .dijitRadioIcon {
- /* unselected */
- background-position: -112px;
-}
-
-.tundra .dijitRadioDisabled {
- /* unselected and disabled */
- background-position: -144px;
-}
-
-.tundra .dijitRadioHover {
- /* hovering over an unselected enabled radio button */
- background-position: -176px;
-}
-
-.tundra .dijitRadioChecked,
-.tundra .dijitRadioCheckedHover,
-.tundra .dijitToggleButtonChecked .dijitRadioIcon {
- /* selected. Since clicking a selected radio button doesn't change anything, there's
- * no hover effect on selected radio buttons.
- */
- background-position: -96px;
-}
-
-.tundra .dijitRadioCheckedDisabled {
- /* selected but disabled */
- background-position: -128px;
-}
diff --git a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/themes/tundra/form/Select.css b/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/themes/tundra/form/Select.css
deleted file mode 100644
index 1701ef8..0000000
--- a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/themes/tundra/form/Select.css
+++ /dev/null
@@ -1,64 +0,0 @@
-/* Cursor States */
-.tundra .dijitSelectDisabled * {
- cursor: not-allowed !important;
-}
-.tundra .dijitSelectReadOnly * {
- cursor: default !important;
-}
-.tundra .dijitSelect .dijitButtonNode {
- padding: 0px;
-}
-
-/* Make unselected content portion "look" more like a text box and less like a button */
-.tundra .dijitSelect .dijitButtonContents {
- padding-top: 1px;
- background:#fff url("../images/validationInputBg.png") repeat-x top left;
- #background:#fff url('../images/validationInputBg.gif') repeat-x top left;
-}
-.tundra .dijitSelectHover .dijitButtonContents,
-.tundra .dijitSelectActive .dijitButtonContents,
-.tundra .dijitSelectOpened .dijitButtonContents,
-.tundra .dijitSelectDisabled .dijitButtonContents,
-.tundra .dijitSelectReadOnly .dijitButtonContents{
- background: transparent none;
-}
-.dj_ie .tundra .dijitSelect .dijitButtonContents {
- padding-top: 0px;
-}
-
-/* Mirror DropDownButton */
-.tundra .dijitSelectDisabled .dijitButtonNode {
- border-color: #d5d5d5 #bdbdbd #bdbdbd #d5d5d5;
- background:#e4e4e4 url("../images/buttonDisabled.png") top repeat-x;
-}
-.dj_ie .tundra .dijitSelectDisabled .dijitButtonNode * {
- filter: gray() alpha(opacity=50);
-}
-
-.tundra .dijitSelectHover .dijitButtonNode {
- border-color:#a5beda;
- border-bottom-color:#5c7590;
- border-right-color:#5c7590;
- color:#243C5F;
- background:#fcfdff url("../images/buttonHover.png") repeat-x bottom;
-}
-
-.tundra .dijitSelectActive .dijitButtonNode,
-.tundra .dijitSelectOpened .dijitButtonNode {
- border-color:#366dba;
- background: #ededed url("../images/buttonActive.png") bottom repeat-x;
-}
-
-/* Make the menu look more combobox-like */
-.tundra .dijitSelectMenu td {
- padding: 0em;
-}
-.tundra .dijitSelectMenu .dijitMenuItemIcon {
- margin: 0.1em 0.2em;
- display: none;
-}
-.tundra .dijitSelectMenu .dijitMenuItemLabel,
-.tundra .dijitSelectMenu .dijitMenuArrowCell {
- padding: 0.1em 0.2em;
-}
-
diff --git a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/themes/tundra/form/Slider.css b/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/themes/tundra/form/Slider.css
deleted file mode 100644
index f07b3ff..0000000
--- a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/themes/tundra/form/Slider.css
+++ /dev/null
@@ -1,154 +0,0 @@
-.tundra .dijitSliderProgressBarH {
- border-color: #aab0bb;
- background: #c0c2c5 url("../images/sliderFull.png") repeat-x top left;
-}
-
-.tundra .dijitSliderProgressBarV {
- border-color: #aab0bb;
- background: #c0c2c5 url("../images/sliderFullVertical.png") repeat-y bottom left;
-}
-
-.tundra .dijitSliderFocused .dijitSliderProgressBarH,
-.tundra .dijitSliderFocused .dijitSliderLeftBumper {
- background-image:url("../images/sliderFullFocus.png");
-}
-
-.tundra .dijitSliderFocused .dijitSliderProgressBarV,
-.tundra .dijitSliderFocused .dijitSliderBottomBumper {
- background-image:url("../images/sliderFullVerticalFocus.png");
-}
-
-.tundra .dijitSliderRemainingBarV {
- border-color: #b4b4b4;
- background: #dcdcdc url("../images/sliderEmptyVertical.png") repeat-y bottom left;
-}
-
-.tundra .dijitSliderRemainingBarH {
- border-color: #b4b4b4;
- background: #dcdcdc url("../images/sliderEmpty.png") repeat-x top left;
-}
-
-.tundra .dijitSliderBar {
- border-style: solid;
- outline:1px;
-}
-.tundra .dijitSliderFocused .dijitSliderBar {
- border-color:#888;
-}
-
-.dijit_a11y .dijitSliderProgressBar {
- background-color:#888 !important;
-}
-
-.tundra .dijitSliderImageHandleH {
- border:0px;
- width:16px;
- height:16px;
- background:url("../images/preciseSliderThumb.png") no-repeat center top;
- cursor:pointer;
-}
-.tundra .dijitSliderFocused .dijitSliderImageHandleH {
- background-image:url("../images/preciseSliderThumbFocus.png");
- #background-image:url("../images/preciseSliderThumbFocus.gif");
-}
-
-.dj_ie6 .tundra .dijitSliderImageHandleH {
- background-image:url("../images/preciseSliderThumb.gif");
-}
-
-.tundra .dijitSliderLeftBumper {
- border-left-width: 1px;
- border-color: #aab0bb;
- background: #c0c2c5 url("../images/sliderFull.png") repeat-x top left;
-}
-
-.tundra .dijitSliderRightBumper {
- background: #dcdcdc url("../images/sliderEmpty.png") repeat-x top left;
- border-color: #b4b4b4;
- border-right-width: 1px;
-}
-
-.tundra .dijitSliderImageHandleV {
- border:0px;
- width:16px;
- height:16px;
- background:url("../images/sliderThumb.png") no-repeat center center;
- cursor:pointer;
-}
-
-.tundra .dijitSliderFocused .dijitSliderImageHandleV {
- background-image:url("../images/sliderThumbFocus.png");
-}
-.dj_ie6 .tundra .dijitSliderFocused .dijitSliderImageHandleV {
- background-image:url("../images/sliderThumbFocus.gif");
-}
-
-.tundra .dijitSliderBottomBumper {
- border-bottom-width: 1px;
- border-color: #aab0bb;
- background: #c0c2c5 url("../images/sliderFullVertical.png") repeat-y bottom left;
-}
-
-.tundra .dijitSliderTopBumper {
- background: #dcdcdc url("../images/sliderEmptyVertical.png") repeat-y top left;
- border-color: #b4b4b4;
- border-top-width: 1px;
-}
-
-.tundra .dijitSliderDecrementIconH,
-.tundra .dijitSliderDecrementIconV,
-.tundra .dijitSliderIncrementIconH,
-.tundra .dijitSliderIncrementIconV {
- cursor: pointer;
- background-image: url('../images/spriteArrows.png');
- background-repeat: no-repeat;
- margin: 5px;
- height: 7px;
- width: 7px;
- font-size: 1px;
-}
-.dj_ie6 .tundra .dijitSliderDecrementIconH,
-.dj_ie6 .tundra .dijitSliderDecrementIconV,
-.dj_ie6 .tundra .dijitSliderIncrementIconH,
-.dj_ie6 .tundra .dijitSliderIncrementIconV {
- background-image: url('../images/spriteArrows.gif');
-}
-
-.tundra .dijitSliderDecrementIconH {
- background-position: -7px 0px;
-}
-.tundra .dijitSliderIncrementIconH {
- background-position: -14px 0px;
-}
-.tundra .dijitSliderDecrementIconV {
- background-position: 0px 0px;
-}
-.tundra .dijitSliderIncrementIconV {
- background-position: -21px 0px;
-}
-
-.tundra .dijitSliderButtonInner {
- visibility:hidden;
-}
-
-.tundra .dijitSliderReadOnly *,
-.tundra .dijitSliderDisabled * {
- border-color: #d5d5d5 #bdbdbd #bdbdbd #d5d5d5;
- color: #bdbdbd;
-}
-.tundra .dijitSliderReadOnly .dijitSliderDecrementIconH,
-.tundra .dijitSliderDisabled .dijitSliderDecrementIconH {
- background-position: -35px 0px;
-}
-.tundra .dijitSliderReadOnly .dijitSliderIncrementIconH,
-.tundra .dijitSliderDisabled .dijitSliderIncrementIconH {
- background-position: -42px 0px;
-}
-.tundra .dijitSliderReadOnly .dijitSliderDecrementIconV,
-.tundra .dijitSliderDisabled .dijitSliderDecrementIconV {
- background-position: -28px 0px;
-}
-.tundra .dijitSliderReadOnly .dijitSliderIncrementIconV,
-.tundra .dijitSliderDisabled .dijitSliderIncrementIconV {
- background-position: -49px 0px;
-}
\ No newline at end of file
diff --git a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/themes/tundra/form/Slider_rtl.css b/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/themes/tundra/form/Slider_rtl.css
deleted file mode 100644
index 64bf95f..0000000
--- a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/themes/tundra/form/Slider_rtl.css
+++ /dev/null
@@ -1,31 +0,0 @@
-.dijitRtl .tundra .dijitSliderProgressBarH,
-.dijitRtl .tundra .dijitSliderRemainingBarH,
-.dijitRtl .tundra .dijitSliderLeftBumper,
-.dijitRtl .tundra .dijitSliderRightBumper,
-.dijitRtl .tundra .dijitSliderTopBumper {
- background-position: top right;
-}
-
-.dijitRtl .tundra .dijitSliderProgressBarV,
-.dijitRtl .tundra .dijitSliderRemainingBarV,
-.dijitRtl .tundra .dijitSliderBottomBumper {
- background-position: bottom right;
-}
-
-.dijitRtl .tundra .dijitSliderLeftBumper {
- border-left-width: 0px;
- border-right-width: 1px;
-}
-
-.dijitRtl .tundra .dijitSliderRightBumper {
- border-left-width: 1px;
- border-right-width: 0px;
-}
-
-.dijitRtl .tundra .dijitSliderIncrementIconH {
- background-position: -7px 0px;
-}
-
-.dijitRtl .tundra .dijitSliderDecrementIconH {
- background-position: -14px 0px;
-}
diff --git a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/themes/tundra/images/accordionItemActive.gif b/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/themes/tundra/images/accordionItemActive.gif
deleted file mode 100644
index ccff383..0000000
--- a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/themes/tundra/images/accordionItemActive.gif
+++ /dev/null
Binary files differ
diff --git a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/themes/tundra/images/accordionItemHover.gif b/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/themes/tundra/images/accordionItemHover.gif
deleted file mode 100644
index 96bd3a4..0000000
--- a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/themes/tundra/images/accordionItemHover.gif
+++ /dev/null
Binary files differ
diff --git a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/themes/tundra/images/buttonActive.png b/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/themes/tundra/images/buttonActive.png
deleted file mode 100644
index 09417b1..0000000
--- a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/themes/tundra/images/buttonActive.png
+++ /dev/null
Binary files differ
diff --git a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/themes/tundra/images/buttonDisabled.png b/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/themes/tundra/images/buttonDisabled.png
deleted file mode 100644
index 70766f4..0000000
--- a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/themes/tundra/images/buttonDisabled.png
+++ /dev/null
Binary files differ
diff --git a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/themes/tundra/images/buttonEnabled.png b/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/themes/tundra/images/buttonEnabled.png
deleted file mode 100644
index cf0eb20..0000000
--- a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/themes/tundra/images/buttonEnabled.png
+++ /dev/null
Binary files differ
diff --git a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/themes/tundra/images/buttonHover.png b/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/themes/tundra/images/buttonHover.png
deleted file mode 100644
index b074e4e..0000000
--- a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/themes/tundra/images/buttonHover.png
+++ /dev/null
Binary files differ
diff --git a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/themes/tundra/images/calendarDayLabel.png b/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/themes/tundra/images/calendarDayLabel.png
deleted file mode 100644
index c1a1553..0000000
--- a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/themes/tundra/images/calendarDayLabel.png
+++ /dev/null
Binary files differ
diff --git a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/themes/tundra/images/calendarMonthLabel.png b/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/themes/tundra/images/calendarMonthLabel.png
deleted file mode 100644
index fd2cf0a..0000000
--- a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/themes/tundra/images/calendarMonthLabel.png
+++ /dev/null
Binary files differ
diff --git a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/themes/tundra/images/calendarYearLabel.png b/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/themes/tundra/images/calendarYearLabel.png
deleted file mode 100644
index dd344f5..0000000
--- a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/themes/tundra/images/calendarYearLabel.png
+++ /dev/null
Binary files differ
diff --git a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/themes/tundra/images/checkmark.gif b/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/themes/tundra/images/checkmark.gif
deleted file mode 100644
index ae6faa9..0000000
--- a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/themes/tundra/images/checkmark.gif
+++ /dev/null
Binary files differ
diff --git a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/themes/tundra/images/checkmark.png b/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/themes/tundra/images/checkmark.png
deleted file mode 100644
index 0307109..0000000
--- a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/themes/tundra/images/checkmark.png
+++ /dev/null
Binary files differ
diff --git a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/themes/tundra/images/checkmarkNoBorder.gif b/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/themes/tundra/images/checkmarkNoBorder.gif
deleted file mode 100644
index 324bfb3..0000000
--- a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/themes/tundra/images/checkmarkNoBorder.gif
+++ /dev/null
Binary files differ
diff --git a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/themes/tundra/images/checkmarkNoBorder.png b/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/themes/tundra/images/checkmarkNoBorder.png
deleted file mode 100644
index 9cec0c0..0000000
--- a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/themes/tundra/images/checkmarkNoBorder.png
+++ /dev/null
Binary files differ
diff --git a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/themes/tundra/images/circleIcon.gif b/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/themes/tundra/images/circleIcon.gif
deleted file mode 100644
index d582290..0000000
--- a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/themes/tundra/images/circleIcon.gif
+++ /dev/null
Binary files differ
diff --git a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/themes/tundra/images/circleIcon.png b/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/themes/tundra/images/circleIcon.png
deleted file mode 100644
index 6f059e6..0000000
--- a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/themes/tundra/images/circleIcon.png
+++ /dev/null
Binary files differ
diff --git a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/themes/tundra/images/comboArrowDown.gif b/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/themes/tundra/images/comboArrowDown.gif
deleted file mode 100644
index e00a87b..0000000
--- a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/themes/tundra/images/comboArrowDown.gif
+++ /dev/null
Binary files differ
diff --git a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/themes/tundra/images/dijitProgressBarAnim.gif b/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/themes/tundra/images/dijitProgressBarAnim.gif
deleted file mode 100644
index 167a3e0..0000000
--- a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/themes/tundra/images/dijitProgressBarAnim.gif
+++ /dev/null
Binary files differ
diff --git a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/themes/tundra/images/dijitProgressBarAnim.psd b/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/themes/tundra/images/dijitProgressBarAnim.psd
deleted file mode 100644
index 0a7bf23..0000000
--- a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/themes/tundra/images/dijitProgressBarAnim.psd
+++ /dev/null
Binary files differ
diff --git a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/themes/tundra/images/dndCopy.png b/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/themes/tundra/images/dndCopy.png
deleted file mode 100644
index baecd7c..0000000
--- a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/themes/tundra/images/dndCopy.png
+++ /dev/null
Binary files differ
diff --git a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/themes/tundra/images/dndMove.png b/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/themes/tundra/images/dndMove.png
deleted file mode 100644
index 07f878c..0000000
--- a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/themes/tundra/images/dndMove.png
+++ /dev/null
Binary files differ
diff --git a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/themes/tundra/images/dndNoCopy.png b/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/themes/tundra/images/dndNoCopy.png
deleted file mode 100644
index 9bf9c33..0000000
--- a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/themes/tundra/images/dndNoCopy.png
+++ /dev/null
Binary files differ
diff --git a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/themes/tundra/images/dndNoMove.png b/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/themes/tundra/images/dndNoMove.png
deleted file mode 100644
index cb8bd8b..0000000
--- a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/themes/tundra/images/dndNoMove.png
+++ /dev/null
Binary files differ
diff --git a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/themes/tundra/images/dojoTundraGradientBg.gif b/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/themes/tundra/images/dojoTundraGradientBg.gif
deleted file mode 100644
index 0da1239..0000000
--- a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/themes/tundra/images/dojoTundraGradientBg.gif
+++ /dev/null
Binary files differ
diff --git a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/themes/tundra/images/dojoTundraGradientBg.png b/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/themes/tundra/images/dojoTundraGradientBg.png
deleted file mode 100644
index ac118dd..0000000
--- a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/themes/tundra/images/dojoTundraGradientBg.png
+++ /dev/null
Binary files differ
diff --git a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/themes/tundra/images/doubleArrowDown.png b/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/themes/tundra/images/doubleArrowDown.png
deleted file mode 100644
index 92678d2..0000000
--- a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/themes/tundra/images/doubleArrowDown.png
+++ /dev/null
Binary files differ
diff --git a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/themes/tundra/images/doubleArrowUp.png b/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/themes/tundra/images/doubleArrowUp.png
deleted file mode 100644
index bba30fe..0000000
--- a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/themes/tundra/images/doubleArrowUp.png
+++ /dev/null
Binary files differ
diff --git a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/themes/tundra/images/editor.gif b/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/themes/tundra/images/editor.gif
deleted file mode 100644
index 750c6b9..0000000
--- a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/themes/tundra/images/editor.gif
+++ /dev/null
Binary files differ
diff --git a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/themes/tundra/images/editorDisabled.gif b/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/themes/tundra/images/editorDisabled.gif
deleted file mode 100644
index e40460d..0000000
--- a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/themes/tundra/images/editorDisabled.gif
+++ /dev/null
Binary files differ
diff --git a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/themes/tundra/images/editorDisabled_rtl.gif b/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/themes/tundra/images/editorDisabled_rtl.gif
deleted file mode 100644
index a0f6c10..0000000
--- a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/themes/tundra/images/editorDisabled_rtl.gif
+++ /dev/null
Binary files differ
diff --git a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/themes/tundra/images/editorMaster.png b/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/themes/tundra/images/editorMaster.png
deleted file mode 100644
index 2e6772f..0000000
--- a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/themes/tundra/images/editorMaster.png
+++ /dev/null
Binary files differ
diff --git a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/themes/tundra/images/editor_rtl.gif b/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/themes/tundra/images/editor_rtl.gif
deleted file mode 100644
index a9740c2..0000000
--- a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/themes/tundra/images/editor_rtl.gif
+++ /dev/null
Binary files differ
diff --git a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/themes/tundra/images/folderClosed.gif b/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/themes/tundra/images/folderClosed.gif
deleted file mode 100644
index 9d5fcbc..0000000
--- a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/themes/tundra/images/folderClosed.gif
+++ /dev/null
Binary files differ
diff --git a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/themes/tundra/images/folderOpened.gif b/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/themes/tundra/images/folderOpened.gif
deleted file mode 100644
index a514c7b..0000000
--- a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/themes/tundra/images/folderOpened.gif
+++ /dev/null
Binary files differ
diff --git a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/themes/tundra/images/i.gif b/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/themes/tundra/images/i.gif
deleted file mode 100644
index ebd95a7..0000000
--- a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/themes/tundra/images/i.gif
+++ /dev/null
Binary files differ
diff --git a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/themes/tundra/images/i_half.gif b/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/themes/tundra/images/i_half.gif
deleted file mode 100644
index 2947c4f..0000000
--- a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/themes/tundra/images/i_half.gif
+++ /dev/null
Binary files differ
diff --git a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/themes/tundra/images/i_half_rtl.gif b/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/themes/tundra/images/i_half_rtl.gif
deleted file mode 100644
index 4f60ec4..0000000
--- a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/themes/tundra/images/i_half_rtl.gif
+++ /dev/null
Binary files differ
diff --git a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/themes/tundra/images/i_rtl.gif b/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/themes/tundra/images/i_rtl.gif
deleted file mode 100644
index 7dafaad..0000000
--- a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/themes/tundra/images/i_rtl.gif
+++ /dev/null
Binary files differ
diff --git a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/themes/tundra/images/leaf.gif b/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/themes/tundra/images/leaf.gif
deleted file mode 100644
index 85b0178..0000000
--- a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/themes/tundra/images/leaf.gif
+++ /dev/null
Binary files differ
diff --git a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/themes/tundra/images/loading.gif b/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/themes/tundra/images/loading.gif
deleted file mode 100644
index 6e7c8e5..0000000
--- a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/themes/tundra/images/loading.gif
+++ /dev/null
Binary files differ
diff --git a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/themes/tundra/images/menu.png b/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/themes/tundra/images/menu.png
deleted file mode 100644
index f5b93d1..0000000
--- a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/themes/tundra/images/menu.png
+++ /dev/null
Binary files differ
diff --git a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/themes/tundra/images/minusButton.gif b/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/themes/tundra/images/minusButton.gif
deleted file mode 100644
index 48d5172..0000000
--- a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/themes/tundra/images/minusButton.gif
+++ /dev/null
Binary files differ
diff --git a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/themes/tundra/images/no.gif b/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/themes/tundra/images/no.gif
deleted file mode 100644
index 9021a14..0000000
--- a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/themes/tundra/images/no.gif
+++ /dev/null
Binary files differ
diff --git a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/themes/tundra/images/noX.gif b/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/themes/tundra/images/noX.gif
deleted file mode 100644
index 4a16dc7..0000000
--- a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/themes/tundra/images/noX.gif
+++ /dev/null
Binary files differ
diff --git a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/themes/tundra/images/plusButton.gif b/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/themes/tundra/images/plusButton.gif
deleted file mode 100644
index 103c021..0000000
--- a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/themes/tundra/images/plusButton.gif
+++ /dev/null
Binary files differ
diff --git a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/themes/tundra/images/popupMenuBg.gif b/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/themes/tundra/images/popupMenuBg.gif
deleted file mode 100644
index 15f4f1b..0000000
--- a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/themes/tundra/images/popupMenuBg.gif
+++ /dev/null
Binary files differ
diff --git a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/themes/tundra/images/preciseSliderThumb.gif b/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/themes/tundra/images/preciseSliderThumb.gif
deleted file mode 100644
index 15d4879..0000000
--- a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/themes/tundra/images/preciseSliderThumb.gif
+++ /dev/null
Binary files differ
diff --git a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/themes/tundra/images/preciseSliderThumb.png b/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/themes/tundra/images/preciseSliderThumb.png
deleted file mode 100644
index f2fc338..0000000
--- a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/themes/tundra/images/preciseSliderThumb.png
+++ /dev/null
Binary files differ
diff --git a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/themes/tundra/images/preciseSliderThumbFocus.gif b/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/themes/tundra/images/preciseSliderThumbFocus.gif
deleted file mode 100644
index b44611c..0000000
--- a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/themes/tundra/images/preciseSliderThumbFocus.gif
+++ /dev/null
Binary files differ
diff --git a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/themes/tundra/images/preciseSliderThumbFocus.png b/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/themes/tundra/images/preciseSliderThumbFocus.png
deleted file mode 100644
index fb06323..0000000
--- a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/themes/tundra/images/preciseSliderThumbFocus.png
+++ /dev/null
Binary files differ
diff --git a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/themes/tundra/images/progressBarAnim-1.png b/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/themes/tundra/images/progressBarAnim-1.png
deleted file mode 100644
index cfc3fd2..0000000
--- a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/themes/tundra/images/progressBarAnim-1.png
+++ /dev/null
Binary files differ
diff --git a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/themes/tundra/images/progressBarAnim-2.png b/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/themes/tundra/images/progressBarAnim-2.png
deleted file mode 100644
index d27981d..0000000
--- a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/themes/tundra/images/progressBarAnim-2.png
+++ /dev/null
Binary files differ
diff --git a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/themes/tundra/images/progressBarAnim-3.png b/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/themes/tundra/images/progressBarAnim-3.png
deleted file mode 100644
index 3b92a7d..0000000
--- a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/themes/tundra/images/progressBarAnim-3.png
+++ /dev/null
Binary files differ
diff --git a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/themes/tundra/images/progressBarAnim-4.png b/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/themes/tundra/images/progressBarAnim-4.png
deleted file mode 100644
index 61e4276..0000000
--- a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/themes/tundra/images/progressBarAnim-4.png
+++ /dev/null
Binary files differ
diff --git a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/themes/tundra/images/progressBarAnim-5.png b/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/themes/tundra/images/progressBarAnim-5.png
deleted file mode 100644
index 48b189a..0000000
--- a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/themes/tundra/images/progressBarAnim-5.png
+++ /dev/null
Binary files differ
diff --git a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/themes/tundra/images/progressBarAnim-6.png b/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/themes/tundra/images/progressBarAnim-6.png
deleted file mode 100644
index af50c4d..0000000
--- a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/themes/tundra/images/progressBarAnim-6.png
+++ /dev/null
Binary files differ
diff --git a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/themes/tundra/images/progressBarAnim-7.png b/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/themes/tundra/images/progressBarAnim-7.png
deleted file mode 100644
index a4fffa3..0000000
--- a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/themes/tundra/images/progressBarAnim-7.png
+++ /dev/null
Binary files differ
diff --git a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/themes/tundra/images/progressBarAnim-8.png b/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/themes/tundra/images/progressBarAnim-8.png
deleted file mode 100644
index b4c92f3..0000000
--- a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/themes/tundra/images/progressBarAnim-8.png
+++ /dev/null
Binary files differ
diff --git a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/themes/tundra/images/progressBarAnim-9.png b/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/themes/tundra/images/progressBarAnim-9.png
deleted file mode 100644
index d8bff13..0000000
--- a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/themes/tundra/images/progressBarAnim-9.png
+++ /dev/null
Binary files differ
diff --git a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/themes/tundra/images/progressBarAnim.gif b/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/themes/tundra/images/progressBarAnim.gif
deleted file mode 100644
index d3df139..0000000
--- a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/themes/tundra/images/progressBarAnim.gif
+++ /dev/null
Binary files differ
diff --git a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/themes/tundra/images/progressBarAnim.psd b/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/themes/tundra/images/progressBarAnim.psd
deleted file mode 100644
index 0a7bf23..0000000
--- a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/themes/tundra/images/progressBarAnim.psd
+++ /dev/null
Binary files differ
diff --git a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/themes/tundra/images/progressBarEmpty.png b/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/themes/tundra/images/progressBarEmpty.png
deleted file mode 100644
index 07f4c91..0000000
--- a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/themes/tundra/images/progressBarEmpty.png
+++ /dev/null
Binary files differ
diff --git a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/themes/tundra/images/progressBarFull.png b/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/themes/tundra/images/progressBarFull.png
deleted file mode 100644
index 0ce60f5..0000000
--- a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/themes/tundra/images/progressBarFull.png
+++ /dev/null
Binary files differ
diff --git a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/themes/tundra/images/radioButtonActive.png b/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/themes/tundra/images/radioButtonActive.png
deleted file mode 100644
index 60840c7..0000000
--- a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/themes/tundra/images/radioButtonActive.png
+++ /dev/null
Binary files differ
diff --git a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/themes/tundra/images/radioButtonActiveDisabled.png b/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/themes/tundra/images/radioButtonActiveDisabled.png
deleted file mode 100644
index b49724e..0000000
--- a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/themes/tundra/images/radioButtonActiveDisabled.png
+++ /dev/null
Binary files differ
diff --git a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/themes/tundra/images/radioButtonActiveHover.png b/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/themes/tundra/images/radioButtonActiveHover.png
deleted file mode 100644
index f21d4e5..0000000
--- a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/themes/tundra/images/radioButtonActiveHover.png
+++ /dev/null
Binary files differ
diff --git a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/themes/tundra/images/radioButtonDisabled.png b/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/themes/tundra/images/radioButtonDisabled.png
deleted file mode 100644
index 8da7e78..0000000
--- a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/themes/tundra/images/radioButtonDisabled.png
+++ /dev/null
Binary files differ
diff --git a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/themes/tundra/images/radioButtonEnabled.png b/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/themes/tundra/images/radioButtonEnabled.png
deleted file mode 100644
index 4342fea..0000000
--- a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/themes/tundra/images/radioButtonEnabled.png
+++ /dev/null
Binary files differ
diff --git a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/themes/tundra/images/radioButtonHover.png b/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/themes/tundra/images/radioButtonHover.png
deleted file mode 100644
index fcb697f..0000000
--- a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/themes/tundra/images/radioButtonHover.png
+++ /dev/null
Binary files differ
diff --git a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/themes/tundra/images/sliderEmpty.png b/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/themes/tundra/images/sliderEmpty.png
deleted file mode 100644
index 070c12f..0000000
--- a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/themes/tundra/images/sliderEmpty.png
+++ /dev/null
Binary files differ
diff --git a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/themes/tundra/images/sliderEmptyVertical.png b/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/themes/tundra/images/sliderEmptyVertical.png
deleted file mode 100644
index 45aceb7..0000000
--- a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/themes/tundra/images/sliderEmptyVertical.png
+++ /dev/null
Binary files differ
diff --git a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/themes/tundra/images/sliderFull.png b/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/themes/tundra/images/sliderFull.png
deleted file mode 100644
index 4b3fcbb..0000000
--- a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/themes/tundra/images/sliderFull.png
+++ /dev/null
Binary files differ
diff --git a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/themes/tundra/images/sliderFullFocus.png b/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/themes/tundra/images/sliderFullFocus.png
deleted file mode 100644
index ee19356..0000000
--- a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/themes/tundra/images/sliderFullFocus.png
+++ /dev/null
Binary files differ
diff --git a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/themes/tundra/images/sliderFullVertical.png b/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/themes/tundra/images/sliderFullVertical.png
deleted file mode 100644
index e7618e8..0000000
--- a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/themes/tundra/images/sliderFullVertical.png
+++ /dev/null
Binary files differ
diff --git a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/themes/tundra/images/sliderFullVerticalFocus.png b/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/themes/tundra/images/sliderFullVerticalFocus.png
deleted file mode 100644
index 3ab37e6..0000000
--- a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/themes/tundra/images/sliderFullVerticalFocus.png
+++ /dev/null
Binary files differ
diff --git a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/themes/tundra/images/sliderThumb.png b/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/themes/tundra/images/sliderThumb.png
deleted file mode 100644
index fe33583..0000000
--- a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/themes/tundra/images/sliderThumb.png
+++ /dev/null
Binary files differ
diff --git a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/themes/tundra/images/sliderThumbFocus.gif b/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/themes/tundra/images/sliderThumbFocus.gif
deleted file mode 100644
index 15dd3d9..0000000
--- a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/themes/tundra/images/sliderThumbFocus.gif
+++ /dev/null
Binary files differ
diff --git a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/themes/tundra/images/sliderThumbFocus.png b/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/themes/tundra/images/sliderThumbFocus.png
deleted file mode 100644
index fe9763a..0000000
--- a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/themes/tundra/images/sliderThumbFocus.png
+++ /dev/null
Binary files differ
diff --git a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/themes/tundra/images/smallArrowDown.png b/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/themes/tundra/images/smallArrowDown.png
deleted file mode 100644
index cabd01c..0000000
--- a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/themes/tundra/images/smallArrowDown.png
+++ /dev/null
Binary files differ
diff --git a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/themes/tundra/images/smallArrowUp.png b/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/themes/tundra/images/smallArrowUp.png
deleted file mode 100644
index a4dd670..0000000
--- a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/themes/tundra/images/smallArrowUp.png
+++ /dev/null
Binary files differ
diff --git a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/themes/tundra/images/splitContainerSizerH-thumb.png b/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/themes/tundra/images/splitContainerSizerH-thumb.png
deleted file mode 100644
index e7bc204..0000000
--- a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/themes/tundra/images/splitContainerSizerH-thumb.png
+++ /dev/null
Binary files differ
diff --git a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/themes/tundra/images/splitContainerSizerH.png b/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/themes/tundra/images/splitContainerSizerH.png
deleted file mode 100644
index 0e5e471..0000000
--- a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/themes/tundra/images/splitContainerSizerH.png
+++ /dev/null
Binary files differ
diff --git a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/themes/tundra/images/splitContainerSizerV-thumb.png b/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/themes/tundra/images/splitContainerSizerV-thumb.png
deleted file mode 100644
index 410a0a7..0000000
--- a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/themes/tundra/images/splitContainerSizerV-thumb.png
+++ /dev/null
Binary files differ
diff --git a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/themes/tundra/images/splitContainerSizerV.png b/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/themes/tundra/images/splitContainerSizerV.png
deleted file mode 100644
index 6781f0e..0000000
--- a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/themes/tundra/images/splitContainerSizerV.png
+++ /dev/null
Binary files differ
diff --git a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/themes/tundra/images/spriteArrows.gif b/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/themes/tundra/images/spriteArrows.gif
deleted file mode 100644
index 56a37f4..0000000
--- a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/themes/tundra/images/spriteArrows.gif
+++ /dev/null
Binary files differ
diff --git a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/themes/tundra/images/spriteArrows.png b/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/themes/tundra/images/spriteArrows.png
deleted file mode 100644
index e0229c9..0000000
--- a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/themes/tundra/images/spriteArrows.png
+++ /dev/null
Binary files differ
diff --git a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/themes/tundra/images/spriteRoundedIconsSmall.gif b/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/themes/tundra/images/spriteRoundedIconsSmall.gif
deleted file mode 100644
index 251389a..0000000
--- a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/themes/tundra/images/spriteRoundedIconsSmall.gif
+++ /dev/null
Binary files differ
diff --git a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/themes/tundra/images/spriteRoundedIconsSmall.png b/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/themes/tundra/images/spriteRoundedIconsSmall.png
deleted file mode 100644
index e81ba07..0000000
--- a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/themes/tundra/images/spriteRoundedIconsSmall.png
+++ /dev/null
Binary files differ
diff --git a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/themes/tundra/images/tabActive.png b/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/themes/tundra/images/tabActive.png
deleted file mode 100644
index eaf1ed4..0000000
--- a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/themes/tundra/images/tabActive.png
+++ /dev/null
Binary files differ
diff --git a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/themes/tundra/images/tabClose.gif b/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/themes/tundra/images/tabClose.gif
deleted file mode 100644
index 2cb0ee1..0000000
--- a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/themes/tundra/images/tabClose.gif
+++ /dev/null
Binary files differ
diff --git a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/themes/tundra/images/tabClose.png b/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/themes/tundra/images/tabClose.png
deleted file mode 100644
index 136cd22..0000000
--- a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/themes/tundra/images/tabClose.png
+++ /dev/null
Binary files differ
diff --git a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/themes/tundra/images/tabCloseHover.gif b/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/themes/tundra/images/tabCloseHover.gif
deleted file mode 100644
index f59471e..0000000
--- a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/themes/tundra/images/tabCloseHover.gif
+++ /dev/null
Binary files differ
diff --git a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/themes/tundra/images/tabCloseHover.png b/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/themes/tundra/images/tabCloseHover.png
deleted file mode 100644
index 290e77f..0000000
--- a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/themes/tundra/images/tabCloseHover.png
+++ /dev/null
Binary files differ
diff --git a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/themes/tundra/images/tabDisabled.png b/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/themes/tundra/images/tabDisabled.png
deleted file mode 100644
index ea0f617..0000000
--- a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/themes/tundra/images/tabDisabled.png
+++ /dev/null
Binary files differ
diff --git a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/themes/tundra/images/tabEnabled.png b/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/themes/tundra/images/tabEnabled.png
deleted file mode 100644
index d40cf45..0000000
--- a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/themes/tundra/images/tabEnabled.png
+++ /dev/null
Binary files differ
diff --git a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/themes/tundra/images/tabHover.gif b/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/themes/tundra/images/tabHover.gif
deleted file mode 100644
index 471e0ee..0000000
--- a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/themes/tundra/images/tabHover.gif
+++ /dev/null
Binary files differ
diff --git a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/themes/tundra/images/tabHover.png b/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/themes/tundra/images/tabHover.png
deleted file mode 100644
index 16487f1..0000000
--- a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/themes/tundra/images/tabHover.png
+++ /dev/null
Binary files differ
diff --git a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/themes/tundra/images/titleBar.png b/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/themes/tundra/images/titleBar.png
deleted file mode 100644
index b2609f3..0000000
--- a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/themes/tundra/images/titleBar.png
+++ /dev/null
Binary files differ
diff --git a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/themes/tundra/images/titleBarBg.gif b/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/themes/tundra/images/titleBarBg.gif
deleted file mode 100644
index 1cd57cf..0000000
--- a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/themes/tundra/images/titleBarBg.gif
+++ /dev/null
Binary files differ
diff --git a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/themes/tundra/images/tooltipConnectorDown.gif b/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/themes/tundra/images/tooltipConnectorDown.gif
deleted file mode 100644
index 18b2795..0000000
--- a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/themes/tundra/images/tooltipConnectorDown.gif
+++ /dev/null
Binary files differ
diff --git a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/themes/tundra/images/tooltipConnectorDown.png b/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/themes/tundra/images/tooltipConnectorDown.png
deleted file mode 100644
index 1aff5a3..0000000
--- a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/themes/tundra/images/tooltipConnectorDown.png
+++ /dev/null
Binary files differ
diff --git a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/themes/tundra/images/tooltipConnectorLeft.gif b/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/themes/tundra/images/tooltipConnectorLeft.gif
deleted file mode 100644
index 3d9cbc5..0000000
--- a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/themes/tundra/images/tooltipConnectorLeft.gif
+++ /dev/null
Binary files differ
diff --git a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/themes/tundra/images/tooltipConnectorLeft.png b/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/themes/tundra/images/tooltipConnectorLeft.png
deleted file mode 100644
index e68fec3..0000000
--- a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/themes/tundra/images/tooltipConnectorLeft.png
+++ /dev/null
Binary files differ
diff --git a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/themes/tundra/images/tooltipConnectorRight.gif b/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/themes/tundra/images/tooltipConnectorRight.gif
deleted file mode 100644
index 2b887f7..0000000
--- a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/themes/tundra/images/tooltipConnectorRight.gif
+++ /dev/null
Binary files differ
diff --git a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/themes/tundra/images/tooltipConnectorRight.png b/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/themes/tundra/images/tooltipConnectorRight.png
deleted file mode 100644
index dc2434a..0000000
--- a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/themes/tundra/images/tooltipConnectorRight.png
+++ /dev/null
Binary files differ
diff --git a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/themes/tundra/images/tooltipConnectorUp.gif b/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/themes/tundra/images/tooltipConnectorUp.gif
deleted file mode 100644
index d0cad8a..0000000
--- a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/themes/tundra/images/tooltipConnectorUp.gif
+++ /dev/null
Binary files differ
diff --git a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/themes/tundra/images/tooltipConnectorUp.png b/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/themes/tundra/images/tooltipConnectorUp.png
deleted file mode 100644
index 55a378b..0000000
--- a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/themes/tundra/images/tooltipConnectorUp.png
+++ /dev/null
Binary files differ
diff --git a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/themes/tundra/images/treeExpand_leaf.gif b/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/themes/tundra/images/treeExpand_leaf.gif
deleted file mode 100644
index 4b1c6c1..0000000
--- a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/themes/tundra/images/treeExpand_leaf.gif
+++ /dev/null
Binary files differ
diff --git a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/themes/tundra/images/treeExpand_leaf_rtl.gif b/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/themes/tundra/images/treeExpand_leaf_rtl.gif
deleted file mode 100644
index b563d7c..0000000
--- a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/themes/tundra/images/treeExpand_leaf_rtl.gif
+++ /dev/null
Binary files differ
diff --git a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/themes/tundra/images/treeExpand_loading.gif b/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/themes/tundra/images/treeExpand_loading.gif
deleted file mode 100644
index 424d376..0000000
--- a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/themes/tundra/images/treeExpand_loading.gif
+++ /dev/null
Binary files differ
diff --git a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/themes/tundra/images/treeExpand_minus.gif b/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/themes/tundra/images/treeExpand_minus.gif
deleted file mode 100644
index 5977782..0000000
--- a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/themes/tundra/images/treeExpand_minus.gif
+++ /dev/null
Binary files differ
diff --git a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/themes/tundra/images/treeExpand_minus_rtl.gif b/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/themes/tundra/images/treeExpand_minus_rtl.gif
deleted file mode 100644
index cf50054..0000000
--- a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/themes/tundra/images/treeExpand_minus_rtl.gif
+++ /dev/null
Binary files differ
diff --git a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/themes/tundra/images/treeExpand_mius.gif b/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/themes/tundra/images/treeExpand_mius.gif
deleted file mode 100644
index 5977782..0000000
--- a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/themes/tundra/images/treeExpand_mius.gif
+++ /dev/null
Binary files differ
diff --git a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/themes/tundra/images/treeExpand_plus.gif b/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/themes/tundra/images/treeExpand_plus.gif
deleted file mode 100644
index 2b96a55..0000000
--- a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/themes/tundra/images/treeExpand_plus.gif
+++ /dev/null
Binary files differ
diff --git a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/themes/tundra/images/treeExpand_plus_rtl.gif b/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/themes/tundra/images/treeExpand_plus_rtl.gif
deleted file mode 100644
index 11f9916..0000000
--- a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/themes/tundra/images/treeExpand_plus_rtl.gif
+++ /dev/null
Binary files differ
diff --git a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/themes/tundra/images/treeHover.png b/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/themes/tundra/images/treeHover.png
deleted file mode 100644
index cd6d28b..0000000
--- a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/themes/tundra/images/treeHover.png
+++ /dev/null
Binary files differ
diff --git a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/themes/tundra/images/validationInputBg.gif b/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/themes/tundra/images/validationInputBg.gif
deleted file mode 100644
index 5a9916a..0000000
--- a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/themes/tundra/images/validationInputBg.gif
+++ /dev/null
Binary files differ
diff --git a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/themes/tundra/images/validationInputBg.png b/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/themes/tundra/images/validationInputBg.png
deleted file mode 100644
index d222fb4..0000000
--- a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/themes/tundra/images/validationInputBg.png
+++ /dev/null
Binary files differ
diff --git a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/themes/tundra/images/warning.png b/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/themes/tundra/images/warning.png
deleted file mode 100644
index c52f83d..0000000
--- a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/themes/tundra/images/warning.png
+++ /dev/null
Binary files differ
diff --git a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/themes/tundra/layout/AccordionContainer.css b/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/themes/tundra/layout/AccordionContainer.css
deleted file mode 100644
index 0d65c0c..0000000
--- a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/themes/tundra/layout/AccordionContainer.css
+++ /dev/null
@@ -1,28 +0,0 @@
-/* Accordion */
-
-.tundra .dijitAccordionContainer {
- border-color: #ccc;
- background-color: #fff;
-}
-
-/* common */
-
-.tundra .dijitAccordionTitle {
- background:#fafafa url("../images/titleBar.png") repeat-x bottom left;
- border-top: 1px solid #bfbfbf;
- padding: 4px 4px 4px 8px;
- cursor:pointer;
-}
-
-.tundra .dijitAccordionTitle-hover {
- background: #f8fafd url("../images/accordionItemHover.gif") bottom repeat-x;
-}
-
-.tundra .dijitAccordionTitle-selected {
- background: #f9f9f9 url("../images/accordionItemActive.gif") bottom repeat-x;
- font-weight: bold;
- border-top: 1px solid #aaaaaa;
- border-bottom: 1px solid #bfbfbf;
- padding: 4px 4px 4px 8px;
- cursor: default;
-}
\ No newline at end of file
diff --git a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/themes/tundra/layout/BorderContainer.css b/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/themes/tundra/layout/BorderContainer.css
deleted file mode 100644
index 0057fcb..0000000
--- a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/themes/tundra/layout/BorderContainer.css
+++ /dev/null
@@ -1,69 +0,0 @@
-/* BorderContainer */
-
-.tundra .dijitBorderContainer {
- background-color: #fcfcfc;
- padding: 5px;
-}
-
-.tundra .dijitSplitContainer-child,
-.tundra .dijitBorderContainer-child {
- /* By default put borders on all children of BorderContainer,
- * to give illusion of borders on the splitters themselves.
- */
- border: 1px #ccc solid;
-}
-
-.tundra .dijitBorderContainer-dijitTabContainerTop,
-.tundra .dijitBorderContainer-dijitTabContainerBottom,
-.tundra .dijitBorderContainer-dijitTabContainerLeft,
-.tundra .dijitBorderContainer-dijitTabContainerRight {
- /* except that TabContainer defines borders on it's sub-nodes (tablist and dijitTabPaneWrapper),
- * so override rule setting border on domNode
- */
- border: none;
-}
-
-.tundra .dijitBorderContainer-dijitBorderContainer {
- /* also, make nested BorderContainers look like a single big widget with lots of splitters */
- border: none;
- padding: 0px;
-}
-
-.tundra .dijitSplitterH,
-.tundra .dijitGutterH {
- background:#fcfcfc;
- border:0;
- height:5px;
-}
-
-.tundra .dijitSplitterH .dijitSplitterThumb {
- background:#B0B0B0 none;
- height:1px;
- top:2px;
- width:19px;
-}
-
-.tundra .dijitSplitterV,
-.tundra .dijitGutterV {
- background:#fcfcfc;
- border:0;
- width:5px;
-}
-
-.tundra .dijitSplitterV .dijitSplitterThumb {
- background:#B0B0B0 none;
- height:19px;
- left:2px;
- width:1px;
-}
-
-/* active splitter */
-.tundra .dijitSplitterActive {
- font-size: 1px;
- background-image: none;
- background-color: #aaa;
- -moz-opacity: 0.6;
- opacity: 0.6;
- filter: Alpha(Opacity=60);
- margin: 0;
-}
diff --git a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/themes/tundra/layout/ContentPane.css b/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/themes/tundra/layout/ContentPane.css
deleted file mode 100644
index 27d8fb9..0000000
--- a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/themes/tundra/layout/ContentPane.css
+++ /dev/null
@@ -1,21 +0,0 @@
-/* ContentPane */
-
-.tundra .dijitContentPane {
- padding: 0px;
-}
-
-/* nested layouts */
-.tundra .dijitTabContainerTop-dijitContentPane,
-.tundra .dijitTabContainerLeft-dijitContentPane,
-.tundra .dijitTabContainerBottom-dijitContentPane,
-.tundra .dijitTabContainerRight-dijitContentPane,
-.tundra .dijitAccordionContainer-dijitContentPane {
- background-color: #fff;
- padding: 5px;
-}
-
-.tundra .dijitSplitContainer-dijitContentPane,
-.tundra .dijitBorderContainer-dijitContentPane {
- background-color: #fff; /* override background-color setting on parent .dijitBorderContainer */
- padding: 5px;
-}
\ No newline at end of file
diff --git a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/themes/tundra/layout/SplitContainer.css b/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/themes/tundra/layout/SplitContainer.css
deleted file mode 100644
index a1e8723..0000000
--- a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/themes/tundra/layout/SplitContainer.css
+++ /dev/null
@@ -1,35 +0,0 @@
-.tundra .dijitSplitContainerSizerH {
- background:url("../images/splitContainerSizerV.png") repeat-y #fff;
- border:0;
- border-left:1px solid #bfbfbf;
- border-right:1px solid #bfbfbf;
- width:7px;
-}
-
-.tundra .dijitSplitContainerSizerH .thumb {
- background:url("../images/splitContainerSizerV-thumb.png") no-repeat #ccc;
- left:1px;
- width:3px;
- height:19px;
- overflow: hidden;
-}
-
-.tundra .dijitSplitContainerSizerV {
- background:url("../images/splitContainerSizerH.png") repeat-x #fff;
- border:0;
- border-top:1px solid #bfbfbf;
- border-bottom:1px solid #bfbfbf;
- height:7px;
-}
-
-.tundra .dijitSplitContainerSizerV .thumb {
- background:url("../images/splitContainerSizerH-thumb.png") no-repeat #ccc;
- top:1px;
- width:19px;
- height:3px;
- overflow: hidden;
-}
-
-.tundra .dijitSplitter {
- border-color: #bfbfbf;
-}
\ No newline at end of file
diff --git a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/themes/tundra/layout/TabContainer.css b/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/themes/tundra/layout/TabContainer.css
deleted file mode 100644
index 187add8..0000000
--- a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/themes/tundra/layout/TabContainer.css
+++ /dev/null
@@ -1,360 +0,0 @@
-/* Tabs, shared classes */
-.tundra .dijitTabPaneWrapper {
- background:#fff;
- border:1px solid #ccc;
- margin: 0;
- padding: 0;
-}
-
-.tundra .dijitTab {
- line-height:normal;
- margin-right:4px; /* space between one tab and the next in top/bottom mode */
- padding:0px;
- border:1px solid #ccc;
- background:#e2e2e2 url("../images/tabEnabled.png") repeat-x;
-}
-
-.tundra .dijitTabInnerDiv {
- padding:2px 8px 2px 9px;
-}
-
-.tundra .dijitTabSpacer {
- display: none;
-}
-
-.tundra .dijitTabContainer .tabStripRBtn {
- margin-right: 20px;
-}
-.tundra .dijitTabContainer .tabStripLBtn {
- margin-left: 20px;
-}
-
-.tundra .nowrapTabStrip .dijitTab {
- top: 2px;
-}
-.tundra .dijitTabContainerBottom .nowrapTabStrip .dijitTab {
- top: 0px;
- bottom: 2px;
-}
-
-.tundra .dijitTabContainer .tabStripMenuButton-Hover {
- cursor: pointer;
-}
-
-/* checked tab*/
-.tundra .dijitTabChecked {
- /* the selected tab (with or without hover) */
- background-color:#fff;
- border-color: #ccc;
- background-image:none;
-}
-
-/* hovered tab */
-.tundra .dijitTabHover {
- color: #243C5F;
- border-top-color:#92a0b3;
- border-left-color:#92a0b3;
- border-right-color:#92a0b3;
- border-bottom-color:#92a0b3;
- background:#e2e2e2 url("../images/tabHover.gif") repeat-x;
-}
-
-.tundra .dijitTabContainerTop .dijitTabHover {
- border-bottom-color:#ccc;
-}
-
-.tundra .dijitTabContainerBottom .dijitTabHover {
- border-top-color:#ccc;
-}
-
-.tundra .dijitTabContainerLeft .dijitTabHover {
- border-right-color:#ccc;
-}
-
-.tundra .dijitTabContainerRight .dijitTabHover {
- border-left-color:#ccc;
-}
-
-.tundra .dijitTabContainer .dijitTabCheckedHover {
- color: inherit;
- border:1px solid #ccc;
- background:#fff;
-}
-
-.tundra .dijitTab .dijitClosable .closeImage {
- background: url("../images/tabClose.png") no-repeat right top;
- width: 12px;
- height: 12px;
-}
-
-.tundra .dijitTab .tabLabel {
- /* make sure tabs w/close button and w/out close button are same height, even w/small (<12px) font */
- min-height: 12px;
- display: inline-block;
-}
-
-/* Nested Tabs */
-
-.tundra .dijitTabContainerNested .dijitTabListWrapper {
- height: auto;
-}
-
-.tundra .dijitTabContainerNested .dijitTabContainerTop-tabs {
- border-bottom: 1px solid #CCC;
-}
-
-.tundra .dijitTabContainerTabListNested .dijitTab {
- background: none;
- border: none;
- top: 0px; /* to override top: 1px/-1px for normal tabs */
-}
-.tundra .dijitTabContainerTabListNested .dijitTab .dijitTabContent {
-}
-.tundra .dijitTabContainerTabListNested .dijitTabHover .dijitTabContent .tabLabel {
- text-decoration: underline;
-}
-.tundra .dijitTabContainerTabListNested .dijitTabChecked .dijitTabContent .tabLabel {
- text-decoration: underline;
- font-weight: bold;
- /*background:#f3f3f3;*/
-}
-.tundra .dijitTabContainer .dijitTabPaneWrapperNested {
- border: none; /* prevent double border */
-}
-
-/* Close button */
-
-.tundra .dijitTab .closeImage {
- background-image : url("../images/tabClose.png");
-}
-.dj_ie6 .tundra .dijitTab .closeImage {
- background-image : url("../images/tabClose.gif");
-}
-
-.tundra .dijitTab .closeButton-hover .closeImage {
- background-image : url("../images/tabCloseHover.png");
-}
-.dj_ie6 .tundra .dijitTab .closeButton-hover .closeImage {
- background-image : url("../images/tabCloseHover.gif");
-}
-
-/* ================================ */
-/* top tabs */
-
-.tundra .dijitTabContainerTop-tabs {
- margin-bottom: 0px;
- border-color: #cccccc;
- padding-left: 3px;
- background-position: bottom;
-}
-.tundra .dijitTabContainerTop-tabs .dijitTab {
- top: 0px;
- margin-bottom: -1px;
-}
-
-/* top container */
-.tundra .dijitTabContainerTop-container {
- border-top: none;
-}
-
-/* checked tabs */
-.tundra .dijitTabContainerTop-tabs .dijitTabChecked {
- border-bottom-color:white;
-}
-
-.tundra .dijitTabContainerTop-tabs,
-.tundra .dijitTabContainerBottom-tabs {
- padding-left: 3px;
- padding-right: 3px;
-}
-
-/* strip */
-.tundra .dijitTabContainerTopStrip {
- border-top: 1px solid #CCC;
- border-right: 1px solid #CCC;
- border-left: 1px solid #CCC;
- padding-top: 2px;
- background: #f2f2f2;
-}
-
-.tundra .dijitTabContainerTopNone {
- padding-top: 0px;
-}
-/*
-.dj_ie6 .tundra .dijitTabContainerTopNone,
-.dj_ie7 .tundra .dijitTabContainerTopNone {
- padding-top: -1px;
-}
-*/
-
-/* ================================ */
-/* bottom tabs */
-.tundra .dijitTabContainerBottom-tabs {
- margin-top: 0px;
- border-color: #cccccc;
- background-position: top;
- padding-left: 3px;
-}
-.tundra .dijitTabContainerBottom-tabs .dijitTab {
- bottom: 0px;
- margin-top: -1px;
-}
-
-/* bottom container */
-.tundra .dijitTabContainerBottom-container {
- border-bottom: none;
-}
-
-/* checked tabs */
-.tundra .dijitTabContainerBottom-tabs .dijitTabChecked {
- border-top-color:white;
-}
-
-/* strip */
-.tundra .dijitTabContainerBottomStrip {
- padding-bottom: 2px;
- border: 1px solid #ccc;
- background: #f2f2f2;
- border-top: none;
-}
-
-/* ================================ */
-/* right tabs */
-.tundra .dijitTabContainerRight-tabs {
- border-color: #ccc;
- height: 100%;
- padding-top: 3px;
-}
-
-.tundra .dijitTabContainerRightStrip {
- margin-left: -1px;
-}
-
-/* right container */
-.tundra .dijitTabContainerRight-container {
- border-right: none;
-}
-
-/* checked tabs */
-.tundra .dijitTabContainerRight-tabs .dijitTabChecked {
- border-left-color:white;
-}
-
-/* strip */
-.tundra .dijitTabContainerRightStrip {
- padding-right: 2px;
- border: 1px solid #ccc;
-}
-
-.tundra .dijitTabContainerRightStrip {
- background: #f2f2f2;
-}
-
-/* ================================ */
-/* left tabs */
-.tundra .dijitTabContainerLeft-tabs {
- border-color: #ccc;
- padding-top: 3px;
- height: 100%;
-}
-
-.tundra .dijitTabContainerLeft .dijitTabListWrapper {
-/* margin-right: -1px;*/
-}
-
-/* left conatiner */
-.tundra .dijitTabContainerLeft-container {
- border-left: none;
-}
-
-/* checked tabs */
-.tundra .dijitTabContainerLeft-tabs .dijitTabChecked {
- border-right-color:white;
-}
-
-/* strip */
-.tundra .dijitTabContainerLeftStrip {
- padding-left: 2px;
- border: 1px solid #ccc;
- background: #f2f2f2;
- border-right: none;
-}
-
-/* ================================ */
-/* left/right tabs */
-.tundra .dijitTabContainerLeft-tabs .dijitTab,
-.tundra .dijitTabContainerRight-tabs .dijitTab {
- margin-right:0px;
- margin-bottom:4px; /* space between one tab and the next in left/right mode */
-}
-
-/* ================================ */
-
-/* this resets the tabcontainer stripe when within a contentpane */
-.tundra .dijitTabContainerTop-dijitContentPane .dijitTabContainerTop-tabs {
- border-left: 0px solid #ccc;
- border-top: 0px solid #ccc;
- border-right: 0px solid #ccc;
- padding-top: 0px;
- padding-left: 0px;
-}
-
-/* ================================ */
-
-/* Menu and slider control styles */
-.tundra .dijitTabContainer .tabStripButton {
- margin-right: 0;
- padding-top: 2px;
- z-index: 12;
-}
-
-.tundra .dijitTabContainerBottom .tabStripButton {
- padding-top: 2px;
-}
-
-.tundra .tabStrip-disabled .tabStripButton .dijitTabInnerDiv {
- padding-bottom: 3px;
- padding-top: 1px;
-}
-
-.tundra .tabStripButton .dijitTabInnerDiv {
- padding: 3px 2px 4px 2px;
-}
-
-.dj_ie6 .tundra .tabStripButton .dijitTabInnerDiv,
-.dj_ie7 .tundra .tabStripButton .dijitTabInnerDiv,
-.dj_opera .tundra .tabStripButton .dijitTabInnerDiv {
- padding-bottom: 5px;
-}
-.dj_ie6 .tundra .tabStrip-disabled .tabStripButton .dijitTabInnerDiv,
-.dj_ie7 .tundra .tabStrip-disabled .tabStripButton .dijitTabInnerDiv,
-.dj_opera .tundra .tabStrip-disabled .tabStripButton .dijitTabInnerDiv {
- padding-bottom: 4px;
-}
-
-.tundra .dijitTabContainer .tabStripButton {
- /* TODO: instead of hardcoded value set to inline display and let layoutChildren() measure? */
- width: 21px;
-}
-
-.tundra .dijitTabContainer .tabStripButton img {
- height: 14px;
- background: url(../images/spriteRoundedIconsSmall.png) no-repeat;
-}
-.dj_ie6 .tundra .dijitTabContainer .tabStripButton img {
- background-image: url(../images/spriteRoundedIconsSmall.gif);
-}
-
-.tundra .dijitTabContainer .tabStripMenuButton img {
- background-position: -15px top;
-}
-.tundra .dijitTabContainer .tabStripSlideButtonLeft img {
- background-position: 0px top;
-}
-.tundra .dijitTabContainer .tabStripSlideButtonRight img {
- background-position: -30px top;
-}
-/*
-.tundra .dijitTabContainerTopStrip .dijitTabContainerBottom .tabStripButton .dijitTabInnerDiv {
- padding-top: 4px;
-}*/
diff --git a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/themes/tundra/layout/TabContainer_rtl.css b/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/themes/tundra/layout/TabContainer_rtl.css
deleted file mode 100644
index 37f5e29..0000000
--- a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/themes/tundra/layout/TabContainer_rtl.css
+++ /dev/null
@@ -1,39 +0,0 @@
-.dijitRtl .tundra .dijitTab {
- -moz-box-orient:horizontal;
- text-align: right;
-}
-
-.dijitRtl .tundra .dijitTabInnerDiv {
- padding:2px 9px 2px 8px;
-}
-
-.dijitRtl .tundra .tabStrip-disabled .tabStripButton .dijitTabInnerDiv {
- padding-bottom: 3px;
- padding-top: 1px;
-}
-
-.dijitRtl .tundra .tabStripButton .dijitTabInnerDiv {
- padding: 3px 2px 4px 2px;
-}
-
-.dijitRtl .tundra .dijitTabPaneWrapper {
- #zoom: 1;
-}
-
-.dj_ie-rtl .tundra .dijitTabContainerLeft-tabs {
- margin-left: 1px !important;
-}
-
-.dj_ie-rtl .tundra .dijitTabContainerRight-tabs {
- margin-right: 1px !important;
-}
-
-.dijitRtl .tundra .dijitTabContainerLeft-tabs .dijitTab,
-.dijitRtl .tundra .dijitTabContainerRight-tabs .dijitTab {
- margin-left:0px;
-}
-
-.dj_ie-rtl .tundra .dijitTab .dijitTabInnerDiv {
- /* without this the tab label and icon become invisible, as though they were set to visibility:hidden */
- width : 0.1% !important;
-}
\ No newline at end of file
diff --git a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/themes/tundra/tundra.css b/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/themes/tundra/tundra.css
deleted file mode 100644
index bae0439..0000000
--- a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/themes/tundra/tundra.css
+++ /dev/null
@@ -1,40 +0,0 @@
-/*
- Adds cosmetic styling to Dijit. Users may swap with a custom theme CSS file.
-
- NOTES:
- ---
- Dialog.css contains css classes for both Dialog and Tooltip!
- This because currently a dijit.TooltipDialog exist. Until this is resolved
- you need to include Dialog.css for both dijits
- ---
- Toolbar.css contains classes also used in Editor. Until this is resolved
- you need to include Toolbar.css for both Toolbar and Editor
- ---
- Button.css contains classes for combobox,
-
-*/
-@import url("../dijit.css");
-@import url("Common.css");
-
-@import url("layout/ContentPane.css");
-@import url("layout/TabContainer.css");
-@import url("layout/AccordionContainer.css");
-@import url("layout/SplitContainer.css");
-@import url("layout/BorderContainer.css");
-@import url("form/Common.css");
-@import url("form/Button.css");
-@import url("form/Checkbox.css");
-@import url("form/RadioButton.css");
-@import url("form/Slider.css");
-@import url("form/Select.css");
-@import url("Tree.css");
-@import url("ProgressBar.css");
-@import url("TitlePane.css");
-@import url("Calendar.css");
-@import url("TimePicker.css");
-@import url("Toolbar.css");
-@import url("Dialog.css");
-@import url("Menu.css");
-@import url("Editor.css");
-@import url("ColorPalette.css");
-@import url("tundra_rtl.css");
diff --git a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/themes/tundra/tundra_rtl.css b/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/themes/tundra/tundra_rtl.css
deleted file mode 100644
index fe9160c..0000000
--- a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/themes/tundra/tundra_rtl.css
+++ /dev/null
@@ -1,26 +0,0 @@
-/*
- Adds cosmetic styling to Dijit. Users may swap with a custom theme CSS file.
-
- NOTES:
- ---
- Dialog.css contains css classes for both Dialog and Tooltip!
- This because currently a dijit.TooltipDialog exist. Until this is resolved
- you need to include Dialog.css for both dijits
- ---
- Toolbar.css contains classes also used in Editor. Until this is resolved
- you need to include Toolbar.css for both Toolbar and Editor
- ---
- Button.css contains classes for combobox,
-
-*/
-/* RTL files */
-@import url("../dijit_rtl.css");
-@import url("Calendar_rtl.css");
-@import url("Dialog_rtl.css");
-@import url("Editor_rtl.css");
-@import url("Menu_rtl.css");
-@import url("Tree_rtl.css");
-@import url("TitlePane_rtl.css");
-@import url("layout/TabContainer_rtl.css");
-@import url("form/Slider_rtl.css");
-@import url("form/Common_rtl.css");
diff --git a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/tree/ForestStoreModel.js b/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/tree/ForestStoreModel.js
deleted file mode 100644
index eb8a777..0000000
--- a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/tree/ForestStoreModel.js
+++ /dev/null
@@ -1,250 +0,0 @@
-/*
- Copyright (c) 2004-2009, The Dojo Foundation All Rights Reserved.
- Available via Academic Free License >= 2.1 OR the modified BSD license.
- see: http://dojotoolkit.org/license for details
-*/
-
-
-if(!dojo._hasResource["dijit.tree.ForestStoreModel"]){ //_hasResource checks added by build. Do not use _hasResource directly in your code.
-dojo._hasResource["dijit.tree.ForestStoreModel"] = true;
-dojo.provide("dijit.tree.ForestStoreModel");
-
-dojo.require("dijit.tree.TreeStoreModel");
-
-dojo.declare("dijit.tree.ForestStoreModel", dijit.tree.TreeStoreModel, {
- // summary:
- // Interface between Tree and a dojo.store that doesn't have a root item,
- // i.e. has multiple "top level" items.
- //
- // description
- // Use this class to wrap a dojo.store, making all the items matching the specified query
- // appear as children of a fabricated "root item". If no query is specified then all the
- // items returned by fetch() on the underlying store become children of the root item.
- // It allows dijit.Tree to assume a single root item, even if the store doesn't have one.
-
- // Parameters to constructor
-
- // rootId: String
- // ID of fabricated root item
- rootId: "$root$",
-
- // rootLabel: String
- // Label of fabricated root item
- rootLabel: "ROOT",
-
- // query: String
- // Specifies the set of children of the root item.
- // example:
- // | {type:'continent'}
- query: null,
-
- // End of parameters to constructor
-
- constructor: function(params){
- // summary:
- // Sets up variables, etc.
- // tags:
- // private
-
- // Make dummy root item
- this.root = {
- store: this,
- root: true,
- id: params.rootId,
- label: params.rootLabel,
- children: params.rootChildren // optional param
- };
- },
-
- // =======================================================================
- // Methods for traversing hierarchy
-
- mayHaveChildren: function(/*dojo.data.Item*/ item){
- // summary:
- // Tells if an item has or may have children. Implementing logic here
- // avoids showing +/- expando icon for nodes that we know don't have children.
- // (For efficiency reasons we may not want to check if an element actually
- // has children until user clicks the expando node)
- // tags:
- // extension
- return item === this.root || this.inherited(arguments);
- },
-
- getChildren: function(/*dojo.data.Item*/ parentItem, /*function(items)*/ callback, /*function*/ onError){
- // summary:
- // Calls onComplete() with array of child items of given parent item, all loaded.
- if(parentItem === this.root){
- if(this.root.children){
- // already loaded, just return
- callback(this.root.children);
- }else{
- this.store.fetch({
- query: this.query,
- onComplete: dojo.hitch(this, function(items){
- this.root.children = items;
- callback(items);
- }),
- onError: onError
- });
- }
- }else{
- this.inherited(arguments);
- }
- },
-
- // =======================================================================
- // Inspecting items
-
- isItem: function(/* anything */ something){
- return (something === this.root) ? true : this.inherited(arguments);
- },
-
- fetchItemByIdentity: function(/* object */ keywordArgs){
- if(keywordArgs.identity == this.root.id){
- var scope = keywordArgs.scope?keywordArgs.scope:dojo.global;
- if(keywordArgs.onItem){
- keywordArgs.onItem.call(scope, this.root);
- }
- }else{
- this.inherited(arguments);
- }
- },
-
- getIdentity: function(/* item */ item){
- return (item === this.root) ? this.root.id : this.inherited(arguments);
- },
-
- getLabel: function(/* item */ item){
- return (item === this.root) ? this.root.label : this.inherited(arguments);
- },
-
- // =======================================================================
- // Write interface
-
- newItem: function(/* dojo.dnd.Item */ args, /*Item*/ parent, /*int?*/ insertIndex){
- // summary:
- // Creates a new item. See dojo.data.api.Write for details on args.
- // Used in drag & drop when item from external source dropped onto tree.
- if(parent === this.root){
- this.onNewRootItem(args);
- return this.store.newItem(args);
- }else{
- return this.inherited(arguments);
- }
- },
-
- onNewRootItem: function(args){
- // summary:
- // User can override this method to modify a new element that's being
- // added to the root of the tree, for example to add a flag like root=true
- },
-
- pasteItem: function(/*Item*/ childItem, /*Item*/ oldParentItem, /*Item*/ newParentItem, /*Boolean*/ bCopy, /*int?*/ insertIndex){
- // summary:
- // Move or copy an item from one parent item to another.
- // Used in drag & drop
- if(oldParentItem === this.root){
- if(!bCopy){
- // It's onLeaveRoot()'s responsibility to modify the item so it no longer matches
- // this.query... thus triggering an onChildrenChange() event to notify the Tree
- // that this element is no longer a child of the root node
- this.onLeaveRoot(childItem);
- }
- }
- dijit.tree.TreeStoreModel.prototype.pasteItem.call(this, childItem,
- oldParentItem === this.root ? null : oldParentItem,
- newParentItem === this.root ? null : newParentItem,
- bCopy,
- insertIndex
- );
- if(newParentItem === this.root){
- // It's onAddToRoot()'s responsibility to modify the item so it matches
- // this.query... thus triggering an onChildrenChange() event to notify the Tree
- // that this element is now a child of the root node
- this.onAddToRoot(childItem);
- }
- },
-
- // =======================================================================
- // Handling for top level children
-
- onAddToRoot: function(/* item */ item){
- // summary:
- // Called when item added to root of tree; user must override this method
- // to modify the item so that it matches the query for top level items
- // example:
- // | store.setValue(item, "root", true);
- // tags:
- // extension
- console.log(this, ": item ", item, " added to root");
- },
-
- onLeaveRoot: function(/* item */ item){
- // summary:
- // Called when item removed from root of tree; user must override this method
- // to modify the item so it doesn't match the query for top level items
- // example:
- // | store.unsetAttribute(item, "root");
- // tags:
- // extension
- console.log(this, ": item ", item, " removed from root");
- },
-
- // =======================================================================
- // Events from data store
-
- _requeryTop: function(){
- // reruns the query for the children of the root node,
- // sending out an onSet notification if those children have changed
- var oldChildren = this.root.children || [];
- this.store.fetch({
- query: this.query,
- onComplete: dojo.hitch(this, function(newChildren){
- this.root.children = newChildren;
-
- // If the list of children or the order of children has changed...
- if(oldChildren.length != newChildren.length ||
- dojo.some(oldChildren, function(item, idx){ return newChildren[idx] != item;})){
- this.onChildrenChange(this.root, newChildren);
- }
- })
- });
- },
-
- onNewItem: function(/* dojo.data.Item */ item, /* Object */ parentInfo){
- // summary:
- // Handler for when new items appear in the store. Developers should override this
- // method to be more efficient based on their app/data.
- // description:
- // Note that the default implementation requeries the top level items every time
- // a new item is created, since any new item could be a top level item (even in
- // addition to being a child of another item, since items can have multiple parents).
- //
- // Developers can override this function to do something more efficient if they can
- // detect which items are possible top level items (based on the item and the
- // parentInfo parameters). Often all top level items have parentInfo==null, but
- // that will depend on which store you use and what your data is like.
- // tags:
- // extension
- this._requeryTop();
-
- this.inherited(arguments);
- },
-
- onDeleteItem: function(/*Object*/ item){
- // summary:
- // Handler for delete notifications from underlying store
-
- // check if this was a child of root, and if so send notification that root's children
- // have changed
- if(dojo.indexOf(this.root.children, item) != -1){
- this._requeryTop();
- }
-
- this.inherited(arguments);
- }
-});
-
-
-
-}
diff --git a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/tree/TreeStoreModel.js b/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/tree/TreeStoreModel.js
deleted file mode 100644
index 3995ba4..0000000
--- a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/tree/TreeStoreModel.js
+++ /dev/null
@@ -1,373 +0,0 @@
-/*
- Copyright (c) 2004-2009, The Dojo Foundation All Rights Reserved.
- Available via Academic Free License >= 2.1 OR the modified BSD license.
- see: http://dojotoolkit.org/license for details
-*/
-
-
-if(!dojo._hasResource["dijit.tree.TreeStoreModel"]){ //_hasResource checks added by build. Do not use _hasResource directly in your code.
-dojo._hasResource["dijit.tree.TreeStoreModel"] = true;
-dojo.provide("dijit.tree.TreeStoreModel");
-
-dojo.declare(
- "dijit.tree.TreeStoreModel",
- null,
- {
- // summary:
- // Implements dijit.Tree.model connecting to a store with a single
- // root item. Any methods passed into the constructor will override
- // the ones defined here.
-
- // store: dojo.data.Store
- // Underlying store
- store: null,
-
- // childrenAttrs: String[]
- // One or more attribute names (attributes in the dojo.data item) that specify that item's children
- childrenAttrs: ["children"],
-
- // newItemIdAttr: String
- // Name of attribute in the Object passed to newItem() that specifies the id.
- //
- // If newItemIdAttr is set then it's used when newItem() is called to see if an
- // item with the same id already exists, and if so just links to the old item
- // (so that the old item ends up with two parents).
- //
- // Setting this to null or "" will make every drop create a new item.
- newItemIdAttr: "id",
-
- // labelAttr: String
- // If specified, get label for tree node from this attribute, rather
- // than by calling store.getLabel()
- labelAttr: "",
-
- // root: [readonly] dojo.data.Item
- // Pointer to the root item (read only, not a parameter)
- root: null,
-
- // query: anything
- // Specifies datastore query to return the root item for the tree.
- // Must only return a single item. Alternately can just pass in pointer
- // to root item.
- // example:
- // | {id:'ROOT'}
- query: null,
-
- // deferItemLoadingUntilExpand: Boolean
- // Setting this to true will cause the TreeStoreModel to defer calling loadItem on nodes
- // until they are expanded. This allows for lazying loading where only one
- // loadItem (and generally one network call, consequently) per expansion
- // (rather than one for each child).
- // This relies on partial loading of the children items; each children item of a
- // fully loaded item should contain the label and info about having children.
- deferItemLoadingUntilExpand: false,
-
- constructor: function(/* Object */ args){
- // summary:
- // Passed the arguments listed above (store, etc)
- // tags:
- // private
-
- dojo.mixin(this, args);
-
- this.connects = [];
-
- var store = this.store;
- if(!store.getFeatures()['dojo.data.api.Identity']){
- throw new Error("dijit.Tree: store must support dojo.data.Identity");
- }
-
- // if the store supports Notification, subscribe to the notification events
- if(store.getFeatures()['dojo.data.api.Notification']){
- this.connects = this.connects.concat([
- dojo.connect(store, "onNew", this, "onNewItem"),
- dojo.connect(store, "onDelete", this, "onDeleteItem"),
- dojo.connect(store, "onSet", this, "onSetItem")
- ]);
- }
- },
-
- destroy: function(){
- dojo.forEach(this.connects, dojo.disconnect);
- // TODO: should cancel any in-progress processing of getRoot(), getChildren()
- },
-
- // =======================================================================
- // Methods for traversing hierarchy
-
- getRoot: function(onItem, onError){
- // summary:
- // Calls onItem with the root item for the tree, possibly a fabricated item.
- // Calls onError on error.
- if(this.root){
- onItem(this.root);
- }else{
- this.store.fetch({
- query: this.query,
- onComplete: dojo.hitch(this, function(items){
- if(items.length != 1){
- throw new Error(this.declaredClass + ": query " + dojo.toJson(this.query) + " returned " + items.length +
- " items, but must return exactly one item");
- }
- this.root = items[0];
- onItem(this.root);
- }),
- onError: onError
- });
- }
- },
-
- mayHaveChildren: function(/*dojo.data.Item*/ item){
- // summary:
- // Tells if an item has or may have children. Implementing logic here
- // avoids showing +/- expando icon for nodes that we know don't have children.
- // (For efficiency reasons we may not want to check if an element actually
- // has children until user clicks the expando node)
- return dojo.some(this.childrenAttrs, function(attr){
- return this.store.hasAttribute(item, attr);
- }, this);
- },
-
- getChildren: function(/*dojo.data.Item*/ parentItem, /*function(items)*/ onComplete, /*function*/ onError){
- // summary:
- // Calls onComplete() with array of child items of given parent item, all loaded.
-
- var store = this.store;
- if(!store.isItemLoaded(parentItem)){
- // The parent is not loaded yet, we must be in deferItemLoadingUntilExpand
- // mode, so we will load it and just return the children (without loading each
- // child item)
- var getChildren = dojo.hitch(this, arguments.callee);
- store.loadItem({
- item: parentItem,
- onItem: function(parentItem){
- getChildren(parentItem, onComplete, onError);
- },
- onError: onError
- });
- return;
- }
- // get children of specified item
- var childItems = [];
- for(var i=0; i<this.childrenAttrs.length; i++){
- var vals = store.getValues(parentItem, this.childrenAttrs[i]);
- childItems = childItems.concat(vals);
- }
-
- // count how many items need to be loaded
- var _waitCount = 0;
- if(!this.deferItemLoadingUntilExpand){
- dojo.forEach(childItems, function(item){ if(!store.isItemLoaded(item)){ _waitCount++; } });
- }
-
- if(_waitCount == 0){
- // all items are already loaded (or we aren't loading them). proceed...
- onComplete(childItems);
- }else{
- // still waiting for some or all of the items to load
- var onItem = function onItem(item){
- if(--_waitCount == 0){
- // all nodes have been loaded, send them to the tree
- onComplete(childItems);
- }
- }
- dojo.forEach(childItems, function(item){
- if(!store.isItemLoaded(item)){
- store.loadItem({
- item: item,
- onItem: onItem,
- onError: onError
- });
- }
- });
- }
- },
-
- // =======================================================================
- // Inspecting items
-
- isItem: function(/* anything */ something){
- return this.store.isItem(something); // Boolean
- },
-
- fetchItemByIdentity: function(/* object */ keywordArgs){
- this.store.fetchItemByIdentity(keywordArgs);
- },
-
- getIdentity: function(/* item */ item){
- return this.store.getIdentity(item); // Object
- },
-
- getLabel: function(/*dojo.data.Item*/ item){
- // summary:
- // Get the label for an item
- if(this.labelAttr){
- return this.store.getValue(item,this.labelAttr); // String
- }else{
- return this.store.getLabel(item); // String
- }
- },
-
- // =======================================================================
- // Write interface
-
- newItem: function(/* dojo.dnd.Item */ args, /*Item*/ parent, /*int?*/ insertIndex){
- // summary:
- // Creates a new item. See `dojo.data.api.Write` for details on args.
- // Used in drag & drop when item from external source dropped onto tree.
- // description:
- // Developers will need to override this method if new items get added
- // to parents with multiple children attributes, in order to define which
- // children attribute points to the new item.
-
- var pInfo = {parent: parent, attribute: this.childrenAttrs[0], insertIndex: insertIndex};
-
- if(this.newItemIdAttr && args[this.newItemIdAttr]){
- // Maybe there's already a corresponding item in the store; if so, reuse it.
- this.fetchItemByIdentity({identity: args[this.newItemIdAttr], scope: this, onItem: function(item){
- if(item){
- // There's already a matching item in store, use it
- this.pasteItem(item, null, parent, true, insertIndex);
- }else{
- // Create new item in the tree, based on the drag source.
- this.store.newItem(args, pInfo);
- }
- }});
- }else{
- // [as far as we know] there is no id so we must assume this is a new item
- this.store.newItem(args, pInfo);
- }
- },
-
- pasteItem: function(/*Item*/ childItem, /*Item*/ oldParentItem, /*Item*/ newParentItem, /*Boolean*/ bCopy, /*int?*/ insertIndex){
- // summary:
- // Move or copy an item from one parent item to another.
- // Used in drag & drop
- var store = this.store,
- parentAttr = this.childrenAttrs[0]; // name of "children" attr in parent item
-
- // remove child from source item, and record the attribute that child occurred in
- if(oldParentItem){
- dojo.forEach(this.childrenAttrs, function(attr){
- if(store.containsValue(oldParentItem, attr, childItem)){
- if(!bCopy){
- var values = dojo.filter(store.getValues(oldParentItem, attr), function(x){
- return x != childItem;
- });
- store.setValues(oldParentItem, attr, values);
- }
- parentAttr = attr;
- }
- });
- }
-
- // modify target item's children attribute to include this item
- if(newParentItem){
- if(typeof insertIndex == "number"){
- var childItems = store.getValues(newParentItem, parentAttr);
- childItems.splice(insertIndex, 0, childItem);
- store.setValues(newParentItem, parentAttr, childItems);
- }else{
- store.setValues(newParentItem, parentAttr,
- store.getValues(newParentItem, parentAttr).concat(childItem));
- }
- }
- },
-
- // =======================================================================
- // Callbacks
-
- onChange: function(/*dojo.data.Item*/ item){
- // summary:
- // Callback whenever an item has changed, so that Tree
- // can update the label, icon, etc. Note that changes
- // to an item's children or parent(s) will trigger an
- // onChildrenChange() so you can ignore those changes here.
- // tags:
- // callback
- },
-
- onChildrenChange: function(/*dojo.data.Item*/ parent, /*dojo.data.Item[]*/ newChildrenList){
- // summary:
- // Callback to do notifications about new, updated, or deleted items.
- // tags:
- // callback
- },
-
- onDelete: function(/*dojo.data.Item*/ parent, /*dojo.data.Item[]*/ newChildrenList){
- // summary:
- // Callback when an item has been deleted.
- // description:
- // Note that there will also be an onChildrenChange() callback for the parent
- // of this item.
- // tags:
- // callback
- },
-
- // =======================================================================
- // Events from data store
-
- onNewItem: function(/* dojo.data.Item */ item, /* Object */ parentInfo){
- // summary:
- // Handler for when new items appear in the store, either from a drop operation
- // or some other way. Updates the tree view (if necessary).
- // description:
- // If the new item is a child of an existing item,
- // calls onChildrenChange() with the new list of children
- // for that existing item.
- //
- // tags:
- // extension
-
- // We only care about the new item if it has a parent that corresponds to a TreeNode
- // we are currently displaying
- if(!parentInfo){
- return;
- }
-
- // Call onChildrenChange() on parent (ie, existing) item with new list of children
- // In the common case, the new list of children is simply parentInfo.newValue or
- // [ parentInfo.newValue ], although if items in the store has multiple
- // child attributes (see `childrenAttr`), then it's a superset of parentInfo.newValue,
- // so call getChildren() to be sure to get right answer.
- this.getChildren(parentInfo.item, dojo.hitch(this, function(children){
- this.onChildrenChange(parentInfo.item, children);
- }));
- },
-
- onDeleteItem: function(/*Object*/ item){
- // summary:
- // Handler for delete notifications from underlying store
- this.onDelete(item);
- },
-
- onSetItem: function(/* item */ item,
- /* attribute-name-string */ attribute,
- /* object | array */ oldValue,
- /* object | array */ newValue){
- // summary:
- // Updates the tree view according to changes in the data store.
- // description:
- // Handles updates to an item's children by calling onChildrenChange(), and
- // other updates to an item by calling onChange().
- //
- // See `onNewItem` for more details on handling updates to an item's children.
- // tags:
- // extension
-
- if(dojo.indexOf(this.childrenAttrs, attribute) != -1){
- // item's children list changed
- this.getChildren(item, dojo.hitch(this, function(children){
- // See comments in onNewItem() about calling getChildren()
- this.onChildrenChange(item, children);
- }));
- }else{
- // item's label/icon/etc. changed.
- this.onChange(item);
- }
- }
- });
-
-
-
-}
diff --git a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/tree/_dndContainer.js b/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/tree/_dndContainer.js
deleted file mode 100644
index d0f3437..0000000
--- a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/tree/_dndContainer.js
+++ /dev/null
@@ -1,164 +0,0 @@
-/*
- Copyright (c) 2004-2009, The Dojo Foundation All Rights Reserved.
- Available via Academic Free License >= 2.1 OR the modified BSD license.
- see: http://dojotoolkit.org/license for details
-*/
-
-
-if(!dojo._hasResource["dijit.tree._dndContainer"]){ //_hasResource checks added by build. Do not use _hasResource directly in your code.
-dojo._hasResource["dijit.tree._dndContainer"] = true;
-dojo.provide("dijit.tree._dndContainer");
-dojo.require("dojo.dnd.common");
-dojo.require("dojo.dnd.Container");
-
-dojo.declare("dijit.tree._dndContainer",
- null,
- {
-
- // summary:
- // This is a base class for `dijit.tree._dndSelector`, and isn't meant to be used directly.
- // It's modeled after `dojo.dnd.Container`.
- // tags:
- // protected
-
- /*=====
- // current: DomNode
- // The currently hovered TreeNode.rowNode (which is the DOM node
- // associated w/a given node in the tree, excluding it's descendants)
- current: null,
- =====*/
-
- constructor: function(tree, params){
- // summary:
- // A constructor of the Container
- // tree: Node
- // Node or node's id to build the container on
- // params: dijit.tree.__SourceArgs
- // A dict of parameters, which gets mixed into the object
- // tags:
- // private
- this.tree = tree;
- this.node = tree.domNode; // TODO: rename; it's not a TreeNode but the whole Tree
- dojo.mixin(this, params);
-
- // class-specific variables
- this.map = {};
- this.current = null; // current TreeNode's DOM node
-
- // states
- this.containerState = "";
- dojo.addClass(this.node, "dojoDndContainer");
-
- // set up events
- this.events = [
- // container level events
- dojo.connect(this.node, "onmouseenter", this, "onOverEvent"),
- dojo.connect(this.node, "onmouseleave", this, "onOutEvent"),
-
- // switching between TreeNodes
- dojo.connect(this.tree, "_onNodeMouseEnter", this, "onMouseOver"),
- dojo.connect(this.tree, "_onNodeMouseLeave", this, "onMouseOut"),
-
- // cancel text selection and text dragging
- dojo.connect(this.node, "ondragstart", dojo, "stopEvent"),
- dojo.connect(this.node, "onselectstart", dojo, "stopEvent")
- ];
- },
-
- getItem: function(/*String*/ key){
- // summary:
- // Returns the dojo.dnd.Item (representing a dragged node) by it's key (id).
- // Called by dojo.dnd.Source.checkAcceptance().
- // tags:
- // protected
-
- var node = this.selection[key],
- ret = {
- data: dijit.getEnclosingWidget(node),
- type: ["treeNode"]
- };
-
- return ret; // dojo.dnd.Item
- },
-
- destroy: function(){
- // summary:
- // Prepares this object to be garbage-collected
-
- dojo.forEach(this.events, dojo.disconnect);
- // this.clearItems();
- this.node = this.parent = null;
- },
-
- // mouse events
- onMouseOver: function(/*TreeNode*/ widget, /*Event*/ evt){
- // summary:
- // Called when mouse is moved over a TreeNode
- // tags:
- // protected
- this.current = widget.rowNode;
- this.currentWidget = widget;
- },
-
- onMouseOut: function(/*TreeNode*/ widget, /*Event*/ evt){
- // summary:
- // Called when mouse is moved away from a TreeNode
- // tags:
- // protected
- this.current = null;
- this.currentWidget = null;
- },
-
- _changeState: function(type, newState){
- // summary:
- // Changes a named state to new state value
- // type: String
- // A name of the state to change
- // newState: String
- // new state
- var prefix = "dojoDnd" + type;
- var state = type.toLowerCase() + "State";
- //dojo.replaceClass(this.node, prefix + newState, prefix + this[state]);
- dojo.removeClass(this.node, prefix + this[state]);
- dojo.addClass(this.node, prefix + newState);
- this[state] = newState;
- },
-
- _addItemClass: function(node, type){
- // summary:
- // Adds a class with prefix "dojoDndItem"
- // node: Node
- // A node
- // type: String
- // A variable suffix for a class name
- dojo.addClass(node, "dojoDndItem" + type);
- },
-
- _removeItemClass: function(node, type){
- // summary:
- // Removes a class with prefix "dojoDndItem"
- // node: Node
- // A node
- // type: String
- // A variable suffix for a class name
- dojo.removeClass(node, "dojoDndItem" + type);
- },
-
- onOverEvent: function(){
- // summary:
- // This function is called once, when mouse is over our container
- // tags:
- // protected
- this._changeState("Container", "Over");
- },
-
- onOutEvent: function(){
- // summary:
- // This function is called once, when mouse is out of our container
- // tags:
- // protected
- this._changeState("Container", "");
- }
-});
-
-}
diff --git a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/tree/_dndSelector.js b/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/tree/_dndSelector.js
deleted file mode 100644
index 13d1842..0000000
--- a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/tree/_dndSelector.js
+++ /dev/null
@@ -1,229 +0,0 @@
-/*
- Copyright (c) 2004-2009, The Dojo Foundation All Rights Reserved.
- Available via Academic Free License >= 2.1 OR the modified BSD license.
- see: http://dojotoolkit.org/license for details
-*/
-
-
-if(!dojo._hasResource["dijit.tree._dndSelector"]){ //_hasResource checks added by build. Do not use _hasResource directly in your code.
-dojo._hasResource["dijit.tree._dndSelector"] = true;
-dojo.provide("dijit.tree._dndSelector");
-dojo.require("dojo.dnd.common");
-dojo.require("dijit.tree._dndContainer");
-
-dojo.declare("dijit.tree._dndSelector",
- dijit.tree._dndContainer,
- {
- // summary:
- // This is a base class for `dijit.tree.dndSource` , and isn't meant to be used directly.
- // It's based on `dojo.dnd.Selector`.
- // tags:
- // protected
-
- /*=====
- // selection: Hash<String, DomNode>
- // (id, DomNode) map for every TreeNode that's currently selected.
- // The DOMNode is the TreeNode.rowNode.
- selection: {},
- =====*/
-
- constructor: function(tree, params){
- // summary:
- // Initialization
- // tags:
- // private
-
- this.selection={};
- this.anchor = null;
- this.simpleSelection=false;
-
- this.events.push(
- dojo.connect(this.tree.domNode, "onmousedown", this,"onMouseDown"),
- dojo.connect(this.tree.domNode, "onmouseup", this,"onMouseUp"),
- dojo.connect(this.tree.domNode, "onmousemove", this,"onMouseMove")
- );
- },
-
- // singular: Boolean
- // Allows selection of only one element, if true.
- // Tree hasn't been tested in singular=true mode, unclear if it works.
- singular: false,
-
- // methods
-
- getSelectedNodes: function(){
- // summary:
- // Returns the set of selected nodes.
- // Used by dndSource on the start of a drag.
- // tags:
- // protected
- return this.selection;
- },
-
- selectNone: function(){
- // summary:
- // Unselects all items
- // tags:
- // private
-
- return this._removeSelection()._removeAnchor(); // self
- },
-
- destroy: function(){
- // summary:
- // Prepares the object to be garbage-collected
- this.inherited(arguments);
- this.selection = this.anchor = null;
- },
-
- // mouse events
- onMouseDown: function(e){
- // summary:
- // Event processor for onmousedown
- // e: Event
- // mouse event
- // tags:
- // protected
-
- if(!this.current){ return; }
-
- if(e.button == dojo.mouseButtons.RIGHT){ return; } // ignore right-click
-
- var treeNode = dijit.getEnclosingWidget(this.current),
- id = treeNode.id + "-dnd" // so id doesn't conflict w/widget
-
- if(!dojo.hasAttr(this.current, "id")){
- dojo.attr(this.current, "id", id);
- }
-
- if(!this.singular && !dojo.isCopyKey(e) && !e.shiftKey && (this.current.id in this.selection)){
- this.simpleSelection = true;
- dojo.stopEvent(e);
- return;
- }
- if(this.singular){
- if(this.anchor == this.current){
- if(dojo.isCopyKey(e)){
- this.selectNone();
- }
- }else{
- this.selectNone();
- this.anchor = this.current;
- this._addItemClass(this.anchor, "Anchor");
-
- this.selection[this.current.id] = this.current;
- }
- }else{
- if(!this.singular && e.shiftKey){
- if(dojo.isCopyKey(e)){
- //TODO add range to selection
- }else{
- //TODO select new range from anchor
- }
- }else{
- if(dojo.isCopyKey(e)){
- if(this.anchor == this.current){
- delete this.selection[this.anchor.id];
- this._removeAnchor();
- }else{
- if(this.current.id in this.selection){
- this._removeItemClass(this.current, "Selected");
- delete this.selection[this.current.id];
- }else{
- if(this.anchor){
- this._removeItemClass(this.anchor, "Anchor");
- this._addItemClass(this.anchor, "Selected");
- }
- this.anchor = this.current;
- this._addItemClass(this.current, "Anchor");
- this.selection[this.current.id] = this.current;
- }
- }
- }else{
- if(!(id in this.selection)){
- this.selectNone();
- this.anchor = this.current;
- this._addItemClass(this.current, "Anchor");
- this.selection[id] = this.current;
- }
- }
- }
- }
-
- dojo.stopEvent(e);
- },
-
- onMouseUp: function(e){
- // summary:
- // Event processor for onmouseup
- // e: Event
- // mouse event
- // tags:
- // protected
-
- // TODO: this code is apparently for handling an edge case when the user is selecting
- // multiple nodes and then mousedowns on a node by accident... it lets the user keep the
- // current selection by moving the mouse away (or something like that). It doesn't seem
- // to work though and requires a lot of plumbing (including this code, the onmousemove
- // handler, and the this.simpleSelection attribute. Consider getting rid of all of it.
-
- if(!this.simpleSelection){ return; }
- this.simpleSelection = false;
- this.selectNone();
- if(this.current){
- this.anchor = this.current;
- this._addItemClass(this.anchor, "Anchor");
- this.selection[this.current.id] = this.current;
- }
- },
- onMouseMove: function(e){
- // summary
- // event processor for onmousemove
- // e: Event
- // mouse event
- this.simpleSelection = false;
- },
-
- _removeSelection: function(){
- // summary:
- // Unselects all items
- // tags:
- // private
- var e = dojo.dnd._empty;
- for(var i in this.selection){
- if(i in e){ continue; }
- var node = dojo.byId(i);
- if(node){ this._removeItemClass(node, "Selected"); }
- }
- this.selection = {};
- return this; // self
- },
-
- _removeAnchor: function(){
- // summary:
- // Removes the Anchor CSS class from a node.
- // According to `dojo.dnd.Selector`, anchor means that
- // "an item is selected, and is an anchor for a 'shift' selection".
- // It's not relevant for Tree at this point, since we don't support multiple selection.
- // tags:
- // private
- if(this.anchor){
- this._removeItemClass(this.anchor, "Anchor");
- this.anchor = null;
- }
- return this; // self
- },
-
- forInSelectedItems: function(/*Function*/ f, /*Object?*/ o){
- // summary:
- // Iterates over selected items;
- // see `dojo.dnd.Container.forInItems()` for details
- o = o || dojo.global;
- for(var id in this.selection){
- console.log("selected item id: " + id);
- f.call(o, this.getItem(id), id, this);
- }
- }
-});
-
-}
diff --git a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/tree/dndSource.js b/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/tree/dndSource.js
deleted file mode 100644
index 2032bb6..0000000
--- a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/tree/dndSource.js
+++ /dev/null
@@ -1,537 +0,0 @@
-/*
- Copyright (c) 2004-2009, The Dojo Foundation All Rights Reserved.
- Available via Academic Free License >= 2.1 OR the modified BSD license.
- see: http://dojotoolkit.org/license for details
-*/
-
-
-if(!dojo._hasResource["dijit.tree.dndSource"]){ //_hasResource checks added by build. Do not use _hasResource directly in your code.
-dojo._hasResource["dijit.tree.dndSource"] = true;
-dojo.provide("dijit.tree.dndSource");
-
-dojo.require("dijit.tree._dndSelector");
-dojo.require("dojo.dnd.Manager");
-
-/*=====
-dijit.tree.__SourceArgs = function(){
- // summary:
- // A dict of parameters for Tree source configuration.
- // isSource: Boolean?
- // Can be used as a DnD source. Defaults to true.
- // accept: String[]
- // List of accepted types (text strings) for a target; defaults to
- // ["text", "treeNode"]
- // copyOnly: Boolean?
- // Copy items, if true, use a state of Ctrl key otherwise,
- // dragThreshold: Number
- // The move delay in pixels before detecting a drag; 0 by default
- // betweenThreshold: Integer
- // Distance from upper/lower edge of node to allow drop to reorder nodes
- this.isSource = isSource;
- this.accept = accept;
- this.autoSync = autoSync;
- this.copyOnly = copyOnly;
- this.dragThreshold = dragThreshold;
- this.betweenThreshold = betweenThreshold;
-}
-=====*/
-
-dojo.declare("dijit.tree.dndSource", dijit.tree._dndSelector, {
- // summary:
- // Handles drag and drop operations (as a source or a target) for `dijit.Tree`
-
- // isSource: [private] Boolean
- // Can be used as a DnD source.
- isSource: true,
-
- // accept: String[]
- // List of accepted types (text strings) for the Tree; defaults to
- // ["text"]
- accept: ["text", "treeNode"],
-
- // copyOnly: [private] Boolean
- // Copy items, if true, use a state of Ctrl key otherwise
- copyOnly: false,
-
- // dragThreshold: Number
- // The move delay in pixels before detecting a drag; 5 by default
- dragThreshold: 5,
-
- // betweenThreshold: Integer
- // Distance from upper/lower edge of node to allow drop to reorder nodes
- betweenThreshold: 0,
-
- constructor: function(/*dijit.Tree*/ tree, /*dijit.tree.__SourceArgs*/ params){
- // summary:
- // a constructor of the Tree DnD Source
- // tags:
- // private
- if(!params){ params = {}; }
- dojo.mixin(this, params);
- this.isSource = typeof params.isSource == "undefined" ? true : params.isSource;
- var type = params.accept instanceof Array ? params.accept : ["text", "treeNode"];
- this.accept = null;
- if(type.length){
- this.accept = {};
- for(var i = 0; i < type.length; ++i){
- this.accept[type[i]] = 1;
- }
- }
-
- // class-specific variables
- this.isDragging = false;
- this.mouseDown = false;
- this.targetAnchor = null; // DOMNode corresponding to the currently moused over TreeNode
- this.targetBox = null; // coordinates of this.targetAnchor
- this.dropPosition = ""; // whether mouse is over/after/before this.targetAnchor
- this._lastX = 0;
- this._lastY = 0;
-
- // states
- this.sourceState = "";
- if(this.isSource){
- dojo.addClass(this.node, "dojoDndSource");
- }
- this.targetState = "";
- if(this.accept){
- dojo.addClass(this.node, "dojoDndTarget");
- }
-
- // set up events
- this.topics = [
- dojo.subscribe("/dnd/source/over", this, "onDndSourceOver"),
- dojo.subscribe("/dnd/start", this, "onDndStart"),
- dojo.subscribe("/dnd/drop", this, "onDndDrop"),
- dojo.subscribe("/dnd/cancel", this, "onDndCancel")
- ];
- },
-
- // methods
- checkAcceptance: function(source, nodes){
- // summary:
- // Checks if the target can accept nodes from this source
- // source: dijit.tree.dndSource
- // The source which provides items
- // nodes: DOMNode[]
- // Array of DOM nodes corresponding to nodes being dropped, dijitTreeRow nodes if
- // source is a dijit.Tree.
- // tags:
- // extension
- return true; // Boolean
- },
-
- copyState: function(keyPressed){
- // summary:
- // Returns true, if we need to copy items, false to move.
- // It is separated to be overwritten dynamically, if needed.
- // keyPressed: Boolean
- // The "copy" control key was pressed
- // tags:
- // protected
- return this.copyOnly || keyPressed; // Boolean
- },
- destroy: function(){
- // summary:
- // Prepares the object to be garbage-collected.
- this.inherited("destroy",arguments);
- dojo.forEach(this.topics, dojo.unsubscribe);
- this.targetAnchor = null;
- },
-
- _onDragMouse: function(e){
- // summary:
- // Helper method for processing onmousemove/onmouseover events while drag is in progress.
- // Keeps track of current drop target.
-
- var m = dojo.dnd.manager(),
- oldTarget = this.targetAnchor, // the DOMNode corresponding to TreeNode mouse was previously over
- newTarget = this.current, // DOMNode corresponding to TreeNode mouse is currently over
- newTargetWidget = this.currentWidget, // the TreeNode itself
- oldDropPosition = this.dropPosition; // the previous drop position (over/before/after)
-
- // calculate if user is indicating to drop the dragged node before, after, or over
- // (i.e., to become a child of) the target node
- var newDropPosition = "Over";
- if(newTarget && this.betweenThreshold > 0){
- // If mouse is over a new TreeNode, then get new TreeNode's position and size
- if(!this.targetBox || oldTarget != newTarget){
- this.targetBox = dojo.position(newTarget, true);
- }
- if((e.pageY - this.targetBox.y) <= this.betweenThreshold){
- newDropPosition = "Before";
- }else if((e.pageY - this.targetBox.y) >= (this.targetBox.h - this.betweenThreshold)){
- newDropPosition = "After";
- }
- }
-
- if(newTarget != oldTarget || newDropPosition != oldDropPosition){
- if(oldTarget){
- this._removeItemClass(oldTarget, oldDropPosition);
- }
- if(newTarget){
- this._addItemClass(newTarget, newDropPosition);
- }
-
- // Check if it's ok to drop the dragged node on/before/after the target node.
- if(!newTarget){
- m.canDrop(false);
- }else if(newTargetWidget == this.tree.rootNode && newDropPosition != "Over"){
- // Can't drop before or after tree's root node; the dropped node would just disappear (at least visually)
- m.canDrop(false);
- }else if(m.source == this && (newTarget.id in this.selection)){
- // Guard against dropping onto yourself (TODO: guard against dropping onto your descendant, #7140)
- m.canDrop(false);
- }else if(this.checkItemAcceptance(newTarget, m.source, newDropPosition.toLowerCase())
- && !this._isParentChildDrop(m.source, newTarget)){
- m.canDrop(true);
- }else{
- m.canDrop(false);
- }
-
- this.targetAnchor = newTarget;
- this.dropPosition = newDropPosition;
- }
- },
-
- onMouseMove: function(e){
- // summary:
- // Called for any onmousemove events over the Tree
- // e: Event
- // onmousemouse event
- // tags:
- // private
- if(this.isDragging && this.targetState == "Disabled"){ return; }
- this.inherited(arguments);
- var m = dojo.dnd.manager();
- if(this.isDragging){
- this._onDragMouse(e);
- }else{
- if(this.mouseDown && this.isSource &&
- (Math.abs(e.pageX-this._lastX)>=this.dragThreshold || Math.abs(e.pageY-this._lastY)>=this.dragThreshold)){
- var n = this.getSelectedNodes();
- var nodes=[];
- for(var i in n){
- nodes.push(n[i]);
- }
- if(nodes.length){
- m.startDrag(this, nodes, this.copyState(dojo.isCopyKey(e)));
- }
- }
- }
- },
-
- onMouseDown: function(e){
- // summary:
- // Event processor for onmousedown
- // e: Event
- // onmousedown event
- // tags:
- // private
- this.mouseDown = true;
- this.mouseButton = e.button;
- this._lastX = e.pageX;
- this._lastY = e.pageY;
- this.inherited("onMouseDown",arguments);
- },
-
- onMouseUp: function(e){
- // summary:
- // Event processor for onmouseup
- // e: Event
- // onmouseup event
- // tags:
- // private
- if(this.mouseDown){
- this.mouseDown = false;
- this.inherited("onMouseUp",arguments);
- }
- },
-
- onMouseOut: function(){
- // summary:
- // Event processor for when mouse is moved away from a TreeNode
- // tags:
- // private
- this.inherited(arguments);
- this._unmarkTargetAnchor();
- },
-
- checkItemAcceptance: function(target, source, position){
- // summary:
- // Stub function to be overridden if one wants to check for the ability to drop at the node/item level
- // description:
- // In the base case, this is called to check if target can become a child of source.
- // When betweenThreshold is set, position="before" or "after" means that we
- // are asking if the source node can be dropped before/after the target node.
- // target: DOMNode
- // The dijitTreeRoot DOM node inside of the TreeNode that we are dropping on to
- // Use dijit.getEnclosingWidget(target) to get the TreeNode.
- // source: dijit.tree.dndSource
- // The (set of) nodes we are dropping
- // position: String
- // "over", "before", or "after"
- // tags:
- // extension
- return true;
- },
-
- // topic event processors
- onDndSourceOver: function(source){
- // summary:
- // Topic event processor for /dnd/source/over, called when detected a current source.
- // source: Object
- // The dijit.tree.dndSource / dojo.dnd.Source which has the mouse over it
- // tags:
- // private
- if(this != source){
- this.mouseDown = false;
- this._unmarkTargetAnchor();
- }else if(this.isDragging){
- var m = dojo.dnd.manager();
- m.canDrop(false);
- }
- },
- onDndStart: function(source, nodes, copy){
- // summary:
- // Topic event processor for /dnd/start, called to initiate the DnD operation
- // source: Object
- // The dijit.tree.dndSource / dojo.dnd.Source which is providing the items
- // nodes: DomNode[]
- // The list of transferred items, dndTreeNode nodes if dragging from a Tree
- // copy: Boolean
- // Copy items, if true, move items otherwise
- // tags:
- // private
-
- if(this.isSource){
- this._changeState("Source", this == source ? (copy ? "Copied" : "Moved") : "");
- }
- var accepted = this.checkAcceptance(source, nodes);
-
- this._changeState("Target", accepted ? "" : "Disabled");
-
- if(this == source){
- dojo.dnd.manager().overSource(this);
- }
-
- this.isDragging = true;
- },
-
- itemCreator: function(/*DomNode[]*/ nodes, target, /*dojo.dnd.Source*/ source){
- // summary:
- // Returns objects passed to `Tree.model.newItem()` based on DnD nodes
- // dropped onto the tree. Developer must override this method to enable
- // dropping from external sources onto this Tree, unless the Tree.model's items
- // happen to look like {id: 123, name: "Apple" } with no other attributes.
- // description:
- // For each node in nodes[], which came from source, create a hash of name/value
- // pairs to be passed to Tree.model.newItem(). Returns array of those hashes.
- // returns: Object[]
- // Array of name/value hashes for each new item to be added to the Tree, like:
- // | [
- // | { id: 123, label: "apple", foo: "bar" },
- // | { id: 456, label: "pear", zaz: "bam" }
- // | ]
- // tags:
- // extension
-
- // TODO: for 2.0 refactor so itemCreator() is called once per drag node, and
- // make signature itemCreator(sourceItem, node, target) (or similar).
-
- return dojo.map(nodes, function(node){
- return {
- "id": node.id,
- "name": node.textContent || node.innerText || ""
- };
- }); // Object[]
- },
-
- onDndDrop: function(source, nodes, copy){
- // summary:
- // Topic event processor for /dnd/drop, called to finish the DnD operation.
- // description:
- // Updates data store items according to where node was dragged from and dropped
- // to. The tree will then respond to those data store updates and redraw itself.
- // source: Object
- // The dijit.tree.dndSource / dojo.dnd.Source which is providing the items
- // nodes: DomNode[]
- // The list of transferred items, dndTreeNode nodes if dragging from a Tree
- // copy: Boolean
- // Copy items, if true, move items otherwise
- // tags:
- // protected
- if(this.containerState == "Over"){
- var tree = this.tree,
- model = tree.model,
- target = this.targetAnchor,
- requeryRoot = false; // set to true iff top level items change
-
- this.isDragging = false;
-
- // Compute the new parent item
- var targetWidget = dijit.getEnclosingWidget(target);
- var newParentItem;
- var insertIndex;
- newParentItem = (targetWidget && targetWidget.item) || tree.item;
- if(this.dropPosition == "Before" || this.dropPosition == "After"){
- // TODO: if there is no parent item then disallow the drop.
- // Actually this should be checked during onMouseMove too, to make the drag icon red.
- newParentItem = (targetWidget.getParent() && targetWidget.getParent().item) || tree.item;
- // Compute the insert index for reordering
- insertIndex = targetWidget.getIndexInParent();
- if(this.dropPosition == "After"){
- insertIndex = targetWidget.getIndexInParent() + 1;
- }
- }else{
- newParentItem = (targetWidget && targetWidget.item) || tree.item;
- }
-
- // If necessary, use this variable to hold array of hashes to pass to model.newItem()
- // (one entry in the array for each dragged node).
- var newItemsParams;
-
- dojo.forEach(nodes, function(node, idx){
- // dojo.dnd.Item representing the thing being dropped.
- // Don't confuse the use of item here (meaning a DnD item) with the
- // uses below where item means dojo.data item.
- var sourceItem = source.getItem(node.id);
-
- // Information that's available if the source is another Tree
- // (possibly but not necessarily this tree, possibly but not
- // necessarily the same model as this Tree)
- if(dojo.indexOf(sourceItem.type, "treeNode") != -1){
- var childTreeNode = sourceItem.data,
- childItem = childTreeNode.item,
- oldParentItem = childTreeNode.getParent().item;
- }
-
- if(source == this){
- // This is a node from my own tree, and we are moving it, not copying.
- // Remove item from old parent's children attribute.
- // TODO: dijit.tree.dndSelector should implement deleteSelectedNodes()
- // and this code should go there.
-
- if(typeof insertIndex == "number"){
- if(newParentItem == oldParentItem && childTreeNode.getIndexInParent() < insertIndex){
- insertIndex -= 1;
- }
- }
- model.pasteItem(childItem, oldParentItem, newParentItem, copy, insertIndex);
- }else if(model.isItem(childItem)){
- // Item from same model
- // (maybe we should only do this branch if the source is a tree?)
- model.pasteItem(childItem, oldParentItem, newParentItem, copy, insertIndex);
- }else{
- // Get the hash to pass to model.newItem(). A single call to
- // itemCreator() returns an array of hashes, one for each drag source node.
- if(!newItemsParams){
- newItemsParams = this.itemCreator(nodes, target, source);
- }
-
- // Create new item in the tree, based on the drag source.
- model.newItem(newItemsParams[idx], newParentItem, insertIndex);
- }
- }, this);
-
- // Expand the target node (if it's currently collapsed) so the user can see
- // where their node was dropped. In particular since that node is still selected.
- this.tree._expandNode(targetWidget);
- }
- this.onDndCancel();
- },
-
- onDndCancel: function(){
- // summary:
- // Topic event processor for /dnd/cancel, called to cancel the DnD operation
- // tags:
- // private
- this._unmarkTargetAnchor();
- this.isDragging = false;
- this.mouseDown = false;
- delete this.mouseButton;
- this._changeState("Source", "");
- this._changeState("Target", "");
- },
-
- // When focus moves in/out of the entire Tree
- onOverEvent: function(){
- // summary:
- // This method is called when mouse is moved over our container (like onmouseenter)
- // tags:
- // private
- this.inherited(arguments);
- dojo.dnd.manager().overSource(this);
- },
- onOutEvent: function(){
- // summary:
- // This method is called when mouse is moved out of our container (like onmouseleave)
- // tags:
- // private
- this._unmarkTargetAnchor();
- var m = dojo.dnd.manager();
- if(this.isDragging){
- m.canDrop(false);
- }
- m.outSource(this);
-
- this.inherited(arguments);
- },
-
- _isParentChildDrop: function(source, targetRow){
- // summary:
- // Checks whether the dragged items are parent rows in the tree which are being
- // dragged into their own children.
- //
- // source:
- // The DragSource object.
- //
- // targetRow:
- // The tree row onto which the dragged nodes are being dropped.
- //
- // tags:
- // private
-
- // If the dragged object is not coming from the tree this widget belongs to,
- // it cannot be invalid.
- if(!source.tree || source.tree != this.tree){
- return false;
- }
-
-
- var root = source.tree.domNode;
- var ids = {};
- for(var x in source.selection){
- ids[source.selection[x].parentNode.id] = true;
- }
-
- var node = targetRow.parentNode;
-
- // Iterate up the DOM hierarchy from the target drop row,
- // checking of any of the dragged nodes have the same ID.
- while(node != root && (!node.id || !ids[node.id])){
- node = node.parentNode;
- }
-
- return node.id && ids[node.id];
- },
-
- _unmarkTargetAnchor: function(){
- // summary:
- // Removes hover class of the current target anchor
- // tags:
- // private
- if(!this.targetAnchor){ return; }
- this._removeItemClass(this.targetAnchor, this.dropPosition);
- this.targetAnchor = null;
- this.targetBox = null;
- this.dropPosition = null;
- },
-
- _markDndStatus: function(copy){
- // summary:
- // Changes source's state based on "copy" status
- this._changeState("Source", copy ? "Copied" : "Moved");
- }
-});
-
-}
diff --git a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/tree/model.js b/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/tree/model.js
deleted file mode 100644
index 8aedc20..0000000
--- a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dijit/tree/model.js
+++ /dev/null
@@ -1,135 +0,0 @@
-/*
- Copyright (c) 2004-2009, The Dojo Foundation All Rights Reserved.
- Available via Academic Free License >= 2.1 OR the modified BSD license.
- see: http://dojotoolkit.org/license for details
-*/
-
-
-
-dojo.declare(
- "dijit.tree.model",
- null,
-{
- // summary:
- // Contract for any data provider object for the tree.
- // description:
- // Tree passes in values to the constructor to specify the callbacks.
- // "item" is typically a dojo.data.Item but it's just a black box so
- // it could be anything.
- //
- // This (like `dojo.data.api.Read`) is just documentation, and not meant to be used.
-
- destroy: function(){
- // summary:
- // Destroys this object, releasing connections to the store
- // tags:
- // extension
- },
-
- // =======================================================================
- // Methods for traversing hierarchy
-
- getRoot: function(onItem){
- // summary:
- // Calls onItem with the root item for the tree, possibly a fabricated item.
- // Throws exception on error.
- // tags:
- // extension
- },
-
- mayHaveChildren: function(/*dojo.data.Item*/ item){
- // summary:
- // Tells if an item has or may have children. Implementing logic here
- // avoids showing +/- expando icon for nodes that we know don't have children.
- // (For efficiency reasons we may not want to check if an element actually
- // has children until user clicks the expando node)
- // tags:
- // extension
- },
-
- getChildren: function(/*dojo.data.Item*/ parentItem, /*function(items)*/ onComplete){
- // summary:
- // Calls onComplete() with array of child items of given parent item, all loaded.
- // Throws exception on error.
- // tags:
- // extension
- },
-
- // =======================================================================
- // Inspecting items
-
- isItem: function(/* anything */ something){
- // summary:
- // Returns true if *something* is an item and came from this model instance.
- // Returns false if *something* is a literal, an item from another model instance,
- // or is any object other than an item.
- // tags:
- // extension
- },
-
- fetchItemByIdentity: function(/* object */ keywordArgs){
- // summary:
- // Given the identity of an item, this method returns the item that has
- // that identity through the onItem callback. Conforming implementations
- // should return null if there is no item with the given identity.
- // Implementations of fetchItemByIdentity() may sometimes return an item
- // from a local cache and may sometimes fetch an item from a remote server.
- // tags:
- // extension
- },
-
- getIdentity: function(/* item */ item){
- // summary:
- // Returns identity for an item
- // tags:
- // extension
- },
-
- getLabel: function(/*dojo.data.Item*/ item){
- // summary:
- // Get the label for an item
- // tags:
- // extension
- },
-
- // =======================================================================
- // Write interface
-
- newItem: function(/* dojo.dnd.Item */ args, /*Item*/ parent, /*int?*/ insertIndex){
- // summary:
- // Creates a new item. See `dojo.data.api.Write` for details on args.
- // tags:
- // extension
- },
-
- pasteItem: function(/*Item*/ childItem, /*Item*/ oldParentItem, /*Item*/ newParentItem, /*Boolean*/ bCopy){
- // summary:
- // Move or copy an item from one parent item to another.
- // Used in drag & drop.
- // If oldParentItem is specified and bCopy is false, childItem is removed from oldParentItem.
- // If newParentItem is specified, childItem is attached to newParentItem.
- // tags:
- // extension
- },
-
- // =======================================================================
- // Callbacks
-
- onChange: function(/*dojo.data.Item*/ item){
- // summary:
- // Callback whenever an item has changed, so that Tree
- // can update the label, icon, etc. Note that changes
- // to an item's children or parent(s) will trigger an
- // onChildrenChange() so you can ignore those changes here.
- // tags:
- // callback
- },
-
- onChildrenChange: function(/*dojo.data.Item*/ parent, /*dojo.data.Item[]*/ newChildrenList){
- // summary:
- // Callback to do notifications about new, updated, or deleted items.
- // tags:
- // callback
- }
-});
-
diff --git a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dojo/AdapterRegistry.js b/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dojo/AdapterRegistry.js
deleted file mode 100644
index 1db7e52..0000000
--- a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dojo/AdapterRegistry.js
+++ /dev/null
@@ -1,106 +0,0 @@
-/*
- Copyright (c) 2004-2009, The Dojo Foundation All Rights Reserved.
- Available via Academic Free License >= 2.1 OR the modified BSD license.
- see: http://dojotoolkit.org/license for details
-*/
-
-
-if(!dojo._hasResource["dojo.AdapterRegistry"]){ //_hasResource checks added by build. Do not use _hasResource directly in your code.
-dojo._hasResource["dojo.AdapterRegistry"] = true;
-dojo.provide("dojo.AdapterRegistry");
-
-dojo.AdapterRegistry = function(/*Boolean?*/ returnWrappers){
- // summary:
- // A registry to make contextual calling/searching easier.
- // description:
- // Objects of this class keep list of arrays in the form [name, check,
- // wrap, directReturn] that are used to determine what the contextual
- // result of a set of checked arguments is. All check/wrap functions
- // in this registry should be of the same arity.
- // example:
- // | // create a new registry
- // | var reg = new dojo.AdapterRegistry();
- // | reg.register("handleString",
- // | dojo.isString,
- // | function(str){
- // | // do something with the string here
- // | }
- // | );
- // | reg.register("handleArr",
- // | dojo.isArray,
- // | function(arr){
- // | // do something with the array here
- // | }
- // | );
- // |
- // | // now we can pass reg.match() *either* an array or a string and
- // | // the value we pass will get handled by the right function
- // | reg.match("someValue"); // will call the first function
- // | reg.match(["someValue"]); // will call the second
-
- this.pairs = [];
- this.returnWrappers = returnWrappers || false; // Boolean
-}
-
-dojo.extend(dojo.AdapterRegistry, {
- register: function(/*String*/ name, /*Function*/ check, /*Function*/ wrap, /*Boolean?*/ directReturn, /*Boolean?*/ override){
- // summary:
- // register a check function to determine if the wrap function or
- // object gets selected
- // name:
- // a way to identify this matcher.
- // check:
- // a function that arguments are passed to from the adapter's
- // match() function. The check function should return true if the
- // given arguments are appropriate for the wrap function.
- // directReturn:
- // If directReturn is true, the value passed in for wrap will be
- // returned instead of being called. Alternately, the
- // AdapterRegistry can be set globally to "return not call" using
- // the returnWrappers property. Either way, this behavior allows
- // the registry to act as a "search" function instead of a
- // function interception library.
- // override:
- // If override is given and true, the check function will be given
- // highest priority. Otherwise, it will be the lowest priority
- // adapter.
- this.pairs[((override) ? "unshift" : "push")]([name, check, wrap, directReturn]);
- },
-
- match: function(/* ... */){
- // summary:
- // Find an adapter for the given arguments. If no suitable adapter
- // is found, throws an exception. match() accepts any number of
- // arguments, all of which are passed to all matching functions
- // from the registered pairs.
- for(var i = 0; i < this.pairs.length; i++){
- var pair = this.pairs[i];
- if(pair[1].apply(this, arguments)){
- if((pair[3])||(this.returnWrappers)){
- return pair[2];
- }else{
- return pair[2].apply(this, arguments);
- }
- }
- }
- throw new Error("No match found");
- },
-
- unregister: function(name){
- // summary: Remove a named adapter from the registry
-
- // FIXME: this is kind of a dumb way to handle this. On a large
- // registry this will be slow-ish and we can use the name as a lookup
- // should we choose to trade memory for speed.
- for(var i = 0; i < this.pairs.length; i++){
- var pair = this.pairs[i];
- if(pair[0] == name){
- this.pairs.splice(i, 1);
- return true;
- }
- }
- return false;
- }
-});
-
-}
diff --git a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dojo/DeferredList.js b/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dojo/DeferredList.js
deleted file mode 100644
index 6bf873f..0000000
--- a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dojo/DeferredList.js
+++ /dev/null
@@ -1,95 +0,0 @@
-/*
- Copyright (c) 2004-2009, The Dojo Foundation All Rights Reserved.
- Available via Academic Free License >= 2.1 OR the modified BSD license.
- see: http://dojotoolkit.org/license for details
-*/
-
-
-if(!dojo._hasResource["dojo.DeferredList"]){ //_hasResource checks added by build. Do not use _hasResource directly in your code.
-dojo._hasResource["dojo.DeferredList"] = true;
-dojo.provide("dojo.DeferredList");
-dojo.declare("dojo.DeferredList", dojo.Deferred, {
- constructor: function(/*Array*/ list, /*Boolean?*/ fireOnOneCallback, /*Boolean?*/ fireOnOneErrback, /*Boolean?*/ consumeErrors, /*Function?*/ canceller){
- // summary:
- // Provides event handling for a group of Deferred objects.
- // description:
- // DeferredList takes an array of existing deferreds and returns a new deferred of its own
- // this new deferred will typically have its callback fired when all of the deferreds in
- // the given list have fired their own deferreds. The parameters `fireOnOneCallback` and
- // fireOnOneErrback, will fire before all the deferreds as appropriate
- //
- // list:
- // The list of deferreds to be synchronizied with this DeferredList
- // fireOnOneCallback:
- // Will cause the DeferredLists callback to be fired as soon as any
- // of the deferreds in its list have been fired instead of waiting until
- // the entire list has finished
- // fireonOneErrback:
- // Will cause the errback to fire upon any of the deferreds errback
- // canceller:
- // A deferred canceller function, see dojo.Deferred
- this.list = list;
- this.resultList = new Array(this.list.length);
-
- // Deferred init
- this.chain = [];
- this.id = this._nextId();
- this.fired = -1;
- this.paused = 0;
- this.results = [null, null];
- this.canceller = canceller;
- this.silentlyCancelled = false;
-
- if(this.list.length === 0 && !fireOnOneCallback){
- this.callback(this.resultList);
- }
-
- this.finishedCount = 0;
- this.fireOnOneCallback = fireOnOneCallback;
- this.fireOnOneErrback = fireOnOneErrback;
- this.consumeErrors = consumeErrors;
-
- dojo.forEach(this.list, function(d, index){
- d.addCallback(this, function(r){ this._cbDeferred(index, true, r); return r; });
- d.addErrback(this, function(r){ this._cbDeferred(index, false, r); return r; });
- }, this);
- },
-
- _cbDeferred: function(index, succeeded, result){
- // summary:
- // The DeferredLists' callback handler
-
- this.resultList[index] = [succeeded, result]; this.finishedCount += 1;
- if(this.fired !== 0){
- if(succeeded && this.fireOnOneCallback){
- this.callback([index, result]);
- }else if(!succeeded && this.fireOnOneErrback){
- this.errback(result);
- }else if(this.finishedCount == this.list.length){
- this.callback(this.resultList);
- }
- }
- if(!succeeded && this.consumeErrors){
- result = null;
- }
- return result;
- },
-
- gatherResults: function(deferredList){
- // summary:
- // Gathers the results of the deferreds for packaging
- // as the parameters to the Deferred Lists' callback
-
- var d = new dojo.DeferredList(deferredList, false, true, false);
- d.addCallback(function(results){
- var ret = [];
- dojo.forEach(results, function(result){
- ret.push(result[1]);
- });
- return ret;
- });
- return d;
- }
-});
-
-}
diff --git a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dojo/LICENSE b/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dojo/LICENSE
deleted file mode 100644
index ad1676a..0000000
--- a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dojo/LICENSE
+++ /dev/null
@@ -1,195 +0,0 @@
-Dojo is available under *either* the terms of the modified BSD license *or* the
-Academic Free License version 2.1. As a recipient of Dojo, you may choose which
-license to receive this code under (except as noted in per-module LICENSE
-files). Some modules may not be the copyright of the Dojo Foundation. These
-modules contain explicit declarations of copyright in both the LICENSE files in
-the directories in which they reside and in the code itself. No external
-contributions are allowed under licenses which are fundamentally incompatible
-with the AFL or BSD licenses that Dojo is distributed under.
-
-The text of the AFL and BSD licenses is reproduced below.
-
--------------------------------------------------------------------------------
-The "New" BSD License:
-**********************
-
-Copyright (c) 2005-2009, The Dojo Foundation
-All rights reserved.
-
-Redistribution and use in source and binary forms, with or without
-modification, are permitted provided that the following conditions are met:
-
- * Redistributions of source code must retain the above copyright notice, this
- list of conditions and the following disclaimer.
- * Redistributions in binary form must reproduce the above copyright notice,
- this list of conditions and the following disclaimer in the documentation
- and/or other materials provided with the distribution.
- * Neither the name of the Dojo Foundation nor the names of its contributors
- may be used to endorse or promote products derived from this software
- without specific prior written permission.
-
-THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
-ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
-WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
-DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE
-FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
-DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
-SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
-CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
-OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
-OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-
--------------------------------------------------------------------------------
-The Academic Free License, v. 2.1:
-**********************************
-
-This Academic Free License (the "License") applies to any original work of
-authorship (the "Original Work") whose owner (the "Licensor") has placed the
-following notice immediately following the copyright notice for the Original
-Work:
-
-Licensed under the Academic Free License version 2.1
-
-1) Grant of Copyright License. Licensor hereby grants You a world-wide,
-royalty-free, non-exclusive, perpetual, sublicenseable license to do the
-following:
-
-a) to reproduce the Original Work in copies;
-
-b) to prepare derivative works ("Derivative Works") based upon the Original
-Work;
-
-c) to distribute copies of the Original Work and Derivative Works to the
-public;
-
-d) to perform the Original Work publicly; and
-
-e) to display the Original Work publicly.
-
-2) Grant of Patent License. Licensor hereby grants You a world-wide,
-royalty-free, non-exclusive, perpetual, sublicenseable license, under patent
-claims owned or controlled by the Licensor that are embodied in the Original
-Work as furnished by the Licensor, to make, use, sell and offer for sale the
-Original Work and Derivative Works.
-
-3) Grant of Source Code License. The term "Source Code" means the preferred
-form of the Original Work for making modifications to it and all available
-documentation describing how to modify the Original Work. Licensor hereby
-agrees to provide a machine-readable copy of the Source Code of the Original
-Work along with each copy of the Original Work that Licensor distributes.
-Licensor reserves the right to satisfy this obligation by placing a
-machine-readable copy of the Source Code in an information repository
-reasonably calculated to permit inexpensive and convenient access by You for as
-long as Licensor continues to distribute the Original Work, and by publishing
-the address of that information repository in a notice immediately following
-the copyright notice that applies to the Original Work.
-
-4) Exclusions From License Grant. Neither the names of Licensor, nor the names
-of any contributors to the Original Work, nor any of their trademarks or
-service marks, may be used to endorse or promote products derived from this
-Original Work without express prior written permission of the Licensor. Nothing
-in this License shall be deemed to grant any rights to trademarks, copyrights,
-patents, trade secrets or any other intellectual property of Licensor except as
-expressly stated herein. No patent license is granted to make, use, sell or
-offer to sell embodiments of any patent claims other than the licensed claims
-defined in Section 2. No right is granted to the trademarks of Licensor even if
-such marks are included in the Original Work. Nothing in this License shall be
-interpreted to prohibit Licensor from licensing under different terms from this
-License any Original Work that Licensor otherwise would have a right to
-license.
-
-5) This section intentionally omitted.
-
-6) Attribution Rights. You must retain, in the Source Code of any Derivative
-Works that You create, all copyright, patent or trademark notices from the
-Source Code of the Original Work, as well as any notices of licensing and any
-descriptive text identified therein as an "Attribution Notice." You must cause
-the Source Code for any Derivative Works that You create to carry a prominent
-Attribution Notice reasonably calculated to inform recipients that You have
-modified the Original Work.
-
-7) Warranty of Provenance and Disclaimer of Warranty. Licensor warrants that
-the copyright in and to the Original Work and the patent rights granted herein
-by Licensor are owned by the Licensor or are sublicensed to You under the terms
-of this License with the permission of the contributor(s) of those copyrights
-and patent rights. Except as expressly stated in the immediately proceeding
-sentence, the Original Work is provided under this License on an "AS IS" BASIS
-and WITHOUT WARRANTY, either express or implied, including, without limitation,
-the warranties of NON-INFRINGEMENT, MERCHANTABILITY or FITNESS FOR A PARTICULAR
-PURPOSE. THE ENTIRE RISK AS TO THE QUALITY OF THE ORIGINAL WORK IS WITH YOU.
-This DISCLAIMER OF WARRANTY constitutes an essential part of this License. No
-license to Original Work is granted hereunder except under this disclaimer.
-
-8) Limitation of Liability. Under no circumstances and under no legal theory,
-whether in tort (including negligence), contract, or otherwise, shall the
-Licensor be liable to any person for any direct, indirect, special, incidental,
-or consequential damages of any character arising as a result of this License
-or the use of the Original Work including, without limitation, damages for loss
-of goodwill, work stoppage, computer failure or malfunction, or any and all
-other commercial damages or losses. This limitation of liability shall not
-apply to liability for death or personal injury resulting from Licensor's
-negligence to the extent applicable law prohibits such limitation. Some
-jurisdictions do not allow the exclusion or limitation of incidental or
-consequential damages, so this exclusion and limitation may not apply to You.
-
-9) Acceptance and Termination. If You distribute copies of the Original Work or
-a Derivative Work, You must make a reasonable effort under the circumstances to
-obtain the express assent of recipients to the terms of this License. Nothing
-else but this License (or another written agreement between Licensor and You)
-grants You permission to create Derivative Works based upon the Original Work
-or to exercise any of the rights granted in Section 1 herein, and any attempt
-to do so except under the terms of this License (or another written agreement
-between Licensor and You) is expressly prohibited by U.S. copyright law, the
-equivalent laws of other countries, and by international treaty. Therefore, by
-exercising any of the rights granted to You in Section 1 herein, You indicate
-Your acceptance of this License and all of its terms and conditions.
-
-10) Termination for Patent Action. This License shall terminate automatically
-and You may no longer exercise any of the rights granted to You by this License
-as of the date You commence an action, including a cross-claim or counterclaim,
-against Licensor or any licensee alleging that the Original Work infringes a
-patent. This termination provision shall not apply for an action alleging
-patent infringement by combinations of the Original Work with other software or
-hardware.
-
-11) Jurisdiction, Venue and Governing Law. Any action or suit relating to this
-License may be brought only in the courts of a jurisdiction wherein the
-Licensor resides or in which Licensor conducts its primary business, and under
-the laws of that jurisdiction excluding its conflict-of-law provisions. The
-application of the United Nations Convention on Contracts for the International
-Sale of Goods is expressly excluded. Any use of the Original Work outside the
-scope of this License or after its termination shall be subject to the
-requirements and penalties of the U.S. Copyright Act, 17 U.S.C. § 101 et
-seq., the equivalent laws of other countries, and international treaty. This
-section shall survive the termination of this License.
-
-12) Attorneys Fees. In any action to enforce the terms of this License or
-seeking damages relating thereto, the prevailing party shall be entitled to
-recover its costs and expenses, including, without limitation, reasonable
-attorneys' fees and costs incurred in connection with such action, including
-any appeal of such action. This section shall survive the termination of this
-License.
-
-13) Miscellaneous. This License represents the complete agreement concerning
-the subject matter hereof. If any provision of this License is held to be
-unenforceable, such provision shall be reformed only to the extent necessary to
-make it enforceable.
-
-14) Definition of "You" in This License. "You" throughout this License, whether
-in upper or lower case, means an individual or a legal entity exercising rights
-under, and complying with all of the terms of, this License. For legal
-entities, "You" includes any entity that controls, is controlled by, or is
-under common control with you. For purposes of this definition, "control" means
-(i) the power, direct or indirect, to cause the direction or management of such
-entity, whether by contract or otherwise, or (ii) ownership of fifty percent
-(50%) or more of the outstanding shares, or (iii) beneficial ownership of such
-entity.
-
-15) Right to Use. You may use the Original Work in all ways not otherwise
-restricted or conditioned by this License or by law, and Licensor promises not
-to interfere with or be responsible for such uses by You.
-
-This license is Copyright (C) 2003-2004 Lawrence E. Rosen. All rights reserved.
-Permission is hereby granted to copy and distribute this license without
-modification. This license may not be modified without the express written
-permission of its copyright owner.
diff --git a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dojo/NodeList-fx.js b/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dojo/NodeList-fx.js
deleted file mode 100644
index cbc0ac3..0000000
--- a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dojo/NodeList-fx.js
+++ /dev/null
@@ -1,144 +0,0 @@
-/*
- Copyright (c) 2004-2009, The Dojo Foundation All Rights Reserved.
- Available via Academic Free License >= 2.1 OR the modified BSD license.
- see: http://dojotoolkit.org/license for details
-*/
-
-
-if(!dojo._hasResource["dojo.NodeList-fx"]){ //_hasResource checks added by build. Do not use _hasResource directly in your code.
-dojo._hasResource["dojo.NodeList-fx"] = true;
-dojo.provide("dojo.NodeList-fx");
-dojo.require("dojo.fx");
-
-/*=====
-dojo["NodeList-fx"] = {
- // summary: Adds dojo.fx animation support to dojo.query()
-};
-=====*/
-
-dojo.extend(dojo.NodeList, {
- _anim: function(obj, method, args){
- args = args||{};
- return dojo.fx.combine(
- this.map(function(item){
- var tmpArgs = { node: item };
- dojo.mixin(tmpArgs, args);
- return obj[method](tmpArgs);
- })
- ); // dojo.Animation
- },
-
- wipeIn: function(args){
- // summary:
- // wipe in all elements of this NodeList. Returns an instance of dojo.Animation
- // example:
- // Fade in all tables with class "blah":
- // | dojo.query("table.blah").wipeIn().play();
- return this._anim(dojo.fx, "wipeIn", args); // dojo.Animation
- },
-
- wipeOut: function(args){
- // summary:
- // wipe out all elements of this NodeList. Returns an instance of dojo.Animation
- // example:
- // Wipe out all tables with class "blah":
- // | dojo.query("table.blah").wipeOut().play();
- return this._anim(dojo.fx, "wipeOut", args); // dojo.Animation
- },
-
- slideTo: function(args){
- // summary:
- // slide all elements of the node list to the specified place.
- // Returns an instance of dojo.Animation
- // example:
- // | Move all tables with class "blah" to 300/300:
- // | dojo.query("table.blah").slideTo({
- // | left: 40,
- // | top: 50
- // | }).play();
- return this._anim(dojo.fx, "slideTo", args); // dojo.Animation
- },
-
-
- fadeIn: function(args){
- // summary:
- // fade in all elements of this NodeList. Returns an instance of dojo.Animation
- // example:
- // Fade in all tables with class "blah":
- // | dojo.query("table.blah").fadeIn().play();
- return this._anim(dojo, "fadeIn", args); // dojo.Animation
- },
-
- fadeOut: function(args){
- // summary:
- // fade out all elements of this NodeList. Returns an instance of dojo.Animation
- // example:
- // Fade out all elements with class "zork":
- // | dojo.query(".zork").fadeOut().play();
- // example:
- // Fade them on a delay and do something at the end:
- // | var fo = dojo.query(".zork").fadeOut();
- // | dojo.connect(fo, "onEnd", function(){ /*...*/ });
- // | fo.play();
- return this._anim(dojo, "fadeOut", args); // dojo.Animation
- },
-
- animateProperty: function(args){
- // summary:
- // see dojo.animateProperty(). Animate all elements of this
- // NodeList across the properties specified.
- // example:
- // | dojo.query(".zork").animateProperty({
- // | duration: 500,
- // | properties: {
- // | color: { start: "black", end: "white" },
- // | left: { end: 300 }
- // | }
- // | }).play();
- return this._anim(dojo, "animateProperty", args); // dojo.Animation
- },
-
- anim: function( /*Object*/ properties,
- /*Integer?*/ duration,
- /*Function?*/ easing,
- /*Function?*/ onEnd,
- /*Integer?*/ delay){
- // summary:
- // Animate one or more CSS properties for all nodes in this list.
- // The returned animation object will already be playing when it
- // is returned. See the docs for `dojo.anim` for full details.
- // properties: Object
- // the properties to animate
- // duration: Integer?
- // Optional. The time to run the animations for
- // easing: Function?
- // Optional. The easing function to use.
- // onEnd: Function?
- // A function to be called when the animation ends
- // delay:
- // how long to delay playing the returned animation
- // example:
- // Another way to fade out:
- // | dojo.query(".thinger").anim({ opacity: 0 });
- // example:
- // animate all elements with the "thigner" class to a width of 500
- // pixels over half a second
- // | dojo.query(".thinger").anim({ width: 500 }, 700);
- var canim = dojo.fx.combine(
- this.map(function(item){
- return dojo.animateProperty({
- node: item,
- properties: properties,
- duration: duration||350,
- easing: easing
- });
- })
- );
- if(onEnd){
- dojo.connect(canim, "onEnd", onEnd);
- }
- return canim.play(delay||0); // dojo.Animation
- }
-});
-
-}
diff --git a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dojo/NodeList-html.js b/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dojo/NodeList-html.js
deleted file mode 100644
index 66499c8..0000000
--- a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dojo/NodeList-html.js
+++ /dev/null
@@ -1,49 +0,0 @@
-/*
- Copyright (c) 2004-2009, The Dojo Foundation All Rights Reserved.
- Available via Academic Free License >= 2.1 OR the modified BSD license.
- see: http://dojotoolkit.org/license for details
-*/
-
-
-if(!dojo._hasResource["dojo.NodeList-html"]){ //_hasResource checks added by build. Do not use _hasResource directly in your code.
-dojo._hasResource["dojo.NodeList-html"] = true;
-dojo.provide("dojo.NodeList-html");
-dojo.require("dojo.html");
-
-/*=====
-dojo["NodeList-html"] = {
- // summary: Adds a chainable html method to dojo.query() / Nodelist instances for setting/replacing node content
-};
-=====*/
-
-dojo.extend(dojo.NodeList, {
- html: function(content, /* Object? */params){
- // summary:
- // see `dojo.html.set()`. Set the content of all elements of this NodeList
- //
- // description:
- // Based around `dojo.html.set()`, set the content of the Elements in a
- // NodeList to the given content (string/node/nodelist), with optional arguments
- // to further tune the set content behavior.
- //
- // example:
- // | dojo.query(".thingList").html("<li dojoType='dojo.dnd.Moveable'>1</li><li dojoType='dojo.dnd.Moveable'>2</li><li dojoType='dojo.dnd.Moveable'>3</li>",
- // | {
- // | parseContent: true,
- // | onBegin: function(){
- // | this.content = this.content.replace(/([0-9])/g, this.id + ": $1");
- // | this.inherited("onBegin", arguments);
- // | }
- // | }).removeClass("notdone").addClass("done");
-
- var dhs = new dojo.html._ContentSetter(params || {});
- this.forEach(function(elm){
- dhs.node = elm;
- dhs.set(content);
- dhs.tearDown();
- });
- return this; // dojo.NodeList
- }
-});
-
-}
diff --git a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dojo/NodeList-manipulate.js b/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dojo/NodeList-manipulate.js
deleted file mode 100644
index f60b3e3..0000000
--- a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dojo/NodeList-manipulate.js
+++ /dev/null
@@ -1,731 +0,0 @@
-/*
- Copyright (c) 2004-2009, The Dojo Foundation All Rights Reserved.
- Available via Academic Free License >= 2.1 OR the modified BSD license.
- see: http://dojotoolkit.org/license for details
-*/
-
-
-if(!dojo._hasResource["dojo.NodeList-manipulate"]){ //_hasResource checks added by build. Do not use _hasResource directly in your code.
-dojo._hasResource["dojo.NodeList-manipulate"] = true;
-dojo.provide("dojo.NodeList-manipulate");
-
-/*=====
-dojo["NodeList-manipulate"] = {
- // summary: Adds a chainable methods to dojo.query() / Nodelist instances for manipulating HTML
- // and DOM nodes and their properties.
-};
-=====*/
-
-//TODO: add a way to parse for widgets in the injected markup?
-
-(function(){
- function getText(/*DOMNode*/node){
- // summary:
- // recursion method for text() to use. Gets text value for a node.
- // description:
- // Juse uses nodedValue so things like <br/> tags do not end up in
- // the text as any sort of line return.
- var text = "", ch = node.childNodes;
- for(var i = 0, n; n = ch[i]; i++){
- //Skip comments.
- if(n.nodeType != 8){
- if(n.nodeType == 1){
- text += getText(n);
- }else{
- text += n.nodeValue;
- }
- }
- }
- return text;
- }
-
- function getWrapInsertion(/*DOMNode*/node){
- // summary:
- // finds the innermost element to use for wrap insertion.
-
- //Make it easy, assume single nesting, no siblings.
- while(node.childNodes[0] && node.childNodes[0].nodeType == 1){
- node = node.childNodes[0];
- }
- return node; //DOMNode
- }
-
- function makeWrapNode(/*DOMNode||String*/html, /*DOMNode*/refNode){
- // summary:
- // convert HTML into nodes if it is not already a node.
- if(typeof html == "string"){
- html = dojo._toDom(html, (refNode && refNode.ownerDocument));
- if(html.nodeType == 11){
- //DocumentFragment cannot handle cloneNode, so choose first child.
- html = html.childNodes[0];
- }
- }else if(html.nodeType == 1 && html.parentNode){
- //This element is already in the DOM clone it, but not its children.
- html = html.cloneNode(false);
- }
- return html; /*DOMNode*/
- }
-
- dojo.extend(dojo.NodeList, {
- _placeMultiple: function(/*String||Node||NodeList*/query, /*String*/position){
- // summary:
- // private method for inserting queried nodes into all nodes in this NodeList
- // at different positions. Differs from NodeList.place because it will clone
- // the nodes in this NodeList if the query matches more than one element.
- var nl2 = typeof query == "string" || query.nodeType ? dojo.query(query) : query;
- var toAdd = [];
- for(var i = 0; i < nl2.length; i++){
- //Go backwards in DOM to make dom insertions easier via insertBefore
- var refNode = nl2[i];
- var length = this.length;
- for(var j = length - 1, item; item = this[j]; j--){
- if(i > 0){
- //Need to clone the item. This also means
- //it needs to be added to the current NodeList
- //so it can also be the target of other chaining operations.
- item = this._cloneNode(item);
- toAdd.unshift(item);
- }
- if(j == length - 1){
- dojo.place(item, refNode, position);
- }else{
- refNode.parentNode.insertBefore(item, refNode);
- }
- refNode = item;
- }
- }
-
- if(toAdd.length){
- //Add the toAdd items to the current NodeList. Build up list of args
- //to pass to splice.
- toAdd.unshift(0);
- toAdd.unshift(this.length - 1);
- Array.prototype.splice.apply(this, toAdd);
- }
-
- return this; //dojo.NodeList
- },
-
- innerHTML: function(/*String?||DOMNode?|NodeList?*/value){
- // summary:
- // allows setting the innerHTML of each node in the NodeList,
- // if there is a value passed in, otherwise, reads the innerHTML value of the first node.
- // description:
- // This method is simpler than the dojo.NodeList.html() method provided by
- // `dojo.NodeList-html`. This method just does proper innerHTML insertion of HTML fragments,
- // and it allows for the innerHTML to be read for the first node in the node list.
- // Since dojo.NodeList-html already took the "html" name, this method is called
- // "innerHTML". However, if dojo.NodeList-html has not been loaded yet, this
- // module will define an "html" method that can be used instead. Be careful if you
- // are working in an environment where it is possible that dojo.NodeList-html could
- // have been loaded, since its definition of "html" will take precedence.
- // The nodes represented by the value argument will be cloned if more than one
- // node is in this NodeList. The nodes in this NodeList are returned in the "set"
- // usage of this method, not the HTML that was inserted.
- // returns:
- // if no value is passed, the result is String, the innerHTML of the first node.
- // If a value is passed, the return is this dojo.NodeList
- // example:
- // assume a DOM created by this markup:
- // | <div id="foo"></div>
- // | <div id="bar"></div>
- // This code inserts <p>Hello World</p> into both divs:
- // | dojo.query("div").innerHTML("<p>Hello World</p>");
- // example:
- // assume a DOM created by this markup:
- // | <div id="foo"><p>Hello Mars</p></div>
- // | <div id="bar"><p>Hello World</p></div>
- // This code returns "<p>Hello Mars</p>":
- // | var message = dojo.query("div").innerHTML();
- if(arguments.length){
- return this.addContent(value, "only"); //dojo.NodeList
- }else{
- return this[0].innerHTML; //String
- }
- },
-
- /*=====
- html: function(value){
- // summary:
- // see the information for "innerHTML". "html" is an alias for "innerHTML", but is
- // only defined if dojo.NodeList-html has not been loaded.
- // description:
- // An alias for the "innerHTML" method, but only defined if there is not an existing
- // "html" method on dojo.NodeList. Be careful if you are working in an environment
- // where it is possible that dojo.NodeList-html could have been loaded, since its
- // definition of "html" will take precedence. If you are not sure if dojo.NodeList-html
- // could be loaded, use the "innerHTML" method.
- // value: String?||DOMNode?||NodeList?
- // optional. The HTML fragment to use as innerHTML. If value is not passed, then the innerHTML
- // of the first element in this NodeList is returned.
- // returns:
- // if no value is passed, the result is String, the innerHTML of the first node.
- // If a value is passed, the return is this dojo.NodeList
- return; // dojo.NodeList
- return; // String
- },
- =====*/
-
- text: function(/*String*/value){
- // summary:
- // allows setting the text value of each node in the NodeList,
- // if there is a value passed in, otherwise, returns the text value for all the
- // nodes in the NodeList in one string.
- // example:
- // assume a DOM created by this markup:
- // | <div id="foo"></div>
- // | <div id="bar"></div>
- // This code inserts "Hello World" into both divs:
- // | dojo.query("div").text("Hello World");
- // example:
- // assume a DOM created by this markup:
- // | <div id="foo"><p>Hello Mars <span>today</span></p></div>
- // | <div id="bar"><p>Hello World</p></div>
- // This code returns "Hello Mars today":
- // | var message = dojo.query("div").text();
- // returns:
- // if no value is passed, the result is String, the text value of the first node.
- // If a value is passed, the return is this dojo.NodeList
- if(arguments.length){
- for(var i = 0, node; node = this[i]; i++){
- if(node.nodeType == 1){
- dojo.empty(node);
- node.appendChild(node.ownerDocument.createTextNode(value));
- }
- }
- return this; //dojo.NodeList
- }else{
- var result = "";
- for(i = 0; node = this[i]; i++){
- result += getText(node);
- }
- return result; //String
- }
- },
-
- val: function(/*String||Array*/value){
- // summary:
- // If a value is passed, allows seting the value property of form elements in this
- // NodeList, or properly selecting/checking the right value for radio/checkbox/select
- // elements. If no value is passed, the value of the first node in this NodeList
- // is returned.
- // returns:
- // if no value is passed, the result is String or an Array, for the value of the
- // first node.
- // If a value is passed, the return is this dojo.NodeList
- // example:
- // assume a DOM created by this markup:
- // | <input type="text" value="foo">
- // | <select multiple>
- // | <option value="red" selected>Red</option>
- // | <option value="blue">Blue</option>
- // | <option value="yellow" selected>Yellow</option>
- // | </select>
- // This code gets and sets the values for the form fields above:
- // | dojo.query('[type="text"]').val(); //gets value foo
- // | dojo.query('[type="text"]').val("bar"); //sets the input's value to "bar"
- // | dojo.query("select").val() //gets array value ["red", "yellow"]
- // | dojo.query("select").val(["blue", "yellow"]) //Sets the blue and yellow options to selected.
-
- //Special work for input elements.
- if(arguments.length){
- var isArray = dojo.isArray(value);
- for(var index = 0, node; node = this[index]; index++){
- var name = node.nodeName.toUpperCase();
- var type = node.type;
- var newValue = isArray ? value[index] : value;
-
- if(name == "SELECT"){
- var opts = node.options;
- for(var i = 0; i < opts.length; i++){
- var opt = opts[i];
- if(node.multiple){
- opt.selected = (dojo.indexOf(value, opt.value) != -1);
- }else{
- opt.selected = (opt.value == newValue);
- }
- }
- }else if(type == "checkbox" || type == "radio"){
- node.checked = (node.value == newValue);
- }else{
- node.value = newValue;
- }
- }
- return this; //dojo.NodeList
- }else{
- //node already declared above.
- node = this[0];
- if(!node || node.nodeType != 1){
- return undefined;
- }
- value = node.value || "";
- if(node.nodeName.toUpperCase() == "SELECT" && node.multiple){
- //A multivalued selectbox. Do the pain.
- value = [];
- //opts declared above in if block.
- opts = node.options;
- //i declared above in if block;
- for(i = 0; i < opts.length; i++){
- //opt declared above in if block
- opt = opts[i];
- if(opt.selected){
- value.push(opt.value);
- }
- }
- if(!value.length){
- value = null;
- }
- }
- return value; //String||Array
- }
- },
-
- append: function(/*String||DOMNode||NodeList*/content){
- // summary:
- // appends the content to every node in the NodeList.
- // description:
- // The content will be cloned if the length of NodeList
- // is greater than 1. Only the DOM nodes are cloned, not
- // any attached event handlers.
- // returns:
- // dojo.NodeList, the nodes currently in this NodeList will be returned,
- // not the appended content.
- // example:
- // assume a DOM created by this markup:
- // | <div id="foo"><p>Hello Mars</p></div>
- // | <div id="bar"><p>Hello World</p></div>
- // Running this code:
- // | dojo.query("div").append("<span>append</span>");
- // Results in this DOM structure:
- // | <div id="foo"><p>Hello Mars</p><span>append</span></div>
- // | <div id="bar"><p>Hello World</p><span>append</span></div>
- return this.addContent(content, "last"); //dojo.NodeList
- },
-
- appendTo: function(/*String*/query){
- // summary:
- // appends nodes in this NodeList to the nodes matched by
- // the query passed to appendTo.
- // description:
- // The nodes in this NodeList will be cloned if the query
- // matches more than one element. Only the DOM nodes are cloned, not
- // any attached event handlers.
- // returns:
- // dojo.NodeList, the nodes currently in this NodeList will be returned,
- // not the matched nodes from the query.
- // example:
- // assume a DOM created by this markup:
- // | <span>append</span>
- // | <p>Hello Mars</p>
- // | <p>Hello World</p>
- // Running this code:
- // | dojo.query("span").appendTo("p");
- // Results in this DOM structure:
- // | <p>Hello Mars<span>append</span></p>
- // | <p>Hello World<span>append</span></p>
- return this._placeMultiple(query, "last"); //dojo.NodeList
- },
-
- prepend: function(/*String||DOMNode||NodeList*/content){
- // summary:
- // prepends the content to every node in the NodeList.
- // description:
- // The content will be cloned if the length of NodeList
- // is greater than 1. Only the DOM nodes are cloned, not
- // any attached event handlers.
- // returns:
- // dojo.NodeList, the nodes currently in this NodeList will be returned,
- // not the appended content.
- // assume a DOM created by this markup:
- // | <div id="foo"><p>Hello Mars</p></div>
- // | <div id="bar"><p>Hello World</p></div>
- // Running this code:
- // | dojo.query("div").prepend("<span>prepend</span>");
- // Results in this DOM structure:
- // | <div id="foo"><span>prepend</span><p>Hello Mars</p></div>
- // | <div id="bar"><span>prepend</span><p>Hello World</p></div>
- return this.addContent(content, "first"); //dojo.NodeList
- },
-
- prependTo: function(/*String*/query){
- // summary:
- // prepends nodes in this NodeList to the nodes matched by
- // the query passed to prependTo.
- // description:
- // The nodes in this NodeList will be cloned if the query
- // matches more than one element. Only the DOM nodes are cloned, not
- // any attached event handlers.
- // returns:
- // dojo.NodeList, the nodes currently in this NodeList will be returned,
- // not the matched nodes from the query.
- // example:
- // assume a DOM created by this markup:
- // | <span>prepend</span>
- // | <p>Hello Mars</p>
- // | <p>Hello World</p>
- // Running this code:
- // | dojo.query("span").prependTo("p");
- // Results in this DOM structure:
- // | <p><span>prepend</span>Hello Mars</p>
- // | <p><span>prepend</span>Hello World</p>
- return this._placeMultiple(query, "first"); //dojo.NodeList
- },
-
- after: function(/*String||Element||NodeList*/content){
- // summary:
- // Places the content after every node in the NodeList.
- // description:
- // The content will be cloned if the length of NodeList
- // is greater than 1. Only the DOM nodes are cloned, not
- // any attached event handlers.
- // returns:
- // dojo.NodeList, the nodes currently in this NodeList will be returned,
- // not the appended content.
- // example:
- // assume a DOM created by this markup:
- // | <div id="foo"><p>Hello Mars</p></div>
- // | <div id="bar"><p>Hello World</p></div>
- // Running this code:
- // | dojo.query("div").after("<span>after</span>");
- // Results in this DOM structure:
- // | <div id="foo"><p>Hello Mars</p></div><span>after</span>
- // | <div id="bar"><p>Hello World</p></div><span>after</span>
- return this.addContent(content, "after"); //dojo.NodeList
- },
-
- insertAfter: function(/*String*/query){
- // summary:
- // The nodes in this NodeList will be placed after the nodes
- // matched by the query passed to insertAfter.
- // description:
- // The nodes in this NodeList will be cloned if the query
- // matches more than one element. Only the DOM nodes are cloned, not
- // any attached event handlers.
- // returns:
- // dojo.NodeList, the nodes currently in this NodeList will be returned,
- // not the matched nodes from the query.
- // example:
- // assume a DOM created by this markup:
- // | <span>after</span>
- // | <p>Hello Mars</p>
- // | <p>Hello World</p>
- // Running this code:
- // | dojo.query("span").insertAfter("p");
- // Results in this DOM structure:
- // | <p>Hello Mars</p><span>after</span>
- // | <p>Hello World</p><span>after</span>
- return this._placeMultiple(query, "after"); //dojo.NodeList
- },
-
- before: function(/*String||DOMNode||NodeList*/content){
- // summary:
- // Places the content before every node in the NodeList.
- // description:
- // The content will be cloned if the length of NodeList
- // is greater than 1. Only the DOM nodes are cloned, not
- // any attached event handlers.
- // returns:
- // dojo.NodeList, the nodes currently in this NodeList will be returned,
- // not the appended content.
- // example:
- // assume a DOM created by this markup:
- // | <div id="foo"><p>Hello Mars</p></div>
- // | <div id="bar"><p>Hello World</p></div>
- // Running this code:
- // | dojo.query("div").before("<span>before</span>");
- // Results in this DOM structure:
- // | <span>before</span><div id="foo"><p>Hello Mars</p></div>
- // | <span>before</span><div id="bar"><p>Hello World</p></div>
- return this.addContent(content, "before"); //dojo.NodeList
- },
-
- insertBefore: function(/*String*/query){
- // summary:
- // The nodes in this NodeList will be placed after the nodes
- // matched by the query passed to insertAfter.
- // description:
- // The nodes in this NodeList will be cloned if the query
- // matches more than one element. Only the DOM nodes are cloned, not
- // any attached event handlers.
- // returns:
- // dojo.NodeList, the nodes currently in this NodeList will be returned,
- // not the matched nodes from the query.
- // example:
- // assume a DOM created by this markup:
- // | <span>before</span>
- // | <p>Hello Mars</p>
- // | <p>Hello World</p>
- // Running this code:
- // | dojo.query("span").insertBefore("p");
- // Results in this DOM structure:
- // | <span>before</span><p>Hello Mars</p>
- // | <span>before</span><p>Hello World</p>
- return this._placeMultiple(query, "before"); //dojo.NodeList
- },
-
- /*=====
- remove: function(simpleFilter){
- // summary:
- // alias for dojo.NodeList's orphan method. Removes elements
- // in this list that match the simple filter from their parents
- // and returns them as a new NodeList.
- // simpleFilter: String
- // single-expression CSS rule. For example, ".thinger" or
- // "#someId[attrName='value']" but not "div > span". In short,
- // anything which does not invoke a descent to evaluate but
- // can instead be used to test a single node is acceptable.
- // returns:
- // dojo.NodeList
- return; // dojo.NodeList
- },
- =====*/
- remove: dojo.NodeList.prototype.orphan,
-
- wrap: function(/*String||DOMNode*/html){
- // summary:
- // Wrap each node in the NodeList with html passed to wrap.
- // description:
- // html will be cloned if the NodeList has more than one
- // element. Only DOM nodes are cloned, not any attached
- // event handlers.
- // returns:
- // dojo.NodeList, the nodes in the current NodeList will be returned,
- // not the nodes from html argument.
- // example:
- // assume a DOM created by this markup:
- // | <b>one</b>
- // | <b>two</b>
- // Running this code:
- // | dojo.query("b").wrap("<div><span></span></div>");
- // Results in this DOM structure:
- // | <div><span><b>one</b></span></div>
- // | <div><span><b>two</b></span></div>
- if(this[0]){
- html = makeWrapNode(html, this[0]);
-
- //Now cycle through the elements and do the insertion.
- for(var i = 0, node; node = this[i]; i++){
- //Always clone because if html is used to hold one of
- //the "this" nodes, then on the clone of html it will contain
- //that "this" node, and that would be bad.
- var clone = this._cloneNode(html);
- if(node.parentNode){
- node.parentNode.replaceChild(clone, node);
- }
- //Find deepest element and insert old node in it.
- var insertion = getWrapInsertion(clone);
- insertion.appendChild(node);
- }
- }
- return this; //dojo.NodeList
- },
-
- wrapAll: function(/*String||DOMNode*/html){
- // summary:
- // Insert html where the first node in this NodeList lives, then place all
- // nodes in this NodeList as the child of the html.
- // returns:
- // dojo.NodeList, the nodes in the current NodeList will be returned,
- // not the nodes from html argument.
- // example:
- // assume a DOM created by this markup:
- // | <div class="container">
- // | <div class="red">Red One</div>
- // | <div class="blue">Blue One</div>
- // | <div class="red">Red Two</div>
- // | <div class="blue">Blue Two</div>
- // | </div>
- // Running this code:
- // | dojo.query(".red").wrapAll('<div class="allRed"></div>');
- // Results in this DOM structure:
- // | <div class="container">
- // | <div class="allRed">
- // | <div class="red">Red One</div>
- // | <div class="red">Red Two</div>
- // | </div>
- // | <div class="blue">Blue One</div>
- // | <div class="blue">Blue Two</div>
- // | </div>
- if(this[0]){
- html = makeWrapNode(html, this[0]);
-
- //Place the wrap HTML in place of the first node.
- this[0].parentNode.replaceChild(html, this[0]);
-
- //Now cycle through the elements and move them inside
- //the wrap.
- var insertion = getWrapInsertion(html);
- for(var i = 0, node; node = this[i]; i++){
- insertion.appendChild(node);
- }
- }
- return this; //dojo.NodeList
- },
-
- wrapInner: function(/*String||DOMNode*/html){
- // summary:
- // For each node in the NodeList, wrap all its children with the passed in html.
- // description:
- // html will be cloned if the NodeList has more than one
- // element. Only DOM nodes are cloned, not any attached
- // event handlers.
- // returns:
- // dojo.NodeList, the nodes in the current NodeList will be returned,
- // not the nodes from html argument.
- // example:
- // assume a DOM created by this markup:
- // | <div class="container">
- // | <div class="red">Red One</div>
- // | <div class="blue">Blue One</div>
- // | <div class="red">Red Two</div>
- // | <div class="blue">Blue Two</div>
- // | </div>
- // Running this code:
- // | dojo.query(".red").wrapInner('<span class="special"></span>');
- // Results in this DOM structure:
- // | <div class="container">
- // | <div class="red"><span class="special">Red One</span></div>
- // | <div class="blue">Blue One</div>
- // | <div class="red"><span class="special">Red Two</span></div>
- // | <div class="blue">Blue Two</div>
- // | </div>
- if(this[0]){
- html = makeWrapNode(html, this[0]);
- for(var i = 0; i < this.length; i++){
- //Always clone because if html is used to hold one of
- //the "this" nodes, then on the clone of html it will contain
- //that "this" node, and that would be bad.
- var clone = this._cloneNode(html);
-
- //Need to convert the childNodes to an array since wrapAll modifies the
- //DOM and can change the live childNodes NodeList.
- this._wrap(dojo._toArray(this[i].childNodes), null, this._NodeListCtor).wrapAll(clone);
- }
- }
- return this; //dojo.NodeList
- },
-
- replaceWith: function(/*String||DOMNode||NodeList*/content){
- // summary:
- // Replaces each node in ths NodeList with the content passed to replaceWith.
- // description:
- // The content will be cloned if the length of NodeList
- // is greater than 1. Only the DOM nodes are cloned, not
- // any attached event handlers.
- // returns:
- // The nodes currently in this NodeList will be returned, not the replacing content.
- // Note that the returned nodes have been removed from the DOM.
- // example:
- // assume a DOM created by this markup:
- // | <div class="container">
- // | <div class="red">Red One</div>
- // | <div class="blue">Blue One</div>
- // | <div class="red">Red Two</div>
- // | <div class="blue">Blue Two</div>
- // | </div>
- // Running this code:
- // | dojo.query(".red").replaceWith('<div class="green">Green</div>');
- // Results in this DOM structure:
- // | <div class="container">
- // | <div class="green">Green</div>
- // | <div class="blue">Blue One</div>
- // | <div class="green">Green</div>
- // | <div class="blue">Blue Two</div>
- // | </div>
- content = this._normalize(content, this[0]);
- for(var i = 0, node; node = this[i]; i++){
- this._place(content, node, "before", i > 0);
- node.parentNode.removeChild(node);
- }
- return this; //dojo.NodeList
- },
-
- replaceAll: function(/*String*/query){
- // summary:
- // replaces nodes matched by the query passed to replaceAll with the nodes
- // in this NodeList.
- // description:
- // The nodes in this NodeList will be cloned if the query
- // matches more than one element. Only the DOM nodes are cloned, not
- // any attached event handlers.
- // returns:
- // The nodes currently in this NodeList will be returned, not the matched nodes
- // from the query. The nodes currently in this NodeLIst could have
- // been cloned, so the returned NodeList will include the cloned nodes.
- // example:
- // assume a DOM created by this markup:
- // | <div class="container">
- // | <div class="spacer">___</div>
- // | <div class="red">Red One</div>
- // | <div class="spacer">___</div>
- // | <div class="blue">Blue One</div>
- // | <div class="spacer">___</div>
- // | <div class="red">Red Two</div>
- // | <div class="spacer">___</div>
- // | <div class="blue">Blue Two</div>
- // | </div>
- // Running this code:
- // | dojo.query(".red").replaceAll(".blue");
- // Results in this DOM structure:
- // | <div class="container">
- // | <div class="spacer">___</div>
- // | <div class="spacer">___</div>
- // | <div class="red">Red One</div>
- // | <div class="red">Red Two</div>
- // | <div class="spacer">___</div>
- // | <div class="spacer">___</div>
- // | <div class="red">Red One</div>
- // | <div class="red">Red Two</div>
- // | </div>
- var nl = dojo.query(query);
- var content = this._normalize(this, this[0]);
- for(var i = 0, node; node = nl[i]; i++){
- this._place(content, node, "before", i > 0);
- node.parentNode.removeChild(node);
- }
- return this; //dojo.NodeList
- },
-
- clone: function(){
- // summary:
- // Clones all the nodes in this NodeList and returns them as a new NodeList.
- // description:
- // Only the DOM nodes are cloned, not any attached event handlers.
- // returns:
- // dojo.NodeList, a cloned set of the original nodes.
- // example:
- // assume a DOM created by this markup:
- // | <div class="container">
- // | <div class="red">Red One</div>
- // | <div class="blue">Blue One</div>
- // | <div class="red">Red Two</div>
- // | <div class="blue">Blue Two</div>
- // | </div>
- // Running this code:
- // | dojo.query(".red").clone().appendTo(".container");
- // Results in this DOM structure:
- // | <div class="container">
- // | <div class="red">Red One</div>
- // | <div class="blue">Blue One</div>
- // | <div class="red">Red Two</div>
- // | <div class="blue">Blue Two</div>
- // | <div class="red">Red One</div>
- // | <div class="red">Red Two</div>
- // | </div>
-
- //TODO: need option to clone events?
- var ary = [];
- for(var i = 0; i < this.length; i++){
- ary.push(this._cloneNode(this[i]));
- }
- return this._wrap(ary, this, this._NodeListCtor); //dojo.NodeList
- }
- });
-
- //set up html method if one does not exist
- if(!dojo.NodeList.prototype.html){
- dojo.NodeList.prototype.html = dojo.NodeList.prototype.innerHTML;
- }
-})();
-
-}
diff --git a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dojo/NodeList-traverse.js b/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dojo/NodeList-traverse.js
deleted file mode 100644
index 5b144cb..0000000
--- a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dojo/NodeList-traverse.js
+++ /dev/null
@@ -1,517 +0,0 @@
-/*
- Copyright (c) 2004-2009, The Dojo Foundation All Rights Reserved.
- Available via Academic Free License >= 2.1 OR the modified BSD license.
- see: http://dojotoolkit.org/license for details
-*/
-
-
-if(!dojo._hasResource["dojo.NodeList-traverse"]){ //_hasResource checks added by build. Do not use _hasResource directly in your code.
-dojo._hasResource["dojo.NodeList-traverse"] = true;
-dojo.provide("dojo.NodeList-traverse");
-
-/*=====
-dojo["NodeList-traverse"] = {
- // summary: Adds a chainable methods to dojo.query() / Nodelist instances for traversing the DOM
-};
-=====*/
-
-dojo.extend(dojo.NodeList, {
- _buildArrayFromCallback: function(/*Function*/callback){
- // summary:
- // builds a new array of possibly differing size based on the input list.
- // Since the returned array is likely of different size than the input array,
- // the array's map function cannot be used.
- var ary = [];
- for(var i = 0; i < this.length; i++){
- var items = callback.call(this[i], this[i], ary);
- if(items){
- ary = ary.concat(items);
- }
- }
- return ary;
- },
-
- _filterQueryResult: function(nodeList, query){
- // summmary:
- // Replacement for dojo._filterQueryResult that does a full
- // query. Slower, but allows for more types of queries.
- var filter = dojo.filter(nodeList, function(node){
- return dojo.query(query, node.parentNode).indexOf(node) != -1;
- });
- var result = this._wrap(filter);
- return result;
- },
-
- _getUniqueAsNodeList: function(nodes){
- // summary:
- // given a list of nodes, make sure only unique
- // elements are returned as our NodeList object.
- // Does not call _stash().
- var ary = [];
- //Using for loop for better speed.
- for(var i = 0, node; node = nodes[i]; i++){
- //Should be a faster way to do this. dojo.query has a private
- //_zip function that may be inspirational, but there are pathways
- //in query that force nozip?
- if(node.nodeType == 1 && dojo.indexOf(ary, node) == -1){
- ary.push(node);
- }
- }
- return this._wrap(ary, null, this._NodeListCtor); //dojo.NodeList
- },
-
- _getUniqueNodeListWithParent: function(nodes, query){
- // summary:
- // gets unique element nodes, filters them further
- // with an optional query and then calls _stash to track parent NodeList.
- var ary = this._getUniqueAsNodeList(nodes);
- ary = (query ? this._filterQueryResult(ary, query) : ary);
- return ary._stash(this); //dojo.NodeList
- },
-
- _getRelatedUniqueNodes: function(/*String?*/query, /*Function*/callback){
- // summary:
- // cycles over all the nodes and calls a callback
- // to collect nodes for a possible inclusion in a result.
- // The callback will get two args: callback(node, ary),
- // where ary is the array being used to collect the nodes.
- return this._getUniqueNodeListWithParent(this._buildArrayFromCallback(callback), query); //dojo.NodeList
- },
-
- children: function(/*String?*/query){
- // summary:
- // Returns all immediate child elements for nodes in this dojo.NodeList.
- // Optionally takes a query to filter the child elements.
- // description:
- // .end() can be used on the returned dojo.NodeList to get back to the
- // original dojo.NodeList.
- // query:
- // a CSS selector.
- // returns:
- // dojo.NodeList, all immediate child elements for the nodes in this dojo.NodeList.
- // example:
- // assume a DOM created by this markup:
- // | <div class="container">
- // | <div class="red">Red One</div>
- // | Some Text
- // | <div class="blue">Blue One</div>
- // | <div class="red">Red Two</div>
- // | <div class="blue">Blue Two</div>
- // | </div>
- // Running this code:
- // | dojo.query(".container").children();
- // returns the four divs that are children of the container div.
- // Running this code:
- // | dojo.query(".container").children(".red");
- // returns the two divs that have the class "red".
- return this._getRelatedUniqueNodes(query, function(node, ary){
- return dojo._toArray(node.childNodes);
- }); //dojo.NodeList
- },
-
- closest: function(/*String*/query){
- // summary:
- // Returns closest parent that matches query, including current node in this
- // dojo.NodeList if it matches the query.
- // description:
- // .end() can be used on the returned dojo.NodeList to get back to the
- // original dojo.NodeList.
- // query:
- // a CSS selector.
- // returns:
- // dojo.NodeList, the closest parent that matches the query, including the current
- // node in this dojo.NodeList if it matches the query.
- // example:
- // assume a DOM created by this markup:
- // | <div class="container">
- // | <div class="red">Red One</div>
- // | Some Text
- // | <div class="blue">Blue One</div>
- // | <div class="red">Red Two</div>
- // | <div class="blue">Blue Two</div>
- // | </div>
- // Running this code:
- // | dojo.query(".red").closest(".container");
- // returns the div with class "container".
- var self = this;
- return this._getRelatedUniqueNodes(query, function(node, ary){
- do{
- if(self._filterQueryResult([node], query).length){
- return node;
- }
- }while((node = node.parentNode) && node.nodeType == 1);
- return null; //To make rhino strict checking happy.
- }); //dojo.NodeList
- },
-
- parent: function(/*String?*/query){
- // summary:
- // Returns immediate parent elements for nodes in this dojo.NodeList.
- // Optionally takes a query to filter the parent elements.
- // description:
- // .end() can be used on the returned dojo.NodeList to get back to the
- // original dojo.NodeList.
- // query:
- // a CSS selector.
- // returns:
- // dojo.NodeList, immediate parent elements for nodes in this dojo.NodeList.
- // example:
- // assume a DOM created by this markup:
- // | <div class="container">
- // | <div class="red">Red One</div>
- // | <div class="blue first"><span class="text">Blue One</span></div>
- // | <div class="red">Red Two</div>
- // | <div class="blue"><span class="text">Blue Two</span></div>
- // | </div>
- // Running this code:
- // | dojo.query(".text").parent();
- // returns the two divs with class "blue".
- // Running this code:
- // | dojo.query(".text").parent(".first");
- // returns the one div with class "blue" and "first".
- return this._getRelatedUniqueNodes(query, function(node, ary){
- return node.parentNode;
- }); //dojo.NodeList
- },
-
- parents: function(/*String?*/query){
- // summary:
- // Returns all parent elements for nodes in this dojo.NodeList.
- // Optionally takes a query to filter the child elements.
- // description:
- // .end() can be used on the returned dojo.NodeList to get back to the
- // original dojo.NodeList.
- // query:
- // a CSS selector.
- // returns:
- // dojo.NodeList, all parent elements for nodes in this dojo.NodeList.
- // example:
- // assume a DOM created by this markup:
- // | <div class="container">
- // | <div class="red">Red One</div>
- // | <div class="blue first"><span class="text">Blue One</span></div>
- // | <div class="red">Red Two</div>
- // | <div class="blue"><span class="text">Blue Two</span></div>
- // | </div>
- // Running this code:
- // | dojo.query(".text").parents();
- // returns the two divs with class "blue", the div with class "container",
- // | the body element and the html element.
- // Running this code:
- // | dojo.query(".text").parents(".container");
- // returns the one div with class "container".
- return this._getRelatedUniqueNodes(query, function(node, ary){
- var pary = []
- while(node.parentNode){
- node = node.parentNode;
- pary.push(node);
- }
- return pary;
- }); //dojo.NodeList
- },
-
- siblings: function(/*String?*/query){
- // summary:
- // Returns all sibling elements for nodes in this dojo.NodeList.
- // Optionally takes a query to filter the sibling elements.
- // description:
- // .end() can be used on the returned dojo.NodeList to get back to the
- // original dojo.NodeList.
- // query:
- // a CSS selector.
- // returns:
- // dojo.NodeList, all sibling elements for nodes in this dojo.NodeList.
- // example:
- // assume a DOM created by this markup:
- // | <div class="container">
- // | <div class="red">Red One</div>
- // | Some Text
- // | <div class="blue first">Blue One</div>
- // | <div class="red">Red Two</div>
- // | <div class="blue">Blue Two</div>
- // | </div>
- // Running this code:
- // | dojo.query(".first").siblings();
- // returns the two divs with class "red" and the other div
- // | with class "blue" that does not have "first".
- // Running this code:
- // | dojo.query(".first").siblings(".red");
- // returns the two div with class "red".
- return this._getRelatedUniqueNodes(query, function(node, ary){
- var pary = []
- var nodes = (node.parentNode && node.parentNode.childNodes);
- for(var i = 0; i < nodes.length; i++){
- if(nodes[i] != node){
- pary.push(nodes[i]);
- }
- }
- return pary;
- }); //dojo.NodeList
- },
-
- next: function(/*String?*/query){
- // summary:
- // Returns the next element for nodes in this dojo.NodeList.
- // Optionally takes a query to filter the next elements.
- // description:
- // .end() can be used on the returned dojo.NodeList to get back to the
- // original dojo.NodeList.
- // query:
- // a CSS selector.
- // returns:
- // dojo.NodeList, the next element for nodes in this dojo.NodeList.
- // example:
- // assume a DOM created by this markup:
- // | <div class="container">
- // | <div class="red">Red One</div>
- // | Some Text
- // | <div class="blue first">Blue One</div>
- // | <div class="red">Red Two</div>
- // | <div class="blue last">Blue Two</div>
- // | </div>
- // Running this code:
- // | dojo.query(".first").next();
- // returns the div with class "red" and has innerHTML of "Red Two".
- // Running this code:
- // | dojo.query(".last").next(".red");
- // does not return any elements.
- return this._getRelatedUniqueNodes(query, function(node, ary){
- var next = node.nextSibling;
- while(next && next.nodeType != 1){
- next = next.nextSibling;
- }
- return next;
- }); //dojo.NodeList
- },
-
- nextAll: function(/*String?*/query){
- // summary:
- // Returns all sibling elements that come after the nodes in this dojo.NodeList.
- // Optionally takes a query to filter the sibling elements.
- // description:
- // .end() can be used on the returned dojo.NodeList to get back to the
- // original dojo.NodeList.
- // query:
- // a CSS selector.
- // returns:
- // dojo.NodeList, all sibling elements that come after the nodes in this dojo.NodeList.
- // example:
- // assume a DOM created by this markup:
- // | <div class="container">
- // | <div class="red">Red One</div>
- // | Some Text
- // | <div class="blue first">Blue One</div>
- // | <div class="red next">Red Two</div>
- // | <div class="blue next">Blue Two</div>
- // | </div>
- // Running this code:
- // | dojo.query(".first").nextAll();
- // returns the two divs with class of "next".
- // Running this code:
- // | dojo.query(".first").nextAll(".red");
- // returns the one div with class "red" and innerHTML "Red Two".
- return this._getRelatedUniqueNodes(query, function(node, ary){
- var pary = []
- var next = node;
- while((next = next.nextSibling)){
- if(next.nodeType == 1){
- pary.push(next);
- }
- }
- return pary;
- }); //dojo.NodeList
- },
-
- prev: function(/*String?*/query){
- // summary:
- // Returns the previous element for nodes in this dojo.NodeList.
- // Optionally takes a query to filter the previous elements.
- // description:
- // .end() can be used on the returned dojo.NodeList to get back to the
- // original dojo.NodeList.
- // query:
- // a CSS selector.
- // returns:
- // dojo.NodeList, the previous element for nodes in this dojo.NodeList.
- // example:
- // assume a DOM created by this markup:
- // | <div class="container">
- // | <div class="red">Red One</div>
- // | Some Text
- // | <div class="blue first">Blue One</div>
- // | <div class="red">Red Two</div>
- // | <div class="blue">Blue Two</div>
- // | </div>
- // Running this code:
- // | dojo.query(".first").prev();
- // returns the div with class "red" and has innerHTML of "Red One".
- // Running this code:
- // | dojo.query(".first").prev(".blue");
- // does not return any elements.
- return this._getRelatedUniqueNodes(query, function(node, ary){
- var prev = node.previousSibling;
- while(prev && prev.nodeType != 1){
- prev = prev.previousSibling;
- }
- return prev;
- }); //dojo.NodeList
- },
-
- prevAll: function(/*String?*/query){
- // summary:
- // Returns all sibling elements that come before the nodes in this dojo.NodeList.
- // Optionally takes a query to filter the sibling elements.
- // description:
- // The returned nodes will be in reverse DOM order -- the first node in the list will
- // be the node closest to the original node/NodeList.
- // .end() can be used on the returned dojo.NodeList to get back to the
- // original dojo.NodeList.
- // query:
- // a CSS selector.
- // returns:
- // dojo.NodeList, all sibling elements that come before the nodes in this dojo.NodeList.
- // example:
- // assume a DOM created by this markup:
- // | <div class="container">
- // | <div class="red prev">Red One</div>
- // | Some Text
- // | <div class="blue prev">Blue One</div>
- // | <div class="red second">Red Two</div>
- // | <div class="blue">Blue Two</div>
- // | </div>
- // Running this code:
- // | dojo.query(".second").prevAll();
- // returns the two divs with class of "prev".
- // Running this code:
- // | dojo.query(".first").prevAll(".red");
- // returns the one div with class "red prev" and innerHTML "Red One".
- return this._getRelatedUniqueNodes(query, function(node, ary){
- var pary = []
- var prev = node;
- while((prev = prev.previousSibling)){
- if(prev.nodeType == 1){
- pary.push(prev);
- }
- }
- return pary;
- }); //dojo.NodeList
- },
-
- andSelf: function(){
- // summary:
- // Adds the nodes from the previous dojo.NodeList to the current dojo.NodeList.
- // description:
- // .end() can be used on the returned dojo.NodeList to get back to the
- // original dojo.NodeList.
- // returns:
- // dojo.NodeList
- // example:
- // assume a DOM created by this markup:
- // | <div class="container">
- // | <div class="red prev">Red One</div>
- // | Some Text
- // | <div class="blue prev">Blue One</div>
- // | <div class="red second">Red Two</div>
- // | <div class="blue">Blue Two</div>
- // | </div>
- // Running this code:
- // | dojo.query(".second").prevAll().andSelf();
- // returns the two divs with class of "prev", as well as the div with class "second".
- return this.concat(this._parent);
- },
-
- //Alternate methods for the :first/:last/:even/:odd pseudos.
- first: function(){
- // summary:
- // Returns the first node in this dojo.NodeList as a dojo.NodeList.
- // description:
- // .end() can be used on the returned dojo.NodeList to get back to the
- // original dojo.NodeList.
- // returns:
- // dojo.NodeList, with the first node in this dojo.NodeList
- // example:
- // assume a DOM created by this markup:
- // | <div class="container">
- // | <div class="red">Red One</div>
- // | <div class="blue first">Blue One</div>
- // | <div class="red">Red Two</div>
- // | <div class="blue last">Blue Two</div>
- // | </div>
- // Running this code:
- // | dojo.query(".blue").first();
- // returns the div with class "blue" and "first".
- return this._wrap(((this[0] && [this[0]]) || []), this); //dojo.NodeList
- },
-
- last: function(){
- // summary:
- // Returns the last node in this dojo.NodeList as a dojo.NodeList.
- // description:
- // .end() can be used on the returned dojo.NodeList to get back to the
- // original dojo.NodeList.
- // returns:
- // dojo.NodeList, with the last node in this dojo.NodeList
- // example:
- // assume a DOM created by this markup:
- // | <div class="container">
- // | <div class="red">Red One</div>
- // | <div class="blue first">Blue One</div>
- // | <div class="red">Red Two</div>
- // | <div class="blue last">Blue Two</div>
- // | </div>
- // Running this code:
- // | dojo.query(".blue").last();
- // returns the last div with class "blue",
- return this._wrap((this.length ? [this[this.length - 1]] : []), this); //dojo.NodeList
- },
-
- even: function(){
- // summary:
- // Returns the even nodes in this dojo.NodeList as a dojo.NodeList.
- // description:
- // .end() can be used on the returned dojo.NodeList to get back to the
- // original dojo.NodeList.
- // returns:
- // dojo.NodeList, with the even nodes in this dojo.NodeList
- // example:
- // assume a DOM created by this markup:
- // | <div class="container">
- // | <div class="interior red">Red One</div>
- // | <div class="interior blue">Blue One</div>
- // | <div class="interior red">Red Two</div>
- // | <div class="interior blue">Blue Two</div>
- // | </div>
- // Running this code:
- // | dojo.query(".interior").even();
- // returns the two divs with class "blue"
- return this.filter(function(item, i){
- return i % 2 != 0;
- }); //dojo.NodeList
- },
-
- odd: function(){
- // summary:
- // Returns the odd nodes in this dojo.NodeList as a dojo.NodeList.
- // description:
- // .end() can be used on the returned dojo.NodeList to get back to the
- // original dojo.NodeList.
- // returns:
- // dojo.NodeList, with the odd nodes in this dojo.NodeList
- // example:
- // assume a DOM created by this markup:
- // | <div class="container">
- // | <div class="interior red">Red One</div>
- // | <div class="interior blue">Blue One</div>
- // | <div class="interior red">Red Two</div>
- // | <div class="interior blue">Blue Two</div>
- // | </div>
- // Running this code:
- // | dojo.query(".interior").odd();
- // returns the two divs with class "red"
- return this.filter(function(item, i){
- return i % 2 == 0;
- }); //dojo.NodeList
- }
-});
-
-}
diff --git a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dojo/OpenAjax.js b/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dojo/OpenAjax.js
deleted file mode 100644
index dd4a23f..0000000
--- a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dojo/OpenAjax.js
+++ /dev/null
@@ -1,201 +0,0 @@
-/*
- Copyright (c) 2004-2009, The Dojo Foundation All Rights Reserved.
- Available via Academic Free License >= 2.1 OR the modified BSD license.
- see: http://dojotoolkit.org/license for details
-*/
-
-
-/*******************************************************************************
- * OpenAjax.js
- *
- * Reference implementation of the OpenAjax Hub, as specified by OpenAjax Alliance.
- * Specification is under development at:
- *
- * http://www.openajax.org/member/wiki/OpenAjax_Hub_Specification
- *
- * Copyright 2006-2007 OpenAjax Alliance
- *
- * Licensed under the Apache License, Version 2.0 (the "License"); you may not
- * use this file except in compliance with the License. You may obtain a copy
- * of the License at http://www.apache.org/licenses/LICENSE-2.0 . Unless
- * required by applicable law or agreed to in writing, software distributed
- * under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR
- * CONDITIONS OF ANY KIND, either express or implied. See the License for the
- * specific language governing permissions and limitations under the License.
- *
- ******************************************************************************/
-
-// prevent re-definition of the OpenAjax object
-if(!window["OpenAjax"]){
- OpenAjax = new function(){
- // summary: the OpenAjax hub
- // description: see http://www.openajax.org/member/wiki/OpenAjax_Hub_Specification
-
- var t = true;
- var f = false;
- var g = window;
- var libs;
- var ooh = "org.openajax.hub.";
-
- var h = {};
- this.hub = h;
- h.implementer = "http://openajax.org";
- h.implVersion = "0.6";
- h.specVersion = "0.6";
- h.implExtraData = {};
- var libs = {};
- h.libraries = libs;
-
- h.registerLibrary = function(prefix, nsURL, version, extra){
- libs[prefix] = {
- prefix: prefix,
- namespaceURI: nsURL,
- version: version,
- extraData: extra
- };
- this.publish(ooh+"registerLibrary", libs[prefix]);
- }
- h.unregisterLibrary = function(prefix){
- this.publish(ooh+"unregisterLibrary", libs[prefix]);
- delete libs[prefix];
- }
-
- h._subscriptions = { c:{}, s:[] };
- h._cleanup = [];
- h._subIndex = 0;
- h._pubDepth = 0;
-
- h.subscribe = function(name, callback, scope, subscriberData, filter){
- if(!scope){
- scope = window;
- }
- var handle = name + "." + this._subIndex;
- var sub = { scope: scope, cb: callback, fcb: filter, data: subscriberData, sid: this._subIndex++, hdl: handle };
- var path = name.split(".");
- this._subscribe(this._subscriptions, path, 0, sub);
- return handle;
- }
-
- h.publish = function(name, message){
- var path = name.split(".");
- this._pubDepth++;
- this._publish(this._subscriptions, path, 0, name, message);
- this._pubDepth--;
- if((this._cleanup.length > 0) && (this._pubDepth == 0)){
- for(var i = 0; i < this._cleanup.length; i++){
- this.unsubscribe(this._cleanup[i].hdl);
- }
- delete(this._cleanup);
- this._cleanup = [];
- }
- }
-
- h.unsubscribe = function(sub){
- var path = sub.split(".");
- var sid = path.pop();
- this._unsubscribe(this._subscriptions, path, 0, sid);
- }
-
- h._subscribe = function(tree, path, index, sub){
- var token = path[index];
- if(index == path.length){
- tree.s.push(sub);
- }else{
- if(typeof tree.c == "undefined"){
- tree.c = {};
- }
- if(typeof tree.c[token] == "undefined"){
- tree.c[token] = { c: {}, s: [] };
- this._subscribe(tree.c[token], path, index + 1, sub);
- }else{
- this._subscribe( tree.c[token], path, index + 1, sub);
- }
- }
- }
-
- h._publish = function(tree, path, index, name, msg){
- if(typeof tree != "undefined"){
- var node;
- if(index == path.length) {
- node = tree;
- }else{
- this._publish(tree.c[path[index]], path, index + 1, name, msg);
- this._publish(tree.c["*"], path, index + 1, name, msg);
- node = tree.c["**"];
- }
- if(typeof node != "undefined"){
- var callbacks = node.s;
- var max = callbacks.length;
- for(var i = 0; i < max; i++){
- if(callbacks[i].cb){
- var sc = callbacks[i].scope;
- var cb = callbacks[i].cb;
- var fcb = callbacks[i].fcb;
- var d = callbacks[i].data;
- if(typeof cb == "string"){
- // get a function object
- cb = sc[cb];
- }
- if(typeof fcb == "string"){
- // get a function object
- fcb = sc[fcb];
- }
- if((!fcb) ||
- (fcb.call(sc, name, msg, d))) {
- cb.call(sc, name, msg, d);
- }
- }
- }
- }
- }
- }
-
- h._unsubscribe = function(tree, path, index, sid) {
- if(typeof tree != "undefined") {
- if(index < path.length) {
- var childNode = tree.c[path[index]];
- this._unsubscribe(childNode, path, index + 1, sid);
- if(childNode.s.length == 0) {
- for(var x in childNode.c)
- return;
- delete tree.c[path[index]];
- }
- return;
- }
- else {
- var callbacks = tree.s;
- var max = callbacks.length;
- for(var i = 0; i < max; i++)
- if(sid == callbacks[i].sid) {
- if(this._pubDepth > 0) {
- callbacks[i].cb = null;
- this._cleanup.push(callbacks[i]);
- }
- else
- callbacks.splice(i, 1);
- return;
- }
- }
- }
- }
- // The following function is provided for automatic testing purposes.
- // It is not expected to be deployed in run-time OpenAjax Hub implementations.
- h.reinit = function()
- {
- for (var lib in OpenAjax.hub.libraries) {
- delete OpenAjax.hub.libraries[lib];
- }
- OpenAjax.hub.registerLibrary("OpenAjax", "http://openajax.org/hub", "0.6", {});
-
- delete OpenAjax._subscriptions;
- OpenAjax._subscriptions = {c:{},s:[]};
- delete OpenAjax._cleanup;
- OpenAjax._cleanup = [];
- OpenAjax._subIndex = 0;
- OpenAjax._pubDepth = 0;
- }
- };
- // Register the OpenAjax Hub itself as a library.
- OpenAjax.hub.registerLibrary("OpenAjax", "http://openajax.org/hub", "0.6", {});
-
-}
diff --git a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dojo/_base.js b/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dojo/_base.js
deleted file mode 100644
index 6a45ee4..0000000
--- a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dojo/_base.js
+++ /dev/null
@@ -1,20 +0,0 @@
-/*
- Copyright (c) 2004-2009, The Dojo Foundation All Rights Reserved.
- Available via Academic Free License >= 2.1 OR the modified BSD license.
- see: http://dojotoolkit.org/license for details
-*/
-
-
-if(!dojo._hasResource["dojo._base"]){ //_hasResource checks added by build. Do not use _hasResource directly in your code.
-dojo._hasResource["dojo._base"] = true;
-dojo.provide("dojo._base");
-dojo.require("dojo._base.lang");
-dojo.require("dojo._base.declare");
-dojo.require("dojo._base.connect");
-dojo.require("dojo._base.Deferred");
-dojo.require("dojo._base.json");
-dojo.require("dojo._base.array");
-dojo.require("dojo._base.Color");
-dojo.requireIf(dojo.isBrowser, "dojo._base.browser");
-
-}
diff --git a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dojo/_base/Color.js b/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dojo/_base/Color.js
deleted file mode 100644
index 7b72bf0..0000000
--- a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dojo/_base/Color.js
+++ /dev/null
@@ -1,227 +0,0 @@
-/*
- Copyright (c) 2004-2009, The Dojo Foundation All Rights Reserved.
- Available via Academic Free License >= 2.1 OR the modified BSD license.
- see: http://dojotoolkit.org/license for details
-*/
-
-
-if(!dojo._hasResource["dojo._base.Color"]){ //_hasResource checks added by build. Do not use _hasResource directly in your code.
-dojo._hasResource["dojo._base.Color"] = true;
-dojo.provide("dojo._base.Color");
-dojo.require("dojo._base.array");
-dojo.require("dojo._base.lang");
-
-(function(){
-
- var d = dojo;
-
- dojo.Color = function(/*Array|String|Object*/ color){
- // summary:
- // Takes a named string, hex string, array of rgb or rgba values,
- // an object with r, g, b, and a properties, or another `dojo.Color` object
- // and creates a new Color instance to work from.
- //
- // example:
- // Work with a Color instance:
- // | var c = new dojo.Color();
- // | c.setColor([0,0,0]); // black
- // | var hex = c.toHex(); // #000000
- //
- // example:
- // Work with a node's color:
- // | var color = dojo.style("someNode", "backgroundColor");
- // | var n = new dojo.Color(color);
- // | // adjust the color some
- // | n.r *= .5;
- // | console.log(n.toString()); // rgb(128, 255, 255);
- if(color){ this.setColor(color); }
- };
-
- // FIXME:
- // there's got to be a more space-efficient way to encode or discover
- // these!! Use hex?
- dojo.Color.named = {
- black: [0,0,0],
- silver: [192,192,192],
- gray: [128,128,128],
- white: [255,255,255],
- maroon: [128,0,0],
- red: [255,0,0],
- purple: [128,0,128],
- fuchsia: [255,0,255],
- green: [0,128,0],
- lime: [0,255,0],
- olive: [128,128,0],
- yellow: [255,255,0],
- navy: [0,0,128],
- blue: [0,0,255],
- teal: [0,128,128],
- aqua: [0,255,255],
- transparent: d.config.transparentColor || [255,255,255]
- };
-
- dojo.extend(dojo.Color, {
- r: 255, g: 255, b: 255, a: 1,
- _set: function(r, g, b, a){
- var t = this; t.r = r; t.g = g; t.b = b; t.a = a;
- },
- setColor: function(/*Array|String|Object*/ color){
- // summary:
- // Takes a named string, hex string, array of rgb or rgba values,
- // an object with r, g, b, and a properties, or another `dojo.Color` object
- // and sets this color instance to that value.
- //
- // example:
- // | var c = new dojo.Color(); // no color
- // | c.setColor("#ededed"); // greyish
- if(d.isString(color)){
- d.colorFromString(color, this);
- }else if(d.isArray(color)){
- d.colorFromArray(color, this);
- }else{
- this._set(color.r, color.g, color.b, color.a);
- if(!(color instanceof d.Color)){ this.sanitize(); }
- }
- return this; // dojo.Color
- },
- sanitize: function(){
- // summary:
- // Ensures the object has correct attributes
- // description:
- // the default implementation does nothing, include dojo.colors to
- // augment it with real checks
- return this; // dojo.Color
- },
- toRgb: function(){
- // summary:
- // Returns 3 component array of rgb values
- // example:
- // | var c = new dojo.Color("#000000");
- // | console.log(c.toRgb()); // [0,0,0]
- var t = this;
- return [t.r, t.g, t.b]; // Array
- },
- toRgba: function(){
- // summary:
- // Returns a 4 component array of rgba values from the color
- // represented by this object.
- var t = this;
- return [t.r, t.g, t.b, t.a]; // Array
- },
- toHex: function(){
- // summary:
- // Returns a CSS color string in hexadecimal representation
- // example:
- // | console.log(new dojo.Color([0,0,0]).toHex()); // #000000
- var arr = d.map(["r", "g", "b"], function(x){
- var s = this[x].toString(16);
- return s.length < 2 ? "0" + s : s;
- }, this);
- return "#" + arr.join(""); // String
- },
- toCss: function(/*Boolean?*/ includeAlpha){
- // summary:
- // Returns a css color string in rgb(a) representation
- // example:
- // | var c = new dojo.Color("#FFF").toCss();
- // | console.log(c); // rgb('255','255','255')
- var t = this, rgb = t.r + ", " + t.g + ", " + t.b;
- return (includeAlpha ? "rgba(" + rgb + ", " + t.a : "rgb(" + rgb) + ")"; // String
- },
- toString: function(){
- // summary:
- // Returns a visual representation of the color
- return this.toCss(true); // String
- }
- });
-
- dojo.blendColors = function(
- /*dojo.Color*/ start,
- /*dojo.Color*/ end,
- /*Number*/ weight,
- /*dojo.Color?*/ obj
- ){
- // summary:
- // Blend colors end and start with weight from 0 to 1, 0.5 being a 50/50 blend,
- // can reuse a previously allocated dojo.Color object for the result
- var t = obj || new d.Color();
- d.forEach(["r", "g", "b", "a"], function(x){
- t[x] = start[x] + (end[x] - start[x]) * weight;
- if(x != "a"){ t[x] = Math.round(t[x]); }
- });
- return t.sanitize(); // dojo.Color
- };
-
- dojo.colorFromRgb = function(/*String*/ color, /*dojo.Color?*/ obj){
- // summary:
- // Returns a `dojo.Color` instance from a string of the form
- // "rgb(...)" or "rgba(...)". Optionally accepts a `dojo.Color`
- // object to update with the parsed value and return instead of
- // creating a new object.
- // returns:
- // A dojo.Color object. If obj is passed, it will be the return value.
- var m = color.toLowerCase().match(/^rgba?\(([\s\.,0-9]+)\)/);
- return m && dojo.colorFromArray(m[1].split(/\s*,\s*/), obj); // dojo.Color
- };
-
- dojo.colorFromHex = function(/*String*/ color, /*dojo.Color?*/ obj){
- // summary:
- // Converts a hex string with a '#' prefix to a color object.
- // Supports 12-bit #rgb shorthand. Optionally accepts a
- // `dojo.Color` object to update with the parsed value.
- //
- // returns:
- // A dojo.Color object. If obj is passed, it will be the return value.
- //
- // example:
- // | var thing = dojo.colorFromHex("#ededed"); // grey, longhand
- //
- // example:
- // | var thing = dojo.colorFromHex("#000"); // black, shorthand
- var t = obj || new d.Color(),
- bits = (color.length == 4) ? 4 : 8,
- mask = (1 << bits) - 1;
- color = Number("0x" + color.substr(1));
- if(isNaN(color)){
- return null; // dojo.Color
- }
- d.forEach(["b", "g", "r"], function(x){
- var c = color & mask;
- color >>= bits;
- t[x] = bits == 4 ? 17 * c : c;
- });
- t.a = 1;
- return t; // dojo.Color
- };
-
- dojo.colorFromArray = function(/*Array*/ a, /*dojo.Color?*/ obj){
- // summary:
- // Builds a `dojo.Color` from a 3 or 4 element array, mapping each
- // element in sequence to the rgb(a) values of the color.
- // example:
- // | var myColor = dojo.colorFromArray([237,237,237,0.5]); // grey, 50% alpha
- // returns:
- // A dojo.Color object. If obj is passed, it will be the return value.
- var t = obj || new d.Color();
- t._set(Number(a[0]), Number(a[1]), Number(a[2]), Number(a[3]));
- if(isNaN(t.a)){ t.a = 1; }
- return t.sanitize(); // dojo.Color
- };
-
- dojo.colorFromString = function(/*String*/ str, /*dojo.Color?*/ obj){
- // summary:
- // Parses `str` for a color value. Accepts hex, rgb, and rgba
- // style color values.
- // description:
- // Acceptable input values for str may include arrays of any form
- // accepted by dojo.colorFromArray, hex strings such as "#aaaaaa", or
- // rgb or rgba strings such as "rgb(133, 200, 16)" or "rgba(10, 10,
- // 10, 50)"
- // returns:
- // A dojo.Color object. If obj is passed, it will be the return value.
- var a = d.Color.named[str];
- return a && d.colorFromArray(a, obj) || d.colorFromRgb(str, obj) || d.colorFromHex(str, obj);
- };
-})();
-
-}
diff --git a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dojo/_base/Deferred.js b/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dojo/_base/Deferred.js
deleted file mode 100644
index 38697c9..0000000
--- a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dojo/_base/Deferred.js
+++ /dev/null
@@ -1,432 +0,0 @@
-/*
- Copyright (c) 2004-2009, The Dojo Foundation All Rights Reserved.
- Available via Academic Free License >= 2.1 OR the modified BSD license.
- see: http://dojotoolkit.org/license for details
-*/
-
-
-if(!dojo._hasResource["dojo._base.Deferred"]){ //_hasResource checks added by build. Do not use _hasResource directly in your code.
-dojo._hasResource["dojo._base.Deferred"] = true;
-dojo.provide("dojo._base.Deferred");
-dojo.require("dojo._base.lang");
-
-dojo.Deferred = function(/*Function?*/ canceller){
- // summary:
- // Encapsulates a sequence of callbacks in response to a value that
- // may not yet be available. This is modeled after the Deferred class
- // from Twisted <http://twistedmatrix.com>.
- // description:
- // JavaScript has no threads, and even if it did, threads are hard.
- // Deferreds are a way of abstracting non-blocking events, such as the
- // final response to an XMLHttpRequest. Deferreds create a promise to
- // return a response a some point in the future and an easy way to
- // register your interest in receiving that response.
- //
- // The most important methods for Deffered users are:
- //
- // * addCallback(handler)
- // * addErrback(handler)
- // * callback(result)
- // * errback(result)
- //
- // In general, when a function returns a Deferred, users then "fill
- // in" the second half of the contract by registering callbacks and
- // error handlers. You may register as many callback and errback
- // handlers as you like and they will be executed in the order
- // registered when a result is provided. Usually this result is
- // provided as the result of an asynchronous operation. The code
- // "managing" the Deferred (the code that made the promise to provide
- // an answer later) will use the callback() and errback() methods to
- // communicate with registered listeners about the result of the
- // operation. At this time, all registered result handlers are called
- // *with the most recent result value*.
- //
- // Deferred callback handlers are treated as a chain, and each item in
- // the chain is required to return a value that will be fed into
- // successive handlers. The most minimal callback may be registered
- // like this:
- //
- // | var d = new dojo.Deferred();
- // | d.addCallback(function(result){ return result; });
- //
- // Perhaps the most common mistake when first using Deferreds is to
- // forget to return a value (in most cases, the value you were
- // passed).
- //
- // The sequence of callbacks is internally represented as a list of
- // 2-tuples containing the callback/errback pair. For example, the
- // following call sequence:
- //
- // | var d = new dojo.Deferred();
- // | d.addCallback(myCallback);
- // | d.addErrback(myErrback);
- // | d.addBoth(myBoth);
- // | d.addCallbacks(myCallback, myErrback);
- //
- // is translated into a Deferred with the following internal
- // representation:
- //
- // | [
- // | [myCallback, null],
- // | [null, myErrback],
- // | [myBoth, myBoth],
- // | [myCallback, myErrback]
- // | ]
- //
- // The Deferred also keeps track of its current status (fired). Its
- // status may be one of three things:
- //
- // * -1: no value yet (initial condition)
- // * 0: success
- // * 1: error
- //
- // A Deferred will be in the error state if one of the following three
- // conditions are met:
- //
- // 1. The result given to callback or errback is "instanceof" Error
- // 2. The previous callback or errback raised an exception while
- // executing
- // 3. The previous callback or errback returned a value
- // "instanceof" Error
- //
- // Otherwise, the Deferred will be in the success state. The state of
- // the Deferred determines the next element in the callback sequence
- // to run.
- //
- // When a callback or errback occurs with the example deferred chain,
- // something equivalent to the following will happen (imagine
- // that exceptions are caught and returned):
- //
- // | // d.callback(result) or d.errback(result)
- // | if(!(result instanceof Error)){
- // | result = myCallback(result);
- // | }
- // | if(result instanceof Error){
- // | result = myErrback(result);
- // | }
- // | result = myBoth(result);
- // | if(result instanceof Error){
- // | result = myErrback(result);
- // | }else{
- // | result = myCallback(result);
- // | }
- //
- // The result is then stored away in case another step is added to the
- // callback sequence. Since the Deferred already has a value
- // available, any new callbacks added will be called immediately.
- //
- // There are two other "advanced" details about this implementation
- // that are useful:
- //
- // Callbacks are allowed to return Deferred instances themselves, so
- // you can build complicated sequences of events with ease.
- //
- // The creator of the Deferred may specify a canceller. The canceller
- // is a function that will be called if Deferred.cancel is called
- // before the Deferred fires. You can use this to implement clean
- // aborting of an XMLHttpRequest, etc. Note that cancel will fire the
- // deferred with a CancelledError (unless your canceller returns
- // another kind of error), so the errbacks should be prepared to
- // handle that error for cancellable Deferreds.
- // example:
- // | var deferred = new dojo.Deferred();
- // | setTimeout(function(){ deferred.callback({success: true}); }, 1000);
- // | return deferred;
- // example:
- // Deferred objects are often used when making code asynchronous. It
- // may be easiest to write functions in a synchronous manner and then
- // split code using a deferred to trigger a response to a long-lived
- // operation. For example, instead of register a callback function to
- // denote when a rendering operation completes, the function can
- // simply return a deferred:
- //
- // | // callback style:
- // | function renderLotsOfData(data, callback){
- // | var success = false
- // | try{
- // | for(var x in data){
- // | renderDataitem(data[x]);
- // | }
- // | success = true;
- // | }catch(e){ }
- // | if(callback){
- // | callback(success);
- // | }
- // | }
- //
- // | // using callback style
- // | renderLotsOfData(someDataObj, function(success){
- // | // handles success or failure
- // | if(!success){
- // | promptUserToRecover();
- // | }
- // | });
- // | // NOTE: no way to add another callback here!!
- // example:
- // Using a Deferred doesn't simplify the sending code any, but it
- // provides a standard interface for callers and senders alike,
- // providing both with a simple way to service multiple callbacks for
- // an operation and freeing both sides from worrying about details
- // such as "did this get called already?". With Deferreds, new
- // callbacks can be added at any time.
- //
- // | // Deferred style:
- // | function renderLotsOfData(data){
- // | var d = new dojo.Deferred();
- // | try{
- // | for(var x in data){
- // | renderDataitem(data[x]);
- // | }
- // | d.callback(true);
- // | }catch(e){
- // | d.errback(new Error("rendering failed"));
- // | }
- // | return d;
- // | }
- //
- // | // using Deferred style
- // | renderLotsOfData(someDataObj).addErrback(function(){
- // | promptUserToRecover();
- // | });
- // | // NOTE: addErrback and addCallback both return the Deferred
- // | // again, so we could chain adding callbacks or save the
- // | // deferred for later should we need to be notified again.
- // example:
- // In this example, renderLotsOfData is syncrhonous and so both
- // versions are pretty artificial. Putting the data display on a
- // timeout helps show why Deferreds rock:
- //
- // | // Deferred style and async func
- // | function renderLotsOfData(data){
- // | var d = new dojo.Deferred();
- // | setTimeout(function(){
- // | try{
- // | for(var x in data){
- // | renderDataitem(data[x]);
- // | }
- // | d.callback(true);
- // | }catch(e){
- // | d.errback(new Error("rendering failed"));
- // | }
- // | }, 100);
- // | return d;
- // | }
- //
- // | // using Deferred style
- // | renderLotsOfData(someDataObj).addErrback(function(){
- // | promptUserToRecover();
- // | });
- //
- // Note that the caller doesn't have to change his code at all to
- // handle the asynchronous case.
-
- this.chain = [];
- this.id = this._nextId();
- this.fired = -1;
- this.paused = 0;
- this.results = [null, null];
- this.canceller = canceller;
- this.silentlyCancelled = false;
- this.isFiring = false;
-};
-
-dojo.extend(dojo.Deferred, {
- /*
- makeCalled: function(){
- // summary:
- // returns a new, empty deferred, which is already in the called
- // state. Calling callback() or errback() on this deferred will
- // yeild an error and adding new handlers to it will result in
- // them being called immediately.
- var deferred = new dojo.Deferred();
- deferred.callback();
- return deferred;
- },
-
- toString: function(){
- var state;
- if(this.fired == -1){
- state = 'unfired';
- }else{
- state = this.fired ? 'success' : 'error';
- }
- return 'Deferred(' + this.id + ', ' + state + ')';
- },
- */
-
- _nextId: (function(){
- var n = 1;
- return function(){ return n++; };
- })(),
-
- cancel: function(){
- // summary:
- // Cancels a Deferred that has not yet received a value, or is
- // waiting on another Deferred as its value.
- // description:
- // If a canceller is defined, the canceller is called. If the
- // canceller did not return an error, or there was no canceller,
- // then the errback chain is started.
- var err;
- if(this.fired == -1){
- if(this.canceller){
- err = this.canceller(this);
- }else{
- this.silentlyCancelled = true;
- }
- if(this.fired == -1){
- if(!(err instanceof Error)){
- var res = err;
- var msg = "Deferred Cancelled";
- if(err && err.toString){
- msg += ": " + err.toString();
- }
- err = new Error(msg);
- err.dojoType = "cancel";
- err.cancelResult = res;
- }
- this.errback(err);
- }
- }else if( (this.fired == 0) &&
- (this.results[0] instanceof dojo.Deferred)
- ){
- this.results[0].cancel();
- }
- },
-
-
- _resback: function(res){
- // summary:
- // The private primitive that means either callback or errback
- this.fired = ((res instanceof Error) ? 1 : 0);
- this.results[this.fired] = res;
- this._fire();
- },
-
- _check: function(){
- if(this.fired != -1){
- if(!this.silentlyCancelled){
- throw new Error("already called!");
- }
- this.silentlyCancelled = false;
- return;
- }
- },
-
- callback: function(res){
- // summary:
- // Begin the callback sequence with a non-error value.
-
- /*
- callback or errback should only be called once on a given
- Deferred.
- */
- this._check();
- this._resback(res);
- },
-
- errback: function(/*Error*/res){
- // summary:
- // Begin the callback sequence with an error result.
- this._check();
- if(!(res instanceof Error)){
- res = new Error(res);
- }
- this._resback(res);
- },
-
- addBoth: function(/*Function|Object*/cb, /*String?*/cbfn){
- // summary:
- // Add the same function as both a callback and an errback as the
- // next element on the callback sequence.This is useful for code
- // that you want to guarantee to run, e.g. a finalizer.
- var enclosed = dojo.hitch.apply(dojo, arguments);
- return this.addCallbacks(enclosed, enclosed); // dojo.Deferred
- },
-
- addCallback: function(/*Function|Object*/cb, /*String?*/cbfn /*...*/){
- // summary:
- // Add a single callback to the end of the callback sequence.
- return this.addCallbacks(dojo.hitch.apply(dojo, arguments)); // dojo.Deferred
- },
-
- addErrback: function(cb, cbfn){
- // summary:
- // Add a single callback to the end of the callback sequence.
- return this.addCallbacks(null, dojo.hitch.apply(dojo, arguments)); // dojo.Deferred
- },
-
- addCallbacks: function(cb, eb){
- // summary:
- // Add separate callback and errback to the end of the callback
- // sequence.
- this.chain.push([cb, eb])
- if(this.fired >= 0 && !this.isFiring){
- this._fire();
- }
- return this; // dojo.Deferred
- },
-
- _fire: function(){
- // summary:
- // Used internally to exhaust the callback sequence when a result
- // is available.
- this.isFiring = true;
- var chain = this.chain;
- var fired = this.fired;
- var res = this.results[fired];
- var self = this;
- var cb = null;
- while(
- (chain.length > 0) &&
- (this.paused == 0)
- ){
- // Array
- var f = chain.shift()[fired];
- if(!f){ continue; }
- var func = function(){
- var ret = f(res);
- //If no response, then use previous response.
- if(typeof ret != "undefined"){
- res = ret;
- }
- fired = ((res instanceof Error) ? 1 : 0);
- if(res instanceof dojo.Deferred){
- cb = function(res){
- self._resback(res);
- // inlined from _pause()
- self.paused--;
- if(
- (self.paused == 0) &&
- (self.fired >= 0)
- ){
- self._fire();
- }
- }
- // inlined from _unpause
- this.paused++;
- }
- };
- if(dojo.config.debugAtAllCosts){
- func.call(this);
- }else{
- try{
- func.call(this);
- }catch(err){
- fired = 1;
- res = err;
- }
- }
- }
- this.fired = fired;
- this.results[fired] = res;
- this.isFiring = false;
- if((cb)&&(this.paused)){
- // this is for "tail recursion" in case the dependent
- // deferred is already fired
- res.addBoth(cb);
- }
- }
-});
-
-}
diff --git a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dojo/_base/NodeList.js b/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dojo/_base/NodeList.js
deleted file mode 100644
index 80a6ef2..0000000
--- a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dojo/_base/NodeList.js
+++ /dev/null
@@ -1,993 +0,0 @@
-/*
- Copyright (c) 2004-2009, The Dojo Foundation All Rights Reserved.
- Available via Academic Free License >= 2.1 OR the modified BSD license.
- see: http://dojotoolkit.org/license for details
-*/
-
-
-if(!dojo._hasResource["dojo._base.NodeList"]){ //_hasResource checks added by build. Do not use _hasResource directly in your code.
-dojo._hasResource["dojo._base.NodeList"] = true;
-dojo.provide("dojo._base.NodeList");
-dojo.require("dojo._base.lang");
-dojo.require("dojo._base.array");
-
-(function(){
-
- var d = dojo;
-
- var ap = Array.prototype, aps = ap.slice, apc = ap.concat;
-
- var tnl = function(/*Array*/ a, /*dojo.NodeList?*/ parent, /*Function?*/ NodeListCtor){
- // summary:
- // decorate an array to make it look like a `dojo.NodeList`.
- // a:
- // Array of nodes to decorate.
- // parent:
- // An optional parent NodeList that generated the current
- // list of nodes. Used to call _stash() so the parent NodeList
- // can be accessed via end() later.
- // NodeListCtor:
- // An optional constructor function to use for any
- // new NodeList calls. This allows a certain chain of
- // NodeList calls to use a different object than dojo.NodeList.
- if(!a.sort){
- // make sure it's a real array before we pass it on to be wrapped
- a = aps.call(a, 0);
- }
- var ctor = NodeListCtor || this._NodeListCtor || d._NodeListCtor;
- a.constructor = ctor;
- dojo._mixin(a, ctor.prototype);
- a._NodeListCtor = ctor;
- return parent ? a._stash(parent) : a;
- };
-
- var loopBody = function(f, a, o){
- a = [0].concat(aps.call(a, 0));
- o = o || d.global;
- return function(node){
- a[0] = node;
- return f.apply(o, a);
- };
- };
-
- // adapters
-
- var adaptAsForEach = function(f, o){
- // summary:
- // adapts a single node function to be used in the forEach-type
- // actions. The initial object is returned from the specialized
- // function.
- // f: Function
- // a function to adapt
- // o: Object?
- // an optional context for f
- return function(){
- this.forEach(loopBody(f, arguments, o));
- return this; // Object
- };
- };
-
- var adaptAsMap = function(f, o){
- // summary:
- // adapts a single node function to be used in the map-type
- // actions. The return is a new array of values, as via `dojo.map`
- // f: Function
- // a function to adapt
- // o: Object?
- // an optional context for f
- return function(){
- return this.map(loopBody(f, arguments, o));
- };
- };
-
- var adaptAsFilter = function(f, o){
- // summary:
- // adapts a single node function to be used in the filter-type actions
- // f: Function
- // a function to adapt
- // o: Object?
- // an optional context for f
- return function(){
- return this.filter(loopBody(f, arguments, o));
- };
- };
-
- var adaptWithCondition = function(f, g, o){
- // summary:
- // adapts a single node function to be used in the map-type
- // actions, behaves like forEach() or map() depending on arguments
- // f: Function
- // a function to adapt
- // g: Function
- // a condition function, if true runs as map(), otherwise runs as forEach()
- // o: Object?
- // an optional context for f and g
- return function(){
- var a = arguments, body = loopBody(f, a, o);
- if(g.call(o || d.global, a)){
- return this.map(body); // self
- }
- this.forEach(body);
- return this; // self
- };
- };
-
- var magicGuard = function(a){
- // summary:
- // the guard function for dojo.attr() and dojo.style()
- return a.length == 1 && (typeof a[0] == "string"); // inline'd type check
- };
-
- var orphan = function(node){
- // summary:
- // function to orphan nodes
- var p = node.parentNode;
- if(p){
- p.removeChild(node);
- }
- };
- // FIXME: should we move orphan() to dojo.html?
-
- dojo.NodeList = function(){
- // summary:
- // dojo.NodeList is an of Array subclass which adds syntactic
- // sugar for chaining, common iteration operations, animation, and
- // node manipulation. NodeLists are most often returned as the
- // result of dojo.query() calls.
- // description:
- // dojo.NodeList instances provide many utilities that reflect
- // core Dojo APIs for Array iteration and manipulation, DOM
- // manipulation, and event handling. Instead of needing to dig up
- // functions in the dojo.* namespace, NodeLists generally make the
- // full power of Dojo available for DOM manipulation tasks in a
- // simple, chainable way.
- // example:
- // create a node list from a node
- // | new dojo.NodeList(dojo.byId("foo"));
- // example:
- // get a NodeList from a CSS query and iterate on it
- // | var l = dojo.query(".thinger");
- // | l.forEach(function(node, index, nodeList){
- // | console.log(index, node.innerHTML);
- // | });
- // example:
- // use native and Dojo-provided array methods to manipulate a
- // NodeList without needing to use dojo.* functions explicitly:
- // | var l = dojo.query(".thinger");
- // | // since NodeLists are real arrays, they have a length
- // | // property that is both readable and writable and
- // | // push/pop/shift/unshift methods
- // | console.log(l.length);
- // | l.push(dojo.create("span"));
- // |
- // | // dojo's normalized array methods work too:
- // | console.log( l.indexOf(dojo.byId("foo")) );
- // | // ...including the special "function as string" shorthand
- // | console.log( l.every("item.nodeType == 1") );
- // |
- // | // NodeLists can be [..] indexed, or you can use the at()
- // | // function to get specific items wrapped in a new NodeList:
- // | var node = l[3]; // the 4th element
- // | var newList = l.at(1, 3); // the 2nd and 4th elements
- // example:
- // the style functions you expect are all there too:
- // | // style() as a getter...
- // | var borders = dojo.query(".thinger").style("border");
- // | // ...and as a setter:
- // | dojo.query(".thinger").style("border", "1px solid black");
- // | // class manipulation
- // | dojo.query("li:nth-child(even)").addClass("even");
- // | // even getting the coordinates of all the items
- // | var coords = dojo.query(".thinger").coords();
- // example:
- // DOM manipulation functions from the dojo.* namespace area also
- // available:
- // | // remove all of the elements in the list from their
- // | // parents (akin to "deleting" them from the document)
- // | dojo.query(".thinger").orphan();
- // | // place all elements in the list at the front of #foo
- // | dojo.query(".thinger").place("foo", "first");
- // example:
- // Event handling couldn't be easier. `dojo.connect` is mapped in,
- // and shortcut handlers are provided for most DOM events:
- // | // like dojo.connect(), but with implicit scope
- // | dojo.query("li").connect("onclick", console, "log");
- // |
- // | // many common event handlers are already available directly:
- // | dojo.query("li").onclick(console, "log");
- // | var toggleHovered = dojo.hitch(dojo, "toggleClass", "hovered");
- // | dojo.query("p")
- // | .onmouseenter(toggleHovered)
- // | .onmouseleave(toggleHovered);
- // example:
- // chainability is a key advantage of NodeLists:
- // | dojo.query(".thinger")
- // | .onclick(function(e){ /* ... */ })
- // | .at(1, 3, 8) // get a subset
- // | .style("padding", "5px")
- // | .forEach(console.log);
-
- return tnl(Array.apply(null, arguments));
- };
-
- //Allow things that new up a NodeList to use a delegated or alternate NodeList implementation.
- d._NodeListCtor = d.NodeList;
-
- var nl = d.NodeList, nlp = nl.prototype;
-
- // expose adapters and the wrapper as private functions
-
- nl._wrap = nlp._wrap = tnl;
- nl._adaptAsMap = adaptAsMap;
- nl._adaptAsForEach = adaptAsForEach;
- nl._adaptAsFilter = adaptAsFilter;
- nl._adaptWithCondition = adaptWithCondition;
-
- // mass assignment
-
- // add array redirectors
- d.forEach(["slice", "splice"], function(name){
- var f = ap[name];
- //Use a copy of the this array via this.slice() to allow .end() to work right in the splice case.
- // CANNOT apply ._stash()/end() to splice since it currently modifies
- // the existing this array -- it would break backward compatibility if we copy the array before
- // the splice so that we can use .end(). So only doing the stash option to this._wrap for slice.
- nlp[name] = function(){ return this._wrap(f.apply(this, arguments), name == "slice" ? this : null); };
- });
- // concat should be here but some browsers with native NodeList have problems with it
-
- // add array.js redirectors
- d.forEach(["indexOf", "lastIndexOf", "every", "some"], function(name){
- var f = d[name];
- nlp[name] = function(){ return f.apply(d, [this].concat(aps.call(arguments, 0))); };
- });
-
- // add conditional methods
- d.forEach(["attr", "style"], function(name){
- nlp[name] = adaptWithCondition(d[name], magicGuard);
- });
-
- // add forEach actions
- d.forEach(["connect", "addClass", "removeClass", "toggleClass", "empty", "removeAttr"], function(name){
- nlp[name] = adaptAsForEach(d[name]);
- });
-
- dojo.extend(dojo.NodeList, {
- _normalize: function(/*String||Element||Object||NodeList*/content, /*DOMNode?*/refNode){
- // summary:
- // normalizes data to an array of items to insert.
- // description:
- // If content is an object, it can have special properties "template" and
- // "parse". If "template" is defined, then the template value is run through
- // dojo.string.substitute (if dojo.string.substitute has been dojo.required elsewhere),
- // or if templateFunc is a function on the content, that function will be used to
- // transform the template into a final string to be used for for passing to dojo._toDom.
- // If content.parse is true, then it is remembered for later, for when the content
- // nodes are inserted into the DOM. At that point, the nodes will be parsed for widgets
- // (if dojo.parser has been dojo.required elsewhere).
-
- //Wanted to just use a DocumentFragment, but for the array/NodeList
- //case that meant using cloneNode, but we may not want that.
- //Cloning should only happen if the node operations span
- //multiple refNodes. Also, need a real array, not a NodeList from the
- //DOM since the node movements could change those NodeLists.
-
- var parse = content.parse === true ? true : false;
-
- //Do we have an object that needs to be run through a template?
- if(typeof content.template == "string"){
- var templateFunc = content.templateFunc || (dojo.string && dojo.string.substitute);
- content = templateFunc ? templateFunc(content.template, content) : content;
- }
-
- var type = (typeof content);
- if(type == "string" || type == "number"){
- content = dojo._toDom(content, (refNode && refNode.ownerDocument));
- if(content.nodeType == 11){
- //DocumentFragment. It cannot handle cloneNode calls, so pull out the children.
- content = dojo._toArray(content.childNodes);
- }else{
- content = [content];
- }
- }else if(!dojo.isArrayLike(content)){
- content = [content];
- }else if(!dojo.isArray(content)){
- //To get to this point, content is array-like, but
- //not an array, which likely means a DOM NodeList. Convert it now.
- content = dojo._toArray(content);
- }
-
- //Pass around the parse info
- if(parse){
- content._runParse = true;
- }
- return content; //Array
- },
-
- _cloneNode: function(/*DOMNode*/ node){
- // summary:
- // private utiltity to clone a node. Not very interesting in the vanilla
- // dojo.NodeList case, but delegates could do interesting things like
- // clone event handlers if that is derivable from the node.
- return node.cloneNode(true);
- },
-
- _place: function(/*Array*/ary, /*DOMNode*/refNode, /*String*/position, /*Boolean*/useClone){
- // summary:
- // private utility to handle placing an array of nodes relative to another node.
- // description:
- // Allows for cloning the nodes in the array, and for
- // optionally parsing widgets, if ary._runParse is true.
-
- //Avoid a disallowed operation if trying to do an innerHTML on a non-element node.
- if(refNode.nodeType != 1 && position == "only"){
- return;
- }
- var rNode = refNode, tempNode;
-
- //Always cycle backwards in case the array is really a
- //DOM NodeList and the DOM operations take it out of the live collection.
- var length = ary.length;
- for(var i = length - 1; i >= 0; i--){
- var node = (useClone ? this._cloneNode(ary[i]) : ary[i]);
-
- //If need widget parsing, use a temp node, instead of waiting after inserting into
- //real DOM because we need to start widget parsing at one node up from current node,
- //which could cause some already parsed widgets to be parsed again.
- if(ary._runParse && dojo.parser && dojo.parser.parse){
- if(!tempNode){
- tempNode = rNode.ownerDocument.createElement("div");
- }
- tempNode.appendChild(node);
- dojo.parser.parse(tempNode);
- node = tempNode.firstChild;
- while(tempNode.firstChild){
- tempNode.removeChild(tempNode.firstChild);
- }
- }
-
- if(i == length - 1){
- dojo.place(node, rNode, position);
- }else{
- rNode.parentNode.insertBefore(node, rNode);
- }
- rNode = node;
- }
- },
-
- _stash: function(parent){
- // summary:
- // private function to hold to a parent NodeList. end() to return the parent NodeList.
- //
- // example:
- // How to make a `dojo.NodeList` method that only returns the third node in
- // the dojo.NodeList but allows access to the original NodeList by using this._stash:
- // | dojo.extend(dojo.NodeList, {
- // | third: function(){
- // | var newNodeList = dojo.NodeList(this[2]);
- // | return newNodeList._stash(this);
- // | }
- // | });
- // | // then see how _stash applies a sub-list, to be .end()'ed out of
- // | dojo.query(".foo")
- // | .third()
- // | .addClass("thirdFoo")
- // | .end()
- // | // access to the orig .foo list
- // | .removeClass("foo")
- // |
- //
- this._parent = parent;
- return this; //dojo.NodeList
- },
-
- end: function(){
- // summary:
- // Ends use of the current `dojo.NodeList` by returning the previous dojo.NodeList
- // that generated the current dojo.NodeList.
- // description:
- // Returns the `dojo.NodeList` that generated the current `dojo.NodeList`. If there
- // is no parent dojo.NodeList, an empty dojo.NodeList is returned.
- // example:
- // | dojo.query("a")
- // | .filter(".disabled")
- // | // operate on the anchors that only have a disabled class
- // | .style("color", "grey")
- // | .end()
- // | // jump back to the list of anchors
- // | .style(...)
- //
- if(this._parent){
- return this._parent;
- }else{
- //Just return empy list.
- return new this._NodeListCtor();
- }
- },
-
- // http://developer.mozilla.org/en/docs/Core_JavaScript_1.5_Reference:Global_Objects:Array#Methods
-
- // FIXME: handle return values for #3244
- // http://trac.dojotoolkit.org/ticket/3244
-
- // FIXME:
- // need to wrap or implement:
- // join (perhaps w/ innerHTML/outerHTML overload for toString() of items?)
- // reduce
- // reduceRight
-
- /*=====
- slice: function(begin, end){
- // summary:
- // Returns a new NodeList, maintaining this one in place
- // description:
- // This method behaves exactly like the Array.slice method
- // with the caveat that it returns a dojo.NodeList and not a
- // raw Array. For more details, see Mozilla's (slice
- // documentation)[http://developer.mozilla.org/en/docs/Core_JavaScript_1.5_Reference:Global_Objects:Array:slice]
- // begin: Integer
- // Can be a positive or negative integer, with positive
- // integers noting the offset to begin at, and negative
- // integers denoting an offset from the end (i.e., to the left
- // of the end)
- // end: Integer?
- // Optional parameter to describe what position relative to
- // the NodeList's zero index to end the slice at. Like begin,
- // can be positive or negative.
- return this._wrap(a.slice.apply(this, arguments));
- },
-
- splice: function(index, howmany, item){
- // summary:
- // Returns a new NodeList, manipulating this NodeList based on
- // the arguments passed, potentially splicing in new elements
- // at an offset, optionally deleting elements
- // description:
- // This method behaves exactly like the Array.splice method
- // with the caveat that it returns a dojo.NodeList and not a
- // raw Array. For more details, see Mozilla's (splice
- // documentation)[http://developer.mozilla.org/en/docs/Core_JavaScript_1.5_Reference:Global_Objects:Array:splice]
- // For backwards compatibility, calling .end() on the spliced NodeList
- // does not return the original NodeList -- splice alters the NodeList in place.
- // index: Integer
- // begin can be a positive or negative integer, with positive
- // integers noting the offset to begin at, and negative
- // integers denoting an offset from the end (i.e., to the left
- // of the end)
- // howmany: Integer?
- // Optional parameter to describe what position relative to
- // the NodeList's zero index to end the slice at. Like begin,
- // can be positive or negative.
- // item: Object...?
- // Any number of optional parameters may be passed in to be
- // spliced into the NodeList
- // returns:
- // dojo.NodeList
- return this._wrap(a.splice.apply(this, arguments));
- },
-
- indexOf: function(value, fromIndex){
- // summary:
- // see dojo.indexOf(). The primary difference is that the acted-on
- // array is implicitly this NodeList
- // value: Object:
- // The value to search for.
- // fromIndex: Integer?:
- // The loction to start searching from. Optional. Defaults to 0.
- // description:
- // For more details on the behavior of indexOf, see Mozilla's
- // (indexOf
- // docs)[http://developer.mozilla.org/en/docs/Core_JavaScript_1.5_Reference:Global_Objects:Array:indexOf]
- // returns:
- // Positive Integer or 0 for a match, -1 of not found.
- return d.indexOf(this, value, fromIndex); // Integer
- },
-
- lastIndexOf: function(value, fromIndex){
- // summary:
- // see dojo.lastIndexOf(). The primary difference is that the
- // acted-on array is implicitly this NodeList
- // description:
- // For more details on the behavior of lastIndexOf, see
- // Mozilla's (lastIndexOf
- // docs)[http://developer.mozilla.org/en/docs/Core_JavaScript_1.5_Reference:Global_Objects:Array:lastIndexOf]
- // value: Object
- // The value to search for.
- // fromIndex: Integer?
- // The loction to start searching from. Optional. Defaults to 0.
- // returns:
- // Positive Integer or 0 for a match, -1 of not found.
- return d.lastIndexOf(this, value, fromIndex); // Integer
- },
-
- every: function(callback, thisObject){
- // summary:
- // see `dojo.every()` and the (Array.every
- // docs)[http://developer.mozilla.org/en/docs/Core_JavaScript_1.5_Reference:Global_Objects:Array:every].
- // Takes the same structure of arguments and returns as
- // dojo.every() with the caveat that the passed array is
- // implicitly this NodeList
- // callback: Function: the callback
- // thisObject: Object?: the context
- return d.every(this, callback, thisObject); // Boolean
- },
-
- some: function(callback, thisObject){
- // summary:
- // Takes the same structure of arguments and returns as
- // `dojo.some()` with the caveat that the passed array is
- // implicitly this NodeList. See `dojo.some()` and Mozilla's
- // (Array.some
- // documentation)[http://developer.mozilla.org/en/docs/Core_JavaScript_1.5_Reference:Global_Objects:Array:some].
- // callback: Function: the callback
- // thisObject: Object?: the context
- return d.some(this, callback, thisObject); // Boolean
- },
- =====*/
-
- concat: function(item){
- // summary:
- // Returns a new NodeList comprised of items in this NodeList
- // as well as items passed in as parameters
- // description:
- // This method behaves exactly like the Array.concat method
- // with the caveat that it returns a `dojo.NodeList` and not a
- // raw Array. For more details, see the (Array.concat
- // docs)[http://developer.mozilla.org/en/docs/Core_JavaScript_1.5_Reference:Global_Objects:Array:concat]
- // item: Object?
- // Any number of optional parameters may be passed in to be
- // spliced into the NodeList
- // returns:
- // dojo.NodeList
-
- //return this._wrap(apc.apply(this, arguments));
- // the line above won't work for the native NodeList :-(
-
- // implementation notes:
- // 1) Native NodeList is not an array, and cannot be used directly
- // in concat() --- the latter doesn't recognize it as an array, and
- // does not inline it, but append as a single entity.
- // 2) On some browsers (e.g., Safari) the "constructor" property is
- // read-only and cannot be changed. So we have to test for both
- // native NodeList and dojo.NodeList in this property to recognize
- // the node list.
-
- var t = d.isArray(this) ? this : aps.call(this, 0),
- m = d.map(arguments, function(a){
- return a && !d.isArray(a) &&
- (typeof NodeList != "undefined" && a.constructor === NodeList || a.constructor === this._NodeListCtor) ?
- aps.call(a, 0) : a;
- });
- return this._wrap(apc.apply(t, m), this); // dojo.NodeList
- },
-
- map: function(/*Function*/ func, /*Function?*/ obj){
- // summary:
- // see dojo.map(). The primary difference is that the acted-on
- // array is implicitly this NodeList and the return is a
- // dojo.NodeList (a subclass of Array)
- ///return d.map(this, func, obj, d.NodeList); // dojo.NodeList
- return this._wrap(d.map(this, func, obj), this); // dojo.NodeList
- },
-
- forEach: function(callback, thisObj){
- // summary:
- // see `dojo.forEach()`. The primary difference is that the acted-on
- // array is implicitly this NodeList. If you want the option to break out
- // of the forEach loop, use every() or some() instead.
- d.forEach(this, callback, thisObj);
- // non-standard return to allow easier chaining
- return this; // dojo.NodeList
- },
-
- /*=====
- coords: function(){
- // summary:
- // Returns the box objects of all elements in a node list as
- // an Array (*not* a NodeList). Acts like `dojo.coords`, though assumes
- // the node passed is each node in this list.
-
- return d.map(this, d.coords); // Array
- },
-
- position: function(){
- // summary:
- // Returns border-box objects (x/y/w/h) of all elements in a node list
- // as an Array (*not* a NodeList). Acts like `dojo.position`, though
- // assumes the node passed is each node in this list.
-
- return d.map(this, d.position); // Array
- },
-
- attr: function(property, value){
- // summary:
- // gets or sets the DOM attribute for every element in the
- // NodeList. See also `dojo.attr`
- // property: String
- // the attribute to get/set
- // value: String?
- // optional. The value to set the property to
- // returns:
- // if no value is passed, the result is an array of attribute values
- // If a value is passed, the return is this NodeList
- // example:
- // Make all nodes with a particular class focusabl:
- // | dojo.query(".focusable").attr("tabIndex", -1);
- // example:
- // Disable a group of buttons:
- // | dojo.query("button.group").attr("disalbed", true);
- // example:
- // innerHTML can be assigned or retreived as well:
- // | // get the innerHTML (as an array) for each list item
- // | var ih = dojo.query("li.replaceable").attr("innerHTML");
- return; // dojo.NodeList
- return; // Array
- },
-
- style: function(property, value){
- // summary:
- // gets or sets the CSS property for every element in the NodeList
- // property: String
- // the CSS property to get/set, in JavaScript notation
- // ("lineHieght" instead of "line-height")
- // value: String?
- // optional. The value to set the property to
- // returns:
- // if no value is passed, the result is an array of strings.
- // If a value is passed, the return is this NodeList
- return; // dojo.NodeList
- return; // Array
- },
-
- addClass: function(className){
- // summary:
- // adds the specified class to every node in the list
- // className: String|Array
- // A String class name to add, or several space-separated class names,
- // or an array of class names.
- return; // dojo.NodeList
- },
-
- removeClass: function(className){
- // summary:
- // removes the specified class from every node in the list
- // className: String|Array?
- // An optional String class name to remove, or several space-separated
- // class names, or an array of class names. If omitted, all class names
- // will be deleted.
- // returns:
- // dojo.NodeList, this list
- return; // dojo.NodeList
- },
-
- toggleClass: function(className, condition){
- // summary:
- // Adds a class to node if not present, or removes if present.
- // Pass a boolean condition if you want to explicitly add or remove.
- // condition: Boolean?
- // If passed, true means to add the class, false means to remove.
- // className: String
- // the CSS class to add
- return; // dojo.NodeList
- },
-
- connect: function(methodName, objOrFunc, funcName){
- // summary:
- // attach event handlers to every item of the NodeList. Uses dojo.connect()
- // so event properties are normalized
- // methodName: String
- // the name of the method to attach to. For DOM events, this should be
- // the lower-case name of the event
- // objOrFunc: Object|Function|String
- // if 2 arguments are passed (methodName, objOrFunc), objOrFunc should
- // reference a function or be the name of the function in the global
- // namespace to attach. If 3 arguments are provided
- // (methodName, objOrFunc, funcName), objOrFunc must be the scope to
- // locate the bound function in
- // funcName: String?
- // optional. A string naming the function in objOrFunc to bind to the
- // event. May also be a function reference.
- // example:
- // add an onclick handler to every button on the page
- // | dojo.query("div:nth-child(odd)").connect("onclick", function(e){
- // | console.log("clicked!");
- // | });
- // example:
- // attach foo.bar() to every odd div's onmouseover
- // | dojo.query("div:nth-child(odd)").connect("onmouseover", foo, "bar");
- },
-
- empty: function(){
- // summary:
- // clears all content from each node in the list. Effectively
- // equivalent to removing all child nodes from every item in
- // the list.
- return this.forEach("item.innerHTML='';"); // dojo.NodeList
- // FIXME: should we be checking for and/or disposing of widgets below these nodes?
- },
- =====*/
-
- // useful html methods
- coords: adaptAsMap(d.coords),
- position: adaptAsMap(d.position),
-
- // FIXME: connectPublisher()? connectRunOnce()?
-
- /*
- destroy: function(){
- // summary:
- // destroys every item in the list.
- this.forEach(d.destroy);
- // FIXME: should we be checking for and/or disposing of widgets below these nodes?
- },
- */
-
- place: function(/*String||Node*/ queryOrNode, /*String*/ position){
- // summary:
- // places elements of this node list relative to the first element matched
- // by queryOrNode. Returns the original NodeList. See: `dojo.place`
- // queryOrNode:
- // may be a string representing any valid CSS3 selector or a DOM node.
- // In the selector case, only the first matching element will be used
- // for relative positioning.
- // position:
- // can be one of:
- // | "last" (default)
- // | "first"
- // | "before"
- // | "after"
- // | "only"
- // | "replace"
- // or an offset in the childNodes property
- var item = d.query(queryOrNode)[0];
- return this.forEach(function(node){ d.place(node, item, position); }); // dojo.NodeList
- },
-
- orphan: function(/*String?*/ simpleFilter){
- // summary:
- // removes elements in this list that match the simple filter
- // from their parents and returns them as a new NodeList.
- // simpleFilter:
- // single-expression CSS rule. For example, ".thinger" or
- // "#someId[attrName='value']" but not "div > span". In short,
- // anything which does not invoke a descent to evaluate but
- // can instead be used to test a single node is acceptable.
- // returns:
- // `dojo.NodeList` containing the orpahned elements
- return (simpleFilter ? d._filterQueryResult(this, simpleFilter) : this).forEach(orphan); // dojo.NodeList
- },
-
- adopt: function(/*String||Array||DomNode*/ queryOrListOrNode, /*String?*/ position){
- // summary:
- // places any/all elements in queryOrListOrNode at a
- // position relative to the first element in this list.
- // Returns a dojo.NodeList of the adopted elements.
- // queryOrListOrNode:
- // a DOM node or a query string or a query result.
- // Represents the nodes to be adopted relative to the
- // first element of this NodeList.
- // position:
- // can be one of:
- // | "last" (default)
- // | "first"
- // | "before"
- // | "after"
- // | "only"
- // | "replace"
- // or an offset in the childNodes property
- return d.query(queryOrListOrNode).place(this[0], position)._stash(this); // dojo.NodeList
- },
-
- // FIXME: do we need this?
- query: function(/*String*/ queryStr){
- // summary:
- // Returns a new list whose memebers match the passed query,
- // assuming elements of the current NodeList as the root for
- // each search.
- // example:
- // assume a DOM created by this markup:
- // | <div id="foo">
- // | <p>
- // | bacon is tasty, <span>dontcha think?</span>
- // | </p>
- // | </div>
- // | <div id="bar">
- // | <p>great commedians may not be funny <span>in person</span></p>
- // | </div>
- // If we are presented with the following defintion for a NodeList:
- // | var l = new dojo.NodeList(dojo.byId("foo"), dojo.byId("bar"));
- // it's possible to find all span elements under paragraphs
- // contained by these elements with this sub-query:
- // | var spans = l.query("p span");
-
- // FIXME: probably slow
- if(!queryStr){ return this; }
- var ret = this.map(function(node){
- // FIXME: why would we ever get undefined here?
- return d.query(queryStr, node).filter(function(subNode){ return subNode !== undefined; });
- });
- return this._wrap(apc.apply([], ret), this); // dojo.NodeList
- },
-
- filter: function(/*String|Function*/ simpleFilter){
- // summary:
- // "masks" the built-in javascript filter() method (supported
- // in Dojo via `dojo.filter`) to support passing a simple
- // string filter in addition to supporting filtering function
- // objects.
- // simpleFilter:
- // If a string, a single-expression CSS rule. For example,
- // ".thinger" or "#someId[attrName='value']" but not "div >
- // span". In short, anything which does not invoke a descent
- // to evaluate but can instead be used to test a single node
- // is acceptable.
- // example:
- // "regular" JS filter syntax as exposed in dojo.filter:
- // | dojo.query("*").filter(function(item){
- // | // highlight every paragraph
- // | return (item.nodeName == "p");
- // | }).style("backgroundColor", "yellow");
- // example:
- // the same filtering using a CSS selector
- // | dojo.query("*").filter("p").styles("backgroundColor", "yellow");
-
- var a = arguments, items = this, start = 0;
- if(typeof simpleFilter == "string"){ // inline'd type check
- items = d._filterQueryResult(this, a[0]);
- if(a.length == 1){
- // if we only got a string query, pass back the filtered results
- return items._stash(this); // dojo.NodeList
- }
- // if we got a callback, run it over the filtered items
- start = 1;
- }
- return this._wrap(d.filter(items, a[start], a[start + 1]), this); // dojo.NodeList
- },
-
- /*
- // FIXME: should this be "copyTo" and include parenting info?
- clone: function(){
- // summary:
- // creates node clones of each element of this list
- // and returns a new list containing the clones
- },
- */
-
- addContent: function(/*String||DomNode||Object||dojo.NodeList*/ content, /*String||Integer?*/ position){
- // summary:
- // add a node, NodeList or some HTML as a string to every item in the
- // list. Returns the original list.
- // description:
- // a copy of the HTML content is added to each item in the
- // list, with an optional position argument. If no position
- // argument is provided, the content is appended to the end of
- // each item.
- // content:
- // DOM node, HTML in string format, a NodeList or an Object. If a DOM node or
- // NodeList, the content will be cloned if the current NodeList has more than one
- // element. Only the DOM nodes are cloned, no event handlers. If it is an Object,
- // it should be an object with at "template" String property that has the HTML string
- // to insert. If dojo.string has already been dojo.required, then dojo.string.substitute
- // will be used on the "template" to generate the final HTML string. Other allowed
- // properties on the object are: "parse" if the HTML
- // string should be parsed for widgets (dojo.require("dojo.parser") to get that
- // option to work), and "templateFunc" if a template function besides dojo.string.substitute
- // should be used to transform the "template".
- // position:
- // can be one of:
- // | "last"||"end" (default)
- // | "first||"start"
- // | "before"
- // | "after"
- // | "replace" (replaces nodes in this NodeList with new content)
- // | "only" (removes other children of the nodes so new content is hte only child)
- // or an offset in the childNodes property
- // example:
- // appends content to the end if the position is ommitted
- // | dojo.query("h3 > p").addContent("hey there!");
- // example:
- // add something to the front of each element that has a
- // "thinger" property:
- // | dojo.query("[thinger]").addContent("...", "first");
- // example:
- // adds a header before each element of the list
- // | dojo.query(".note").addContent("<h4>NOTE:</h4>", "before");
- // example:
- // add a clone of a DOM node to the end of every element in
- // the list, removing it from its existing parent.
- // | dojo.query(".note").addContent(dojo.byId("foo"));
- // example:
- // Append nodes from a templatized string.
- // dojo.require("dojo.string");
- // dojo.query(".note").addContent({
- // template: '<b>${id}: </b><span>${name}</span>',
- // id: "user332",
- // name: "Mr. Anderson"
- // });
- // example:
- // Append nodes from a templatized string that also has widgets parsed.
- // dojo.require("dojo.string");
- // dojo.require("dojo.parser");
- // var notes = dojo.query(".note").addContent({
- // template: '<button dojoType="dijit.form.Button">${text}</button>',
- // parse: true,
- // text: "Send"
- // });
- content = this._normalize(content, this[0]);
- for(var i = 0, node; node = this[i]; i++){
- this._place(content, node, position, i > 0);
- }
- return this; //dojo.NodeList
- },
-
- instantiate: function(/*String|Object*/ declaredClass, /*Object?*/ properties){
- // summary:
- // Create a new instance of a specified class, using the
- // specified properties and each node in the nodeList as a
- // srcNodeRef.
- // example:
- // Grabs all buttons in the page and converts them to diji.form.Buttons.
- // | var buttons = dojo.query("button").instantiate("dijit.form.Button", {showLabel: true});
- var c = d.isFunction(declaredClass) ? declaredClass : d.getObject(declaredClass);
- properties = properties || {};
- return this.forEach(function(node){
- new c(properties, node);
- }); // dojo.NodeList
- },
-
- at: function(/*===== index =====*/){
- // summary:
- // Returns a new NodeList comprised of items in this NodeList
- // at the given index or indices.
- // index: Integer...
- // One or more 0-based indices of items in the current
- // NodeList.
- // returns:
- // dojo.NodeList
- var t = new this._NodeListCtor();
- d.forEach(arguments, function(i){ if(this[i]){ t.push(this[i]); }}, this);
- return t._stash(this); // dojo.NodeList
- }
-
- });
-
- nl.events = [
- // summary: list of all DOM events used in NodeList
- "blur", "focus", "change", "click", "error", "keydown", "keypress",
- "keyup", "load", "mousedown", "mouseenter", "mouseleave", "mousemove",
- "mouseout", "mouseover", "mouseup", "submit"
- ];
-
- // syntactic sugar for DOM events
- d.forEach(nl.events, function(evt){
- var _oe = "on"+evt;
- nlp[_oe] = function(a, b){
- return this.connect(_oe, a, b);
- }
- // FIXME: should these events trigger publishes?
- /*
- return (a ? this.connect(_oe, a, b) :
- this.forEach(function(n){
- // FIXME:
- // listeners get buried by
- // addEventListener and can't be dug back
- // out to be triggered externally.
- // see:
- // http://developer.mozilla.org/en/docs/DOM:element
-
- console.log(n, evt, _oe);
-
- // FIXME: need synthetic event support!
- var _e = { target: n, faux: true, type: evt };
- // dojo._event_listener._synthesizeEvent({}, { target: n, faux: true, type: evt });
- try{ n[evt](_e); }catch(e){ console.log(e); }
- try{ n[_oe](_e); }catch(e){ console.log(e); }
- })
- );
- */
- }
- );
-
-})();
-
-}
diff --git a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dojo/_base/_loader/bootstrap.js b/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dojo/_base/_loader/bootstrap.js
deleted file mode 100644
index 23f09ad..0000000
--- a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dojo/_base/_loader/bootstrap.js
+++ /dev/null
@@ -1,515 +0,0 @@
-/*
- Copyright (c) 2004-2009, The Dojo Foundation All Rights Reserved.
- Available via Academic Free License >= 2.1 OR the modified BSD license.
- see: http://dojotoolkit.org/license for details
-*/
-
-
-/*=====
-// note:
-// 'djConfig' does not exist under 'dojo.*' so that it can be set before the
-// 'dojo' variable exists.
-// note:
-// Setting any of these variables *after* the library has loaded does
-// nothing at all.
-
-djConfig = {
- // summary:
- // Application code can set the global 'djConfig' prior to loading
- // the library to override certain global settings for how dojo works.
- //
- // isDebug: Boolean
- // Defaults to `false`. If set to `true`, ensures that Dojo provides
- // extended debugging feedback via Firebug. If Firebug is not available
- // on your platform, setting `isDebug` to `true` will force Dojo to
- // pull in (and display) the version of Firebug Lite which is
- // integrated into the Dojo distribution, thereby always providing a
- // debugging/logging console when `isDebug` is enabled. Note that
- // Firebug's `console.*` methods are ALWAYS defined by Dojo. If
- // `isDebug` is false and you are on a platform without Firebug, these
- // methods will be defined as no-ops.
- isDebug: false,
- // debugAtAllCosts: Boolean
- // Defaults to `false`. If set to `true`, this triggers an alternate
- // mode of the package system in which dependencies are detected and
- // only then are resources evaluated in dependency order via
- // `<script>` tag inclusion. This may double-request resources and
- // cause problems with scripts which expect `dojo.require()` to
- // preform synchronously. `debugAtAllCosts` can be an invaluable
- // debugging aid, but when using it, ensure that all code which
- // depends on Dojo modules is wrapped in `dojo.addOnLoad()` handlers.
- // Due to the somewhat unpredictable side-effects of using
- // `debugAtAllCosts`, it is strongly recommended that you enable this
- // flag as a last resort. `debugAtAllCosts` has no effect when loading
- // resources across domains. For usage information, see the
- // [Dojo Book](http://dojotoolkit.org/book/book-dojo/part-4-meta-dojo-making-your-dojo-code-run-faster-and-better/debugging-facilities/deb)
- debugAtAllCosts: false,
- // locale: String
- // The locale to assume for loading localized resources in this page,
- // specified according to [RFC 3066](http://www.ietf.org/rfc/rfc3066.txt).
- // Must be specified entirely in lowercase, e.g. `en-us` and `zh-cn`.
- // See the documentation for `dojo.i18n` and `dojo.requireLocalization`
- // for details on loading localized resources. If no locale is specified,
- // Dojo assumes the locale of the user agent, according to `navigator.userLanguage`
- // or `navigator.language` properties.
- locale: undefined,
- // extraLocale: Array
- // No default value. Specifies additional locales whose
- // resources should also be loaded alongside the default locale when
- // calls to `dojo.requireLocalization()` are processed.
- extraLocale: undefined,
- // baseUrl: String
- // The directory in which `dojo.js` is located. Under normal
- // conditions, Dojo auto-detects the correct location from which it
- // was loaded. You may need to manually configure `baseUrl` in cases
- // where you have renamed `dojo.js` or in which `<base>` tags confuse
- // some browsers (e.g. IE 6). The variable `dojo.baseUrl` is assigned
- // either the value of `djConfig.baseUrl` if one is provided or the
- // auto-detected root if not. Other modules are located relative to
- // this path. The path should end in a slash.
- baseUrl: undefined,
- // modulePaths: Object
- // A map of module names to paths relative to `dojo.baseUrl`. The
- // key/value pairs correspond directly to the arguments which
- // `dojo.registerModulePath` accepts. Specifiying
- // `djConfig.modulePaths = { "foo": "../../bar" }` is the equivalent
- // of calling `dojo.registerModulePath("foo", "../../bar");`. Multiple
- // modules may be configured via `djConfig.modulePaths`.
- modulePaths: {},
- // afterOnLoad: Boolean
- // Indicates Dojo was added to the page after the page load. In this case
- // Dojo will not wait for the page DOMContentLoad/load events and fire
- // its dojo.addOnLoad callbacks after making sure all outstanding
- // dojo.required modules have loaded. Only works with a built dojo.js,
- // it does not work the dojo.js directly from source control.
- afterOnLoad: false,
- // addOnLoad: Function or Array
- // Adds a callback via dojo.addOnLoad. Useful when Dojo is added after
- // the page loads and djConfig.afterOnLoad is true. Supports the same
- // arguments as dojo.addOnLoad. When using a function reference, use
- // `djConfig.addOnLoad = function(){};`. For object with function name use
- // `djConfig.addOnLoad = [myObject, "functionName"];` and for object with
- // function reference use
- // `djConfig.addOnLoad = [myObject, function(){}];`
- addOnLoad: null,
- // require: Array
- // An array of module names to be loaded immediately after dojo.js has been included
- // in a page.
- require: [],
- // defaultDuration: Array
- // Default duration, in milliseconds, for wipe and fade animations within dijits.
- // Assigned to dijit.defaultDuration.
- defaultDuration: 200,
- // dojoBlankHtmlUrl: String
- // Used by some modules to configure an empty iframe. Used by dojo.io.iframe and
- // dojo.back, and dijit popup support in IE where an iframe is needed to make sure native
- // controls do not bleed through the popups. Normally this configuration variable
- // does not need to be set, except when using cross-domain/CDN Dojo builds.
- // Save dojo/resources/blank.html to your domain and set `djConfig.dojoBlankHtmlUrl`
- // to the path on your domain your copy of blank.html.
- dojoBlankHtmlUrl: undefined,
- // ioPublish: Boolean?
- // Set this to true to enable publishing of topics for the different phases of
- // IO operations. Publishing is done via dojo.publish. See dojo.__IoPublish for a list
- // of topics that are published.
- ioPublish: false,
- // useCustomLogger: Anything?
- // If set to a value that evaluates to true such as a string or array and
- // isDebug is true and Firebug is not available or running, then it bypasses
- // the creation of Firebug Lite allowing you to define your own console object.
- useCustomLogger: undefined,
- // transparentColor: Array
- // Array containing the r, g, b components used as transparent color in dojo.Color;
- // if undefined, [255,255,255] (white) will be used.
- transparentColor: undefined,
- // skipIeDomLoaded: Boolean
- // For IE only, skip the DOMContentLoaded hack used. Sometimes it can cause an Operation
- // Aborted error if the rest of the page triggers script defers before the DOM is ready.
- // If this is config value is set to true, then dojo.addOnLoad callbacks will not be
- // triggered until the page load event, which is after images and iframes load. If you
- // want to trigger the callbacks sooner, you can put a script block in the bottom of
- // your HTML that calls dojo._loadInit();. If you are using multiversion support, change
- // "dojo." to the appropriate scope name for dojo.
- skipIeDomLoaded: false
-}
-=====*/
-
-(function(){
- // firebug stubs
-
- if(typeof this["loadFirebugConsole"] == "function"){
- // for Firebug 1.2
- this["loadFirebugConsole"]();
- }else{
- this.console = this.console || {};
-
- // Be careful to leave 'log' always at the end
- var cn = [
- "assert", "count", "debug", "dir", "dirxml", "error", "group",
- "groupEnd", "info", "profile", "profileEnd", "time", "timeEnd",
- "trace", "warn", "log"
- ];
- var i=0, tn;
- while((tn=cn[i++])){
- if(!console[tn]){
- (function(){
- var tcn = tn+"";
- console[tcn] = ('log' in console) ? function(){
- var a = Array.apply({}, arguments);
- a.unshift(tcn+":");
- console["log"](a.join(" "));
- } : function(){}
- console[tcn]._fake = true;
- })();
- }
- }
- }
-
- //TODOC: HOW TO DOC THIS?
- // dojo is the root variable of (almost all) our public symbols -- make sure it is defined.
- if(typeof dojo == "undefined"){
- dojo = {
- _scopeName: "dojo",
- _scopePrefix: "",
- _scopePrefixArgs: "",
- _scopeSuffix: "",
- _scopeMap: {},
- _scopeMapRev: {}
- };
- }
-
- var d = dojo;
-
- //Need placeholders for dijit and dojox for scoping code.
- if(typeof dijit == "undefined"){
- dijit = {_scopeName: "dijit"};
- }
- if(typeof dojox == "undefined"){
- dojox = {_scopeName: "dojox"};
- }
-
- if(!d._scopeArgs){
- d._scopeArgs = [dojo, dijit, dojox];
- }
-
-/*=====
-dojo.global = {
- // summary:
- // Alias for the global scope
- // (e.g. the window object in a browser).
- // description:
- // Refer to 'dojo.global' rather than referring to window to ensure your
- // code runs correctly in contexts other than web browsers (e.g. Rhino on a server).
-}
-=====*/
- d.global = this;
-
- d.config =/*===== djConfig = =====*/{
- isDebug: false,
- debugAtAllCosts: false
- };
-
- if(typeof djConfig != "undefined"){
- for(var opt in djConfig){
- d.config[opt] = djConfig[opt];
- }
- }
-
-/*=====
- // Override locale setting, if specified
- dojo.locale = {
- // summary: the locale as defined by Dojo (read-only)
- };
-=====*/
- dojo.locale = d.config.locale;
-
- var rev = "$Rev: 21516 $".match(/\d+/);
-
-/*=====
- dojo.version = function(){
- // summary:
- // Version number of the Dojo Toolkit
- // major: Integer
- // Major version. If total version is "1.2.0beta1", will be 1
- // minor: Integer
- // Minor version. If total version is "1.2.0beta1", will be 2
- // patch: Integer
- // Patch version. If total version is "1.2.0beta1", will be 0
- // flag: String
- // Descriptor flag. If total version is "1.2.0beta1", will be "beta1"
- // revision: Number
- // The SVN rev from which dojo was pulled
- this.major = 0;
- this.minor = 0;
- this.patch = 0;
- this.flag = "";
- this.revision = 0;
- }
-=====*/
- dojo.version = {
- major: 1, minor: 4, patch: 2, flag: "",
- revision: rev ? +rev[0] : NaN,
- toString: function(){
- with(d.version){
- return major + "." + minor + "." + patch + flag + " (" + revision + ")"; // String
- }
- }
- }
-
- // Register with the OpenAjax hub
- if(typeof OpenAjax != "undefined"){
- OpenAjax.hub.registerLibrary(dojo._scopeName, "http://dojotoolkit.org", d.version.toString());
- }
-
- var extraNames, extraLen, empty = {};
- for(var i in {toString: 1}){ extraNames = []; break; }
- dojo._extraNames = extraNames = extraNames || ["hasOwnProperty", "valueOf", "isPrototypeOf",
- "propertyIsEnumerable", "toLocaleString", "toString", "constructor"];
- extraLen = extraNames.length;
-
- dojo._mixin = function(/*Object*/ target, /*Object*/ source){
- // summary:
- // Adds all properties and methods of source to target. This addition
- // is "prototype extension safe", so that instances of objects
- // will not pass along prototype defaults.
- var name, s, i;
- for(name in source){
- // the "tobj" condition avoid copying properties in "source"
- // inherited from Object.prototype. For example, if target has a custom
- // toString() method, don't overwrite it with the toString() method
- // that source inherited from Object.prototype
- s = source[name];
- if(!(name in target) || (target[name] !== s && (!(name in empty) || empty[name] !== s))){
- target[name] = s;
- }
- }
- // IE doesn't recognize some custom functions in for..in
- if(extraLen && source){
- for(i = 0; i < extraLen; ++i){
- name = extraNames[i];
- s = source[name];
- if(!(name in target) || (target[name] !== s && (!(name in empty) || empty[name] !== s))){
- target[name] = s;
- }
- }
- }
- return target; // Object
- }
-
- dojo.mixin = function(/*Object*/obj, /*Object...*/props){
- // summary:
- // Adds all properties and methods of props to obj and returns the
- // (now modified) obj.
- // description:
- // `dojo.mixin` can mix multiple source objects into a
- // destination object which is then returned. Unlike regular
- // `for...in` iteration, `dojo.mixin` is also smart about avoiding
- // extensions which other toolkits may unwisely add to the root
- // object prototype
- // obj:
- // The object to mix properties into. Also the return value.
- // props:
- // One or more objects whose values are successively copied into
- // obj. If more than one of these objects contain the same value,
- // the one specified last in the function call will "win".
- // example:
- // make a shallow copy of an object
- // | var copy = dojo.mixin({}, source);
- // example:
- // many class constructors often take an object which specifies
- // values to be configured on the object. In this case, it is
- // often simplest to call `dojo.mixin` on the `this` object:
- // | dojo.declare("acme.Base", null, {
- // | constructor: function(properties){
- // | // property configuration:
- // | dojo.mixin(this, properties);
- // |
- // | console.log(this.quip);
- // | // ...
- // | },
- // | quip: "I wasn't born yesterday, you know - I've seen movies.",
- // | // ...
- // | });
- // |
- // | // create an instance of the class and configure it
- // | var b = new acme.Base({quip: "That's what it does!" });
- // example:
- // copy in properties from multiple objects
- // | var flattened = dojo.mixin(
- // | {
- // | name: "Frylock",
- // | braces: true
- // | },
- // | {
- // | name: "Carl Brutanananadilewski"
- // | }
- // | );
- // |
- // | // will print "Carl Brutanananadilewski"
- // | console.log(flattened.name);
- // | // will print "true"
- // | console.log(flattened.braces);
- if(!obj){ obj = {}; }
- for(var i=1, l=arguments.length; i<l; i++){
- d._mixin(obj, arguments[i]);
- }
- return obj; // Object
- }
-
- dojo._getProp = function(/*Array*/parts, /*Boolean*/create, /*Object*/context){
- var obj=context || d.global;
- for(var i=0, p; obj && (p=parts[i]); i++){
- if(i == 0 && d._scopeMap[p]){
- p = d._scopeMap[p];
- }
- obj = (p in obj ? obj[p] : (create ? obj[p]={} : undefined));
- }
- return obj; // mixed
- }
-
- dojo.setObject = function(/*String*/name, /*Object*/value, /*Object?*/context){
- // summary:
- // Set a property from a dot-separated string, such as "A.B.C"
- // description:
- // Useful for longer api chains where you have to test each object in
- // the chain, or when you have an object reference in string format.
- // Objects are created as needed along `path`. Returns the passed
- // value if setting is successful or `undefined` if not.
- // name:
- // Path to a property, in the form "A.B.C".
- // context:
- // Optional. Object to use as root of path. Defaults to
- // `dojo.global`.
- // example:
- // set the value of `foo.bar.baz`, regardless of whether
- // intermediate objects already exist:
- // | dojo.setObject("foo.bar.baz", value);
- // example:
- // without `dojo.setObject`, we often see code like this:
- // | // ensure that intermediate objects are available
- // | if(!obj["parent"]){ obj.parent = {}; }
- // | if(!obj.parent["child"]){ obj.parent.child= {}; }
- // | // now we can safely set the property
- // | obj.parent.child.prop = "some value";
- // wheras with `dojo.setObject`, we can shorten that to:
- // | dojo.setObject("parent.child.prop", "some value", obj);
- var parts=name.split("."), p=parts.pop(), obj=d._getProp(parts, true, context);
- return obj && p ? (obj[p]=value) : undefined; // Object
- }
-
- dojo.getObject = function(/*String*/name, /*Boolean?*/create, /*Object?*/context){
- // summary:
- // Get a property from a dot-separated string, such as "A.B.C"
- // description:
- // Useful for longer api chains where you have to test each object in
- // the chain, or when you have an object reference in string format.
- // name:
- // Path to an property, in the form "A.B.C".
- // create:
- // Optional. Defaults to `false`. If `true`, Objects will be
- // created at any point along the 'path' that is undefined.
- // context:
- // Optional. Object to use as root of path. Defaults to
- // 'dojo.global'. Null may be passed.
- return d._getProp(name.split("."), create, context); // Object
- }
-
- dojo.exists = function(/*String*/name, /*Object?*/obj){
- // summary:
- // determine if an object supports a given method
- // description:
- // useful for longer api chains where you have to test each object in
- // the chain. Useful only for object and method detection.
- // Not useful for testing generic properties on an object.
- // In particular, dojo.exists("foo.bar") when foo.bar = ""
- // will return false. Use ("bar" in foo) to test for those cases.
- // name:
- // Path to an object, in the form "A.B.C".
- // obj:
- // Object to use as root of path. Defaults to
- // 'dojo.global'. Null may be passed.
- // example:
- // | // define an object
- // | var foo = {
- // | bar: { }
- // | };
- // |
- // | // search the global scope
- // | dojo.exists("foo.bar"); // true
- // | dojo.exists("foo.bar.baz"); // false
- // |
- // | // search from a particular scope
- // | dojo.exists("bar", foo); // true
- // | dojo.exists("bar.baz", foo); // false
- return !!d.getObject(name, false, obj); // Boolean
- }
-
-
- dojo["eval"] = function(/*String*/ scriptFragment){
- // summary:
- // Perform an evaluation in the global scope. Use this rather than
- // calling 'eval()' directly.
- // description:
- // Placed in a separate function to minimize size of trapped
- // exceptions. Calling eval() directly from some other scope may
- // complicate tracebacks on some platforms.
- // returns:
- // The result of the evaluation. Often `undefined`
-
-
- // note:
- // - JSC eval() takes an optional second argument which can be 'unsafe'.
- // - Mozilla/SpiderMonkey eval() takes an optional second argument which is the
- // scope object for new symbols.
-
- // FIXME: investigate Joseph Smarr's technique for IE:
- // http://josephsmarr.com/2007/01/31/fixing-eval-to-use-global-scope-in-ie/
- // see also:
- // http://trac.dojotoolkit.org/ticket/744
- return d.global.eval ? d.global.eval(scriptFragment) : eval(scriptFragment); // Object
- }
-
- /*=====
- dojo.deprecated = function(behaviour, extra, removal){
- // summary:
- // Log a debug message to indicate that a behavior has been
- // deprecated.
- // behaviour: String
- // The API or behavior being deprecated. Usually in the form
- // of "myApp.someFunction()".
- // extra: String?
- // Text to append to the message. Often provides advice on a
- // new function or facility to achieve the same goal during
- // the deprecation period.
- // removal: String?
- // Text to indicate when in the future the behavior will be
- // removed. Usually a version number.
- // example:
- // | dojo.deprecated("myApp.getTemp()", "use myApp.getLocaleTemp() instead", "1.0");
- }
-
- dojo.experimental = function(moduleName, extra){
- // summary: Marks code as experimental.
- // description:
- // This can be used to mark a function, file, or module as
- // experimental. Experimental code is not ready to be used, and the
- // APIs are subject to change without notice. Experimental code may be
- // completed deleted without going through the normal deprecation
- // process.
- // moduleName: String
- // The name of a module, or the name of a module file or a specific
- // function
- // extra: String?
- // some additional message for the user
- // example:
- // | dojo.experimental("dojo.data.Result");
- // example:
- // | dojo.experimental("dojo.weather.toKelvin()", "PENDING approval from NOAA");
- }
- =====*/
-
- //Real functions declared in dojo._firebug.firebug.
- d.deprecated = d.experimental = function(){};
-
-})();
-// vim:ai:ts=4:noet
diff --git a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dojo/_base/_loader/hostenv_browser.js b/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dojo/_base/_loader/hostenv_browser.js
deleted file mode 100644
index 0348ab0..0000000
--- a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dojo/_base/_loader/hostenv_browser.js
+++ /dev/null
@@ -1,456 +0,0 @@
-/*
- Copyright (c) 2004-2009, The Dojo Foundation All Rights Reserved.
- Available via Academic Free License >= 2.1 OR the modified BSD license.
- see: http://dojotoolkit.org/license for details
-*/
-
-
-/*=====
-dojo.isBrowser = {
- // example:
- // | if(dojo.isBrowser){ ... }
-};
-
-dojo.isFF = {
- // example:
- // | if(dojo.isFF > 1){ ... }
-};
-
-dojo.isIE = {
- // example:
- // | if(dojo.isIE > 6){
- // | // we are IE7
- // | }
-};
-
-dojo.isSafari = {
- // example:
- // | if(dojo.isSafari){ ... }
- // example:
- // Detect iPhone:
- // | if(dojo.isSafari && navigator.userAgent.indexOf("iPhone") != -1){
- // | // we are iPhone. Note, iPod touch reports "iPod" above and fails this test.
- // | }
-};
-
-dojo = {
- // isBrowser: Boolean
- // True if the client is a web-browser
- isBrowser: true,
- // isFF: Number | undefined
- // Version as a Number if client is FireFox. undefined otherwise. Corresponds to
- // major detected FireFox version (1.5, 2, 3, etc.)
- isFF: 2,
- // isIE: Number | undefined
- // Version as a Number if client is MSIE(PC). undefined otherwise. Corresponds to
- // major detected IE version (6, 7, 8, etc.)
- isIE: 6,
- // isKhtml: Number | undefined
- // Version as a Number if client is a KHTML browser. undefined otherwise. Corresponds to major
- // detected version.
- isKhtml: 0,
- // isWebKit: Number | undefined
- // Version as a Number if client is a WebKit-derived browser (Konqueror,
- // Safari, Chrome, etc.). undefined otherwise.
- isWebKit: 0,
- // isMozilla: Number | undefined
- // Version as a Number if client is a Mozilla-based browser (Firefox,
- // SeaMonkey). undefined otherwise. Corresponds to major detected version.
- isMozilla: 0,
- // isOpera: Number | undefined
- // Version as a Number if client is Opera. undefined otherwise. Corresponds to
- // major detected version.
- isOpera: 0,
- // isSafari: Number | undefined
- // Version as a Number if client is Safari or iPhone. undefined otherwise.
- isSafari: 0,
- // isChrome: Number | undefined
- // Version as a Number if client is Chrome browser. undefined otherwise.
- isChrome: 0
- // isMac: Boolean
- // True if the client runs on Mac
-}
-=====*/
-
-if(typeof window != 'undefined'){
- dojo.isBrowser = true;
- dojo._name = "browser";
-
-
- // attempt to figure out the path to dojo if it isn't set in the config
- (function(){
- var d = dojo;
-
- // this is a scope protection closure. We set browser versions and grab
- // the URL we were loaded from here.
-
- // grab the node we were loaded from
- if(document && document.getElementsByTagName){
- var scripts = document.getElementsByTagName("script");
- var rePkg = /dojo(\.xd)?\.js(\W|$)/i;
- for(var i = 0; i < scripts.length; i++){
- var src = scripts[i].getAttribute("src");
- if(!src){ continue; }
- var m = src.match(rePkg);
- if(m){
- // find out where we came from
- if(!d.config.baseUrl){
- d.config.baseUrl = src.substring(0, m.index);
- }
- // and find out if we need to modify our behavior
- var cfg = scripts[i].getAttribute("djConfig");
- if(cfg){
- var cfgo = eval("({ "+cfg+" })");
- for(var x in cfgo){
- dojo.config[x] = cfgo[x];
- }
- }
- break; // "first Dojo wins"
- }
- }
- }
- d.baseUrl = d.config.baseUrl;
-
- // fill in the rendering support information in dojo.render.*
- var n = navigator;
- var dua = n.userAgent,
- dav = n.appVersion,
- tv = parseFloat(dav);
-
- if(dua.indexOf("Opera") >= 0){ d.isOpera = tv; }
- if(dua.indexOf("AdobeAIR") >= 0){ d.isAIR = 1; }
- d.isKhtml = (dav.indexOf("Konqueror") >= 0) ? tv : 0;
- d.isWebKit = parseFloat(dua.split("WebKit/")[1]) || undefined;
- d.isChrome = parseFloat(dua.split("Chrome/")[1]) || undefined;
- d.isMac = dav.indexOf("Macintosh") >= 0;
-
- // safari detection derived from:
- // http://developer.apple.com/internet/safari/faq.html#anchor2
- // http://developer.apple.com/internet/safari/uamatrix.html
- var index = Math.max(dav.indexOf("WebKit"), dav.indexOf("Safari"), 0);
- if(index && !dojo.isChrome){
- // try to grab the explicit Safari version first. If we don't get
- // one, look for less than 419.3 as the indication that we're on something
- // "Safari 2-ish".
- d.isSafari = parseFloat(dav.split("Version/")[1]);
- if(!d.isSafari || parseFloat(dav.substr(index + 7)) <= 419.3){
- d.isSafari = 2;
- }
- }
-
- if(dua.indexOf("Gecko") >= 0 && !d.isKhtml && !d.isWebKit){ d.isMozilla = d.isMoz = tv; }
- if(d.isMoz){
- //We really need to get away from this. Consider a sane isGecko approach for the future.
- d.isFF = parseFloat(dua.split("Firefox/")[1] || dua.split("Minefield/")[1]) || undefined;
- }
- if(document.all && !d.isOpera){
- d.isIE = parseFloat(dav.split("MSIE ")[1]) || undefined;
- //In cases where the page has an HTTP header or META tag with
- //X-UA-Compatible, then it is in emulation mode.
- //Make sure isIE reflects the desired version.
- //document.documentMode of 5 means quirks mode.
- //Only switch the value if documentMode's major version
- //is different from isIE's major version.
- var mode = document.documentMode;
- if(mode && mode != 5 && Math.floor(d.isIE) != mode){
- d.isIE = mode;
- }
- }
-
- //Workaround to get local file loads of dojo to work on IE 7
- //by forcing to not use native xhr.
- if(dojo.isIE && window.location.protocol === "file:"){
- dojo.config.ieForceActiveXXhr=true;
- }
-
- d.isQuirks = document.compatMode == "BackCompat";
-
- // TODO: is the HTML LANG attribute relevant?
- d.locale = dojo.config.locale || (d.isIE ? n.userLanguage : n.language).toLowerCase();
-
- // These are in order of decreasing likelihood; this will change in time.
- d._XMLHTTP_PROGIDS = ['Msxml2.XMLHTTP', 'Microsoft.XMLHTTP', 'Msxml2.XMLHTTP.4.0'];
-
- d._xhrObj = function(){
- // summary:
- // does the work of portably generating a new XMLHTTPRequest object.
- var http, last_e;
- if(!dojo.isIE || !dojo.config.ieForceActiveXXhr){
- try{ http = new XMLHttpRequest(); }catch(e){}
- }
- if(!http){
- for(var i=0; i<3; ++i){
- var progid = d._XMLHTTP_PROGIDS[i];
- try{
- http = new ActiveXObject(progid);
- }catch(e){
- last_e = e;
- }
-
- if(http){
- d._XMLHTTP_PROGIDS = [progid]; // so faster next time
- break;
- }
- }
- }
-
- if(!http){
- throw new Error("XMLHTTP not available: "+last_e);
- }
-
- return http; // XMLHTTPRequest instance
- }
-
- d._isDocumentOk = function(http){
- var stat = http.status || 0,
- lp = location.protocol;
- return (stat >= 200 && stat < 300) || // Boolean
- stat == 304 || // allow any 2XX response code
- stat == 1223 || // get it out of the cache
- (!stat && (lp == "file:" || lp == "chrome:" || lp == "app:") ); // Internet Explorer mangled the status code OR we're Titanium requesting a local file
- }
-
- //See if base tag is in use.
- //This is to fix http://trac.dojotoolkit.org/ticket/3973,
- //but really, we need to find out how to get rid of the dojo._Url reference
- //below and still have DOH work with the dojo.i18n test following some other
- //test that uses the test frame to load a document (trac #2757).
- //Opera still has problems, but perhaps a larger issue of base tag support
- //with XHR requests (hasBase is true, but the request is still made to document
- //path, not base path).
- var owloc = window.location+"";
- var base = document.getElementsByTagName("base");
- var hasBase = (base && base.length > 0);
-
- d._getText = function(/*URI*/ uri, /*Boolean*/ fail_ok){
- // summary: Read the contents of the specified uri and return those contents.
- // uri:
- // A relative or absolute uri. If absolute, it still must be in
- // the same "domain" as we are.
- // fail_ok:
- // Default false. If fail_ok and loading fails, return null
- // instead of throwing.
- // returns: The response text. null is returned when there is a
- // failure and failure is okay (an exception otherwise)
-
- // NOTE: must be declared before scope switches ie. this._xhrObj()
- var http = d._xhrObj();
-
- if(!hasBase && dojo._Url){
- uri = (new dojo._Url(owloc, uri)).toString();
- }
-
- if(d.config.cacheBust){
- //Make sure we have a string before string methods are used on uri
- uri += "";
- uri += (uri.indexOf("?") == -1 ? "?" : "&") + String(d.config.cacheBust).replace(/\W+/g,"");
- }
-
- http.open('GET', uri, false);
- try{
- http.send(null);
- if(!d._isDocumentOk(http)){
- var err = Error("Unable to load "+uri+" status:"+ http.status);
- err.status = http.status;
- err.responseText = http.responseText;
- throw err;
- }
- }catch(e){
- if(fail_ok){ return null; } // null
- // rethrow the exception
- throw e;
- }
- return http.responseText; // String
- }
-
-
- var _w = window;
- var _handleNodeEvent = function(/*String*/evtName, /*Function*/fp){
- // summary:
- // non-destructively adds the specified function to the node's
- // evtName handler.
- // evtName: should be in the form "onclick" for "onclick" handlers.
- // Make sure you pass in the "on" part.
- var _a = _w.attachEvent || _w.addEventListener;
- evtName = _w.attachEvent ? evtName : evtName.substring(2);
- _a(evtName, function(){
- fp.apply(_w, arguments);
- }, false);
- };
-
-
- d._windowUnloaders = [];
-
- d.windowUnloaded = function(){
- // summary:
- // signal fired by impending window destruction. You may use
- // dojo.addOnWindowUnload() to register a listener for this
- // event. NOTE: if you wish to dojo.connect() to this method
- // to perform page/application cleanup, be aware that this
- // event WILL NOT fire if no handler has been registered with
- // dojo.addOnWindowUnload. This behavior started in Dojo 1.3.
- // Previous versions always triggered dojo.windowUnloaded. See
- // dojo.addOnWindowUnload for more info.
- var mll = d._windowUnloaders;
- while(mll.length){
- (mll.pop())();
- }
- };
-
- var _onWindowUnloadAttached = 0;
- d.addOnWindowUnload = function(/*Object?|Function?*/obj, /*String|Function?*/functionName){
- // summary:
- // registers a function to be triggered when window.onunload
- // fires.
- // description:
- // The first time that addOnWindowUnload is called Dojo
- // will register a page listener to trigger your unload
- // handler with. Note that registering these handlers may
- // destory "fastback" page caching in browsers that support
- // it. Be careful trying to modify the DOM or access
- // JavaScript properties during this phase of page unloading:
- // they may not always be available. Consider
- // dojo.addOnUnload() if you need to modify the DOM or do
- // heavy JavaScript work since it fires at the eqivalent of
- // the page's "onbeforeunload" event.
- // example:
- // | dojo.addOnWindowUnload(functionPointer)
- // | dojo.addOnWindowUnload(object, "functionName");
- // | dojo.addOnWindowUnload(object, function(){ /* ... */});
-
- d._onto(d._windowUnloaders, obj, functionName);
- if(!_onWindowUnloadAttached){
- _onWindowUnloadAttached = 1;
- _handleNodeEvent("onunload", d.windowUnloaded);
- }
- };
-
- var _onUnloadAttached = 0;
- d.addOnUnload = function(/*Object?|Function?*/obj, /*String|Function?*/functionName){
- // summary:
- // registers a function to be triggered when the page unloads.
- // description:
- // The first time that addOnUnload is called Dojo will
- // register a page listener to trigger your unload handler
- // with.
- //
- // In a browser enviroment, the functions will be triggered
- // during the window.onbeforeunload event. Be careful of doing
- // too much work in an unload handler. onbeforeunload can be
- // triggered if a link to download a file is clicked, or if
- // the link is a javascript: link. In these cases, the
- // onbeforeunload event fires, but the document is not
- // actually destroyed. So be careful about doing destructive
- // operations in a dojo.addOnUnload callback.
- //
- // Further note that calling dojo.addOnUnload will prevent
- // browsers from using a "fast back" cache to make page
- // loading via back button instantaneous.
- // example:
- // | dojo.addOnUnload(functionPointer)
- // | dojo.addOnUnload(object, "functionName")
- // | dojo.addOnUnload(object, function(){ /* ... */});
-
- d._onto(d._unloaders, obj, functionName);
- if(!_onUnloadAttached){
- _onUnloadAttached = 1;
- _handleNodeEvent("onbeforeunload", dojo.unloaded);
- }
- };
-
- })();
-
- //START DOMContentLoaded
- dojo._initFired = false;
- dojo._loadInit = function(e){
- if(!dojo._initFired){
- dojo._initFired = true;
-
- //Help out IE to avoid memory leak.
- if(!dojo.config.afterOnLoad && window.detachEvent){
- window.detachEvent("onload", dojo._loadInit);
- }
-
- if(dojo._inFlightCount == 0){
- dojo._modulesLoaded();
- }
- }
- }
-
- if(!dojo.config.afterOnLoad){
- if(document.addEventListener){
- //Standards. Hooray! Assumption here that if standards based,
- //it knows about DOMContentLoaded. It is OK if it does not, the fall through
- //to window onload should be good enough.
- document.addEventListener("DOMContentLoaded", dojo._loadInit, false);
- window.addEventListener("load", dojo._loadInit, false);
- }else if(window.attachEvent){
- window.attachEvent("onload", dojo._loadInit);
- }
- }
-
- if(dojo.isIE){
- // for Internet Explorer. readyState will not be achieved on init
- // call, but dojo doesn't need it however, we'll include it
- // because we don't know if there are other functions added that
- // might. Note that this has changed because the build process
- // strips all comments -- including conditional ones.
- if(!dojo.config.afterOnLoad && !dojo.config.skipIeDomLoaded){
- document.write('<scr'+'ipt defer src="//:" '
- + 'onreadystatechange="if(this.readyState==\'complete\'){' + dojo._scopeName + '._loadInit();}">'
- + '</scr'+'ipt>'
- );
- }
-
- try{
- document.namespaces.add("v","urn:schemas-microsoft-com:vml");
- var vmlElems = ["*", "group", "roundrect", "oval", "shape", "rect", "imagedata"],
- i = 0, l = 1, s = document.createStyleSheet();
- if(dojo.isIE >= 8){
- i = 1;
- l = vmlElems.length;
- }
- for(; i < l; ++i){
- s.addRule("v\\:" + vmlElems[i], "behavior:url(#default#VML); display:inline-block");
- }
- }catch(e){}
- }
- //END DOMContentLoaded
-
-
- /*
- OpenAjax.subscribe("OpenAjax", "onload", function(){
- if(dojo._inFlightCount == 0){
- dojo._modulesLoaded();
- }
- });
-
- OpenAjax.subscribe("OpenAjax", "onunload", function(){
- dojo.unloaded();
- });
- */
-} //if (typeof window != 'undefined')
-
-//Register any module paths set up in djConfig. Need to do this
-//in the hostenvs since hostenv_browser can read djConfig from a
-//script tag's attribute.
-(function(){
- var mp = dojo.config["modulePaths"];
- if(mp){
- for(var param in mp){
- dojo.registerModulePath(param, mp[param]);
- }
- }
-})();
-
-//Load debug code if necessary.
-if(dojo.config.isDebug){
- dojo.require("dojo._firebug.firebug");
-}
-
-if(dojo.config.debugAtAllCosts){
- dojo.config.useXDomain = true;
- dojo.require("dojo._base._loader.loader_xd");
- dojo.require("dojo._base._loader.loader_debug");
- dojo.require("dojo.i18n");
-}
diff --git a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dojo/_base/_loader/hostenv_ff_ext.js b/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dojo/_base/_loader/hostenv_ff_ext.js
deleted file mode 100644
index 7297524..0000000
--- a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dojo/_base/_loader/hostenv_ff_ext.js
+++ /dev/null
@@ -1,338 +0,0 @@
-/*
- Copyright (c) 2004-2009, The Dojo Foundation All Rights Reserved.
- Available via Academic Free License >= 2.1 OR the modified BSD license.
- see: http://dojotoolkit.org/license for details
-*/
-
-
-// a host environment specifically built for Mozilla extensions, but derived
-// from the browser host environment
-if(typeof window != 'undefined'){
- dojo.isBrowser = true;
- dojo._name = "browser";
-
-
- // FIXME: PORTME
- // http://developer.mozilla.org/en/mozIJSSubScriptLoader
-
-
- // attempt to figure out the path to dojo if it isn't set in the config
- (function(){
- var d = dojo;
- // this is a scope protection closure. We set browser versions and grab
- // the URL we were loaded from here.
-
- // FIXME: need to probably use a different reference to "document" to get the hosting XUL environment
-
- d.baseUrl = d.config.baseUrl;
-
- // fill in the rendering support information in dojo.render.*
- var n = navigator;
- var dua = n.userAgent;
- var dav = n.appVersion;
- var tv = parseFloat(dav);
-
- d.isMozilla = d.isMoz = tv;
- if(d.isMoz){
- d.isFF = parseFloat(dua.split("Firefox/")[1]) || undefined;
- }
-
- // FIXME
- d.isQuirks = document.compatMode == "BackCompat";
-
- // FIXME
- // TODO: is the HTML LANG attribute relevant?
- d.locale = dojo.config.locale || n.language.toLowerCase();
-
- d._xhrObj = function(){
- return new XMLHttpRequest();
- }
-
- // monkey-patch _loadUri to handle file://, chrome://, and resource:// url's
- var oldLoadUri = d._loadUri;
- d._loadUri = function(uri, cb){
- var handleLocal = ["file:", "chrome:", "resource:"].some(function(prefix){
- return String(uri).indexOf(prefix) == 0;
- });
- if(handleLocal){
- // see:
- // http://developer.mozilla.org/en/mozIJSSubScriptLoader
- var l = Components.classes["@mozilla.org/moz/jssubscript-loader;1"]
- .getService(Components.interfaces.mozIJSSubScriptLoader);
- var value = l.loadSubScript(uri, d.global)
- if(cb){ cb(value); }
- return true;
- }else{
- // otherwise, call the pre-existing version
- return oldLoadUri.apply(d, arguments);
- }
- }
-
- // FIXME: PORTME
- d._isDocumentOk = function(http){
- var stat = http.status || 0;
- return (stat >= 200 && stat < 300) || // Boolean
- stat == 304 || // allow any 2XX response code
- stat == 1223 || // get it out of the cache
- (!stat && (location.protocol=="file:" || location.protocol=="chrome:") );
- }
-
- // FIXME: PORTME
- // var owloc = window.location+"";
- // var base = document.getElementsByTagName("base");
- // var hasBase = (base && base.length > 0);
- var hasBase = false;
-
- d._getText = function(/*URI*/ uri, /*Boolean*/ fail_ok){
- // summary: Read the contents of the specified uri and return those contents.
- // uri:
- // A relative or absolute uri. If absolute, it still must be in
- // the same "domain" as we are.
- // fail_ok:
- // Default false. If fail_ok and loading fails, return null
- // instead of throwing.
- // returns: The response text. null is returned when there is a
- // failure and failure is okay (an exception otherwise)
-
- // alert("_getText: " + uri);
-
- // NOTE: must be declared before scope switches ie. this._xhrObj()
- var http = d._xhrObj();
-
- if(!hasBase && dojo._Url){
- uri = (new dojo._Url(uri)).toString();
- }
- if(d.config.cacheBust){
- //Make sure we have a string before string methods are used on uri
- uri += "";
- uri += (uri.indexOf("?") == -1 ? "?" : "&") + String(d.config.cacheBust).replace(/\W+/g,"");
- }
- var handleLocal = ["file:", "chrome:", "resource:"].some(function(prefix){
- return String(uri).indexOf(prefix) == 0;
- });
- if(handleLocal){
- // see:
- // http://forums.mozillazine.org/viewtopic.php?p=921150#921150
- var ioService = Components.classes["@mozilla.org/network/io-service;1"]
- .getService(Components.interfaces.nsIIOService);
- var scriptableStream=Components
- .classes["@mozilla.org/scriptableinputstream;1"]
- .getService(Components.interfaces.nsIScriptableInputStream);
-
- var channel = ioService.newChannel(uri, null, null);
- var input = channel.open();
- scriptableStream.init(input);
- var str = scriptableStream.read(input.available());
- scriptableStream.close();
- input.close();
- return str;
- }else{
- http.open('GET', uri, false);
- try{
- http.send(null);
- // alert(http);
- if(!d._isDocumentOk(http)){
- var err = Error("Unable to load "+uri+" status:"+ http.status);
- err.status = http.status;
- err.responseText = http.responseText;
- throw err;
- }
- }catch(e){
- if(fail_ok){ return null; } // null
- // rethrow the exception
- throw e;
- }
- return http.responseText; // String
- }
- }
-
- d._windowUnloaders = [];
-
- // FIXME: PORTME
- d.windowUnloaded = function(){
- // summary:
- // signal fired by impending window destruction. You may use
- // dojo.addOnWIndowUnload() or dojo.connect() to this method to perform
- // page/application cleanup methods. See dojo.addOnWindowUnload for more info.
- var mll = d._windowUnloaders;
- while(mll.length){
- (mll.pop())();
- }
- }
-
- // FIXME: PORTME
- d.addOnWindowUnload = function(/*Object?*/obj, /*String|Function?*/functionName){
- // summary:
- // registers a function to be triggered when window.onunload fires.
- // Be careful trying to modify the DOM or access JavaScript properties
- // during this phase of page unloading: they may not always be available.
- // Consider dojo.addOnUnload() if you need to modify the DOM or do heavy
- // JavaScript work.
- // example:
- // | dojo.addOnWindowUnload(functionPointer)
- // | dojo.addOnWindowUnload(object, "functionName")
- // | dojo.addOnWindowUnload(object, function(){ /* ... */});
-
- d._onto(d._windowUnloaders, obj, functionName);
- }
-
- // XUL specific APIs
- var contexts = [];
- var current = null;
- dojo._defaultContext = [ window, document ];
-
- dojo.pushContext = function(/*Object|String?*/g, /*MDocumentElement?*/d){
- // summary:
- // causes subsequent calls to Dojo methods to assume the
- // passed object and, optionally, document as the default
- // scopes to use. A 2-element array of the previous global and
- // document are returned.
- // description:
- // dojo.pushContext treats contexts as a stack. The
- // auto-detected contexts which are initially provided using
- // dojo.setContext() require authors to keep state in order to
- // "return" to a previous context, whereas the
- // dojo.pushContext and dojo.popContext methods provide a more
- // natural way to augment blocks of code to ensure that they
- // execute in a different window or frame without issue. If
- // called without any arguments, the default context (the
- // context when Dojo is first loaded) is instead pushed into
- // the stack. If only a single string is passed, a node in the
- // intitial context's document is looked up and its
- // contextWindow and contextDocument properties are used as
- // the context to push. This means that iframes can be given
- // an ID and code can be executed in the scope of the iframe's
- // document in subsequent calls easily.
- // g:
- // The global context. If a string, the id of the frame to
- // search for a context and document.
- // d:
- // The document element to execute subsequent code with.
- var old = [dojo.global, dojo.doc];
- contexts.push(old);
- var n;
- if(!g && !d){
- n = dojo._defaultContext;
- }else{
- n = [ g, d ];
- if(!d && dojo.isString(g)){
- var t = document.getElementById(g);
- if(t.contentDocument){
- n = [t.contentWindow, t.contentDocument];
- }
- }
- }
- current = n;
- dojo.setContext.apply(dojo, n);
- return old; // Array
- };
-
- dojo.popContext = function(){
- // summary:
- // If the context stack contains elements, ensure that
- // subsequent code executes in the *previous* context to the
- // current context. The current context set ([global,
- // document]) is returned.
- var oc = current;
- if(!contexts.length){
- return oc;
- }
- dojo.setContext.apply(dojo, contexts.pop());
- return oc;
- };
-
- // FIXME:
- // don't really like the current arguments and order to
- // _inContext, so don't make it public until it's right!
- dojo._inContext = function(g, d, f){
- var a = dojo._toArray(arguments);
- f = a.pop();
- if(a.length == 1){
- d = null;
- }
- dojo.pushContext(g, d);
- var r = f();
- dojo.popContext();
- return r;
- };
-
- })();
-
- dojo._initFired = false;
- // BEGIN DOMContentLoaded, from Dean Edwards (http://dean.edwards.name/weblog/2006/06/again/)
- dojo._loadInit = function(e){
- dojo._initFired = true;
- // allow multiple calls, only first one will take effect
- // A bug in khtml calls events callbacks for document for event which isnt supported
- // for example a created contextmenu event calls DOMContentLoaded, workaround
- var type = (e && e.type) ? e.type.toLowerCase() : "load";
- if(arguments.callee.initialized || (type != "domcontentloaded" && type != "load")){ return; }
- arguments.callee.initialized = true;
- if(dojo._inFlightCount == 0){
- dojo._modulesLoaded();
- }
- }
-
- /*
- (function(){
- var _w = window;
- var _handleNodeEvent = function(evtName, fp){
- // summary:
- // non-destructively adds the specified function to the node's
- // evtName handler.
- // evtName: should be in the form "onclick" for "onclick" handlers.
- // Make sure you pass in the "on" part.
- var oldHandler = _w[evtName] || function(){};
- _w[evtName] = function(){
- fp.apply(_w, arguments);
- oldHandler.apply(_w, arguments);
- };
- };
- // FIXME: PORT
- // FIXME: dojo.unloaded requires dojo scope, so using anon function wrapper.
- _handleNodeEvent("onbeforeunload", function() { dojo.unloaded(); });
- _handleNodeEvent("onunload", function() { dojo.windowUnloaded(); });
- })();
- */
-
-
- // FIXME: PORTME
- // this event fires a lot, namely for all plugin XUL overlays and for
- // all iframes (in addition to window navigations). We only want
- // Dojo's to fire once..but we might care if pages navigate. We'll
- // probably need an extension-specific API
- if(!dojo.config.afterOnLoad){
- window.addEventListener("DOMContentLoaded",function(e){
- dojo._loadInit(e);
- // console.log("DOM content loaded", e);
- }, false);
- }
-
-} //if (typeof window != 'undefined')
-
-//Register any module paths set up in djConfig. Need to do this
-//in the hostenvs since hostenv_browser can read djConfig from a
-//script tag's attribute.
-(function(){
- var mp = dojo.config["modulePaths"];
- if(mp){
- for(var param in mp){
- dojo.registerModulePath(param, mp[param]);
- }
- }
-})();
-
-//Load debug code if necessary.
-if(dojo.config.isDebug){
- // logging stub for extension logging
- console.log = function(m){
- var s = Components.classes["@mozilla.org/consoleservice;1"].getService(
- Components.interfaces.nsIConsoleService
- );
- s.logStringMessage(m);
- }
- console.debug = function(){
- console.log(dojo._toArray(arguments).join(" "));
- }
- // FIXME: what about the rest of the console.* methods? And is there any way to reach into firebug and log into it directly?
-}
diff --git a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dojo/_base/_loader/hostenv_rhino.js b/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dojo/_base/_loader/hostenv_rhino.js
deleted file mode 100644
index be7ddba..0000000
--- a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dojo/_base/_loader/hostenv_rhino.js
+++ /dev/null
@@ -1,208 +0,0 @@
-/*
- Copyright (c) 2004-2009, The Dojo Foundation All Rights Reserved.
- Available via Academic Free License >= 2.1 OR the modified BSD license.
- see: http://dojotoolkit.org/license for details
-*/
-
-
-/*
-* Rhino host environment
-*/
-
-if(dojo.config["baseUrl"]){
- dojo.baseUrl = dojo.config["baseUrl"];
-}else{
- dojo.baseUrl = "./";
-}
-
-dojo.locale = dojo.locale || String(java.util.Locale.getDefault().toString().replace('_','-').toLowerCase());
-dojo._name = 'rhino';
-dojo.isRhino = true;
-
-if(typeof print == "function"){
- console.debug = print;
-}
-
-if(!("byId" in dojo)){
- dojo.byId = function(id, doc){
- if(id && (typeof id == "string" || id instanceof String)){
- if(!doc){ doc = document; }
- return doc.getElementById(id);
- }
- return id; // assume it's a node
- }
-}
-
-dojo._isLocalUrl = function(/*String*/ uri) {
- // summary:
- // determines if URI is local or not.
-
- var local = (new java.io.File(uri)).exists();
- if(!local){
- var stream;
- //Try remote URL. Allow this method to throw,
- //but still do cleanup.
- try{
- // try it as a file first, URL second
- stream = (new java.net.URL(uri)).openStream();
- // close the stream so we don't leak resources
- stream.close();
- }finally{
- if(stream && stream.close){
- stream.close();
- }
- }
- }
- return local;
-}
-
-// see comments in spidermonkey loadUri
-dojo._loadUri = function(uri, cb){
- try{
- var local;
- try{
- local = dojo._isLocalUrl(uri);
- }catch(e){
- // no debug output; this failure just means the uri was not found.
- return false;
- }
-
- //FIXME: Use Rhino 1.6 native readFile/readUrl if available?
- if(cb){
- var contents = (local ? readText : readUri)(uri, "UTF-8");
-
- // patch up the input to eval until https://bugzilla.mozilla.org/show_bug.cgi?id=471005 is fixed.
- if(!eval("'\u200f'").length){
- contents = String(contents).replace(/[\u200E\u200F\u202A-\u202E]/g, function(match){
- return "\\u" + match.charCodeAt(0).toString(16);
- })
- }
-
- cb(eval('('+contents+')'));
- }else{
- load(uri);
- }
- return true;
- }catch(e){
- console.debug("rhino load('" + uri + "') failed. Exception: " + e);
- return false;
- }
-}
-
-dojo.exit = function(exitcode){
- quit(exitcode);
-}
-
-// reading a file from disk in Java is a humiliating experience by any measure.
-// Lets avoid that and just get the freaking text
-function readText(path, encoding){
- encoding = encoding || "utf-8";
- // NOTE: we intentionally avoid handling exceptions, since the caller will
- // want to know
- var jf = new java.io.File(path);
- var is = new java.io.FileInputStream(jf);
- return dj_readInputStream(is, encoding);
-}
-
-function readUri(uri, encoding){
- var conn = (new java.net.URL(uri)).openConnection();
- encoding = encoding || conn.getContentEncoding() || "utf-8";
- var is = conn.getInputStream();
- return dj_readInputStream(is, encoding);
-}
-
-function dj_readInputStream(is, encoding){
- var input = new java.io.BufferedReader(new java.io.InputStreamReader(is, encoding));
- try {
- var sb = new java.lang.StringBuffer();
- var line = "";
- while((line = input.readLine()) !== null){
- sb.append(line);
- sb.append(java.lang.System.getProperty("line.separator"));
- }
- return sb.toString();
- } finally {
- input.close();
- }
-}
-
-dojo._getText = function(/*URI*/ uri, /*Boolean*/ fail_ok){
- // summary: Read the contents of the specified uri and return those contents.
- // uri:
- // A relative or absolute uri.
- // fail_ok:
- // Default false. If fail_ok and loading fails, return null
- // instead of throwing.
- // returns: The response text. null is returned when there is a
- // failure and failure is okay (an exception otherwise)
- try{
- var local = dojo._isLocalUrl(uri);
- var text = (local ? readText : readUri)(uri, "UTF-8");
- if(text !== null){
- //Force JavaScript string.
- text += "";
- }
- return text;
- }catch(e){
- if(fail_ok){
- return null;
- }else{
- throw e;
- }
- }
-}
-
-// summary:
-// return the document object associated with the dojo.global
-dojo.doc = typeof document != "undefined" ? document : null;
-
-dojo.body = function(){
- return document.body;
-}
-
-// Supply setTimeout/clearTimeout implementations if they aren't already there
-// Note: this assumes that we define both if one is not provided... there might
-// be a better way to do this if there is a use case where one is defined but
-// not the other
-if(typeof setTimeout == "undefined" || typeof clearTimeout == "undefined"){
- dojo._timeouts = [];
- clearTimeout = function(idx){
- if(!dojo._timeouts[idx]){ return; }
- dojo._timeouts[idx].stop();
- }
-
- setTimeout = function(func, delay){
- // summary: provides timed callbacks using Java threads
-
- var def={
- sleepTime:delay,
- hasSlept:false,
-
- run:function(){
- if(!this.hasSlept){
- this.hasSlept=true;
- java.lang.Thread.currentThread().sleep(this.sleepTime);
- }
- try{
- func();
- }catch(e){
- console.debug("Error running setTimeout thread:" + e);
- }
- }
- };
-
- var runnable = new java.lang.Runnable(def);
- var thread = new java.lang.Thread(runnable);
- thread.start();
- return dojo._timeouts.push(thread)-1;
- }
-}
-
-//Register any module paths set up in djConfig. Need to do this
-//in the hostenvs since hostenv_browser can read djConfig from a
-//script tag's attribute.
-if(dojo.config["modulePaths"]){
- for(var param in dojo.config["modulePaths"]){
- dojo.registerModulePath(param, dojo.config["modulePaths"][param]);
- }
-}
diff --git a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dojo/_base/_loader/hostenv_spidermonkey.js b/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dojo/_base/_loader/hostenv_spidermonkey.js
deleted file mode 100644
index 84cd2b2..0000000
--- a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dojo/_base/_loader/hostenv_spidermonkey.js
+++ /dev/null
@@ -1,87 +0,0 @@
-/*
- Copyright (c) 2004-2009, The Dojo Foundation All Rights Reserved.
- Available via Academic Free License >= 2.1 OR the modified BSD license.
- see: http://dojotoolkit.org/license for details
-*/
-
-
-/*
- * SpiderMonkey host environment
- */
-
-if(dojo.config["baseUrl"]){
- dojo.baseUrl = dojo.config["baseUrl"];
-}else{
- dojo.baseUrl = "./";
-}
-
-dojo._name = 'spidermonkey';
-
-/*=====
-dojo.isSpidermonkey = {
- // summary: Detect spidermonkey
-};
-=====*/
-
-dojo.isSpidermonkey = true;
-dojo.exit = function(exitcode){
- quit(exitcode);
-}
-
-if(typeof print == "function"){
- console.debug = print;
-}
-
-if(typeof line2pc == 'undefined'){
- throw new Error("attempt to use SpiderMonkey host environment when no 'line2pc' global");
-}
-
-dojo._spidermonkeyCurrentFile = function(depth){
- //
- // This is a hack that determines the current script file by parsing a
- // generated stack trace (relying on the non-standard "stack" member variable
- // of the SpiderMonkey Error object).
- //
- // If param depth is passed in, it'll return the script file which is that far down
- // the stack, but that does require that you know how deep your stack is when you are
- // calling.
- //
- var s = '';
- try{
- throw Error("whatever");
- }catch(e){
- s = e.stack;
- }
- // lines are like: bu_getCurrentScriptURI_spidermonkey("ScriptLoader.js")@burst/Runtime.js:101
- var matches = s.match(/[^@]*\.js/gi);
- if(!matches){
- throw Error("could not parse stack string: '" + s + "'");
- }
- var fname = (typeof depth != 'undefined' && depth) ? matches[depth + 1] : matches[matches.length - 1];
- if(!fname){
- throw Error("could not find file name in stack string '" + s + "'");
- }
- //print("SpiderMonkeyRuntime got fname '" + fname + "' from stack string '" + s + "'");
- return fname;
-}
-
-// print(dojo._spidermonkeyCurrentFile(0));
-
-dojo._loadUri = function(uri){
- // spidermonkey load() evaluates the contents into the global scope (which
- // is what we want).
- // TODO: sigh, load() does not return a useful value.
- // Perhaps it is returning the value of the last thing evaluated?
- var ok = load(uri);
- // console.log("spidermonkey load(", uri, ") returned ", ok);
- return 1;
-}
-
-//Register any module paths set up in djConfig. Need to do this
-//in the hostenvs since hostenv_browser can read djConfig from a
-//script tag's attribute.
-if(dojo.config["modulePaths"]){
- for(var param in dojo.config["modulePaths"]){
- dojo.registerModulePath(param, dojo.config["modulePaths"][param]);
- }
-}
diff --git a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dojo/_base/_loader/loader.js b/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dojo/_base/_loader/loader.js
deleted file mode 100644
index 1ace662..0000000
--- a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dojo/_base/_loader/loader.js
+++ /dev/null
@@ -1,804 +0,0 @@
-/*
- Copyright (c) 2004-2009, The Dojo Foundation All Rights Reserved.
- Available via Academic Free License >= 2.1 OR the modified BSD license.
- see: http://dojotoolkit.org/license for details
-*/
-
-
-if(!dojo._hasResource["dojo.foo"]){ //_hasResource checks added by build. Do not use _hasResource directly in your code.
-dojo._hasResource["dojo.foo"] = true;
-/*
- * loader.js - A bootstrap module. Runs before the hostenv_*.js file. Contains
- * all of the package loading methods.
- */
-
-(function(){
- var d = dojo;
-
- d.mixin(d, {
- _loadedModules: {},
- _inFlightCount: 0,
- _hasResource: {},
-
- _modulePrefixes: {
- dojo: { name: "dojo", value: "." },
- // dojox: { name: "dojox", value: "../dojox" },
- // dijit: { name: "dijit", value: "../dijit" },
- doh: { name: "doh", value: "../util/doh" },
- tests: { name: "tests", value: "tests" }
- },
-
- _moduleHasPrefix: function(/*String*/module){
- // summary: checks to see if module has been established
- var mp = d._modulePrefixes;
- return !!(mp[module] && mp[module].value); // Boolean
- },
-
- _getModulePrefix: function(/*String*/module){
- // summary: gets the prefix associated with module
- var mp = d._modulePrefixes;
- if(d._moduleHasPrefix(module)){
- return mp[module].value; // String
- }
- return module; // String
- },
-
- _loadedUrls: [],
-
- //WARNING:
- // This variable is referenced by packages outside of bootstrap:
- // FloatingPane.js and undo/browser.js
- _postLoad: false,
-
- //Egad! Lots of test files push on this directly instead of using dojo.addOnLoad.
- _loaders: [],
- _unloaders: [],
- _loadNotifying: false
- });
-
-
- dojo._loadPath = function(/*String*/relpath, /*String?*/module, /*Function?*/cb){
- // summary:
- // Load a Javascript module given a relative path
- //
- // description:
- // Loads and interprets the script located at relpath, which is
- // relative to the script root directory. If the script is found but
- // its interpretation causes a runtime exception, that exception is
- // not caught by us, so the caller will see it. We return a true
- // value if and only if the script is found.
- //
- // relpath:
- // A relative path to a script (no leading '/', and typically ending
- // in '.js').
- // module:
- // A module whose existance to check for after loading a path. Can be
- // used to determine success or failure of the load.
- // cb:
- // a callback function to pass the result of evaluating the script
-
- var uri = ((relpath.charAt(0) == '/' || relpath.match(/^\w+:/)) ? "" : d.baseUrl) + relpath;
- try{
- return !module ? d._loadUri(uri, cb) : d._loadUriAndCheck(uri, module, cb); // Boolean
- }catch(e){
- console.error(e);
- return false; // Boolean
- }
- }
-
- dojo._loadUri = function(/*String*/uri, /*Function?*/cb){
- // summary:
- // Loads JavaScript from a URI
- // description:
- // Reads the contents of the URI, and evaluates the contents. This is
- // used to load modules as well as resource bundles. Returns true if
- // it succeeded. Returns false if the URI reading failed. Throws if
- // the evaluation throws.
- // uri: a uri which points at the script to be loaded
- // cb:
- // a callback function to process the result of evaluating the script
- // as an expression, typically used by the resource bundle loader to
- // load JSON-style resources
-
- if(d._loadedUrls[uri]){
- return true; // Boolean
- }
- d._inFlightCount++; // block addOnLoad calls that arrive while we're busy downloading
- var contents = d._getText(uri, true);
- if(contents){ // not 404, et al
- d._loadedUrls[uri] = true;
- d._loadedUrls.push(uri);
- if(cb){
- contents = '('+contents+')';
- }else{
- //Only do the scoping if no callback. If a callback is specified,
- //it is most likely the i18n bundle stuff.
- contents = d._scopePrefix + contents + d._scopeSuffix;
- }
- if(!d.isIE){ contents += "\r\n//@ sourceURL=" + uri; } // debugging assist for Firebug
- var value = d["eval"](contents);
- if(cb){ cb(value); }
- }
- // Check to see if we need to call _callLoaded() due to an addOnLoad() that arrived while we were busy downloading
- if(--d._inFlightCount == 0 && d._postLoad && d._loaders.length){
- // We shouldn't be allowed to get here but Firefox allows an event
- // (mouse, keybd, async xhrGet) to interrupt a synchronous xhrGet.
- // If the current script block contains multiple require() statements, then after each
- // require() returns, inFlightCount == 0, but we want to hold the _callLoaded() until
- // all require()s are done since the out-of-sequence addOnLoad() presumably needs them all.
- // setTimeout allows the next require() to start (if needed), and then we check this again.
- setTimeout(function(){
- // If inFlightCount > 0, then multiple require()s are running sequentially and
- // the next require() started after setTimeout() was executed but before we got here.
- if(d._inFlightCount == 0){
- d._callLoaded();
- }
- }, 0);
- }
- return !!contents; // Boolean: contents? true : false
- }
-
- // FIXME: probably need to add logging to this method
- dojo._loadUriAndCheck = function(/*String*/uri, /*String*/moduleName, /*Function?*/cb){
- // summary: calls loadUri then findModule and returns true if both succeed
- var ok = false;
- try{
- ok = d._loadUri(uri, cb);
- }catch(e){
- console.error("failed loading " + uri + " with error: " + e);
- }
- return !!(ok && d._loadedModules[moduleName]); // Boolean
- }
-
- dojo.loaded = function(){
- // summary:
- // signal fired when initial environment and package loading is
- // complete. You should use dojo.addOnLoad() instead of doing a
- // direct dojo.connect() to this method in order to handle
- // initialization tasks that require the environment to be
- // initialized. In a browser host, declarative widgets will
- // be constructed when this function finishes runing.
- d._loadNotifying = true;
- d._postLoad = true;
- var mll = d._loaders;
-
- //Clear listeners so new ones can be added
- //For other xdomain package loads after the initial load.
- d._loaders = [];
-
- for(var x = 0; x < mll.length; x++){
- mll[x]();
- }
-
- d._loadNotifying = false;
-
- //Make sure nothing else got added to the onload queue
- //after this first run. If something did, and we are not waiting for any
- //more inflight resources, run again.
- if(d._postLoad && d._inFlightCount == 0 && mll.length){
- d._callLoaded();
- }
- }
-
- dojo.unloaded = function(){
- // summary:
- // signal fired by impending environment destruction. You should use
- // dojo.addOnUnload() instead of doing a direct dojo.connect() to this
- // method to perform page/application cleanup methods. See
- // dojo.addOnUnload for more info.
- var mll = d._unloaders;
- while(mll.length){
- (mll.pop())();
- }
- }
-
- d._onto = function(arr, obj, fn){
- if(!fn){
- arr.push(obj);
- }else if(fn){
- var func = (typeof fn == "string") ? obj[fn] : fn;
- arr.push(function(){ func.call(obj); });
- }
- }
-
- dojo.ready = dojo.addOnLoad = function(/*Object*/obj, /*String|Function?*/functionName){
- // summary:
- // Registers a function to be triggered after the DOM and dojo.require() calls
- // have finished loading.
- //
- // description:
- // Registers a function to be triggered after the DOM has finished
- // loading and `dojo.require` modules have loaded. Widgets declared in markup
- // have been instantiated if `djConfig.parseOnLoad` is true when this fires.
- //
- // Images and CSS files may or may not have finished downloading when
- // the specified function is called. (Note that widgets' CSS and HTML
- // code is guaranteed to be downloaded before said widgets are
- // instantiated, though including css resouces BEFORE any script elements
- // is highly recommended).
- //
- // example:
- // Register an anonymous function to run when everything is ready
- // | dojo.addOnLoad(function(){ doStuff(); });
- //
- // example:
- // Register a function to run when everything is ready by pointer:
- // | var init = function(){ doStuff(); }
- // | dojo.addOnLoad(init);
- //
- // example:
- // Register a function to run scoped to `object`, either by name or anonymously:
- // | dojo.addOnLoad(object, "functionName");
- // | dojo.addOnLoad(object, function(){ doStuff(); });
-
- d._onto(d._loaders, obj, functionName);
-
- //Added for xdomain loading. dojo.addOnLoad is used to
- //indicate callbacks after doing some dojo.require() statements.
- //In the xdomain case, if all the requires are loaded (after initial
- //page load), then immediately call any listeners.
- if(d._postLoad && d._inFlightCount == 0 && !d._loadNotifying){
- d._callLoaded();
- }
- }
-
- //Support calling dojo.addOnLoad via djConfig.addOnLoad. Support all the
- //call permutations of dojo.addOnLoad. Mainly useful when dojo is added
- //to the page after the page has loaded.
- var dca = d.config.addOnLoad;
- if(dca){
- d.addOnLoad[(dca instanceof Array ? "apply" : "call")](d, dca);
- }
-
- dojo._modulesLoaded = function(){
- if(d._postLoad){ return; }
- if(d._inFlightCount > 0){
- console.warn("files still in flight!");
- return;
- }
- d._callLoaded();
- }
-
- dojo._callLoaded = function(){
-
- // The "object" check is for IE, and the other opera check fixes an
- // issue in Opera where it could not find the body element in some
- // widget test cases. For 0.9, maybe route all browsers through the
- // setTimeout (need protection still for non-browser environments
- // though). This might also help the issue with FF 2.0 and freezing
- // issues where we try to do sync xhr while background css images are
- // being loaded (trac #2572)? Consider for 0.9.
- if(typeof setTimeout == "object" || (d.config.useXDomain && d.isOpera)){
- setTimeout(
- d.isAIR ? function(){ d.loaded(); } : d._scopeName + ".loaded();",
- 0);
- }else{
- d.loaded();
- }
- }
-
- dojo._getModuleSymbols = function(/*String*/modulename){
- // summary:
- // Converts a module name in dotted JS notation to an array
- // representing the path in the source tree
- var syms = modulename.split(".");
- for(var i = syms.length; i>0; i--){
- var parentModule = syms.slice(0, i).join(".");
- if(i == 1 && !d._moduleHasPrefix(parentModule)){
- // Support default module directory (sibling of dojo) for top-level modules
- syms[0] = "../" + syms[0];
- }else{
- var parentModulePath = d._getModulePrefix(parentModule);
- if(parentModulePath != parentModule){
- syms.splice(0, i, parentModulePath);
- break;
- }
- }
- }
- return syms; // Array
- }
-
- dojo._global_omit_module_check = false;
-
- dojo.loadInit = function(/*Function*/init){
- // summary:
- // Executes a function that needs to be executed for the loader's dojo.requireIf
- // resolutions to work. This is needed mostly for the xdomain loader case where
- // a function needs to be executed to set up the possible values for a dojo.requireIf
- // call.
- // init:
- // a function reference. Executed immediately.
- // description: This function is mainly a marker for the xdomain loader to know parts of
- // code that needs be executed outside the function wrappper that is placed around modules.
- // The init function could be executed more than once, and it should make no assumptions
- // on what is loaded, or what modules are available. Only the functionality in Dojo Base
- // is allowed to be used. Avoid using this method. For a valid use case,
- // see the source for dojox.gfx.
- init();
- }
-
- dojo._loadModule = dojo.require = function(/*String*/moduleName, /*Boolean?*/omitModuleCheck){
- // summary:
- // loads a Javascript module from the appropriate URI
- // moduleName:
- // module name to load, using periods for separators,
- // e.g. "dojo.date.locale". Module paths are de-referenced by dojo's
- // internal mapping of locations to names and are disambiguated by
- // longest prefix. See `dojo.registerModulePath()` for details on
- // registering new modules.
- // omitModuleCheck:
- // if `true`, omitModuleCheck skips the step of ensuring that the
- // loaded file actually defines the symbol it is referenced by.
- // For example if it called as `dojo.require("a.b.c")` and the
- // file located at `a/b/c.js` does not define an object `a.b.c`,
- // and exception will be throws whereas no exception is raised
- // when called as `dojo.require("a.b.c", true)`
- // description:
- // Modules are loaded via dojo.require by using one of two loaders: the normal loader
- // and the xdomain loader. The xdomain loader is used when dojo was built with a
- // custom build that specified loader=xdomain and the module lives on a modulePath
- // that is a whole URL, with protocol and a domain. The versions of Dojo that are on
- // the Google and AOL CDNs use the xdomain loader.
- //
- // If the module is loaded via the xdomain loader, it is an asynchronous load, since
- // the module is added via a dynamically created script tag. This
- // means that dojo.require() can return before the module has loaded. However, this
- // should only happen in the case where you do dojo.require calls in the top-level
- // HTML page, or if you purposely avoid the loader checking for dojo.require
- // dependencies in your module by using a syntax like dojo["require"] to load the module.
- //
- // Sometimes it is useful to not have the loader detect the dojo.require calls in the
- // module so that you can dynamically load the modules as a result of an action on the
- // page, instead of right at module load time.
- //
- // Also, for script blocks in an HTML page, the loader does not pre-process them, so
- // it does not know to download the modules before the dojo.require calls occur.
- //
- // So, in those two cases, when you want on-the-fly module loading or for script blocks
- // in the HTML page, special care must be taken if the dojo.required code is loaded
- // asynchronously. To make sure you can execute code that depends on the dojo.required
- // modules, be sure to add the code that depends on the modules in a dojo.addOnLoad()
- // callback. dojo.addOnLoad waits for all outstanding modules to finish loading before
- // executing. Example:
- //
- // | <script type="text/javascript">
- // | dojo.require("foo");
- // | dojo.require("bar");
- // | dojo.addOnLoad(function(){
- // | //you can now safely do something with foo and bar
- // | });
- // | </script>
- //
- // This type of syntax works with both xdomain and normal loaders, so it is good
- // practice to always use this idiom for on-the-fly code loading and in HTML script
- // blocks. If at some point you change loaders and where the code is loaded from,
- // it will all still work.
- //
- // More on how dojo.require
- // `dojo.require("A.B")` first checks to see if symbol A.B is
- // defined. If it is, it is simply returned (nothing to do).
- //
- // If it is not defined, it will look for `A/B.js` in the script root
- // directory.
- //
- // `dojo.require` throws an excpetion if it cannot find a file
- // to load, or if the symbol `A.B` is not defined after loading.
- //
- // It returns the object `A.B`, but note the caveats above about on-the-fly loading and
- // HTML script blocks when the xdomain loader is loading a module.
- //
- // `dojo.require()` does nothing about importing symbols into
- // the current namespace. It is presumed that the caller will
- // take care of that. For example, to import all symbols into a
- // local block, you might write:
- //
- // | with (dojo.require("A.B")) {
- // | ...
- // | }
- //
- // And to import just the leaf symbol to a local variable:
- //
- // | var B = dojo.require("A.B");
- // | ...
- // returns: the required namespace object
- omitModuleCheck = d._global_omit_module_check || omitModuleCheck;
-
- //Check if it is already loaded.
- var module = d._loadedModules[moduleName];
- if(module){
- return module;
- }
-
- // convert periods to slashes
- var relpath = d._getModuleSymbols(moduleName).join("/") + '.js';
-
- var modArg = !omitModuleCheck ? moduleName : null;
- var ok = d._loadPath(relpath, modArg);
-
- if(!ok && !omitModuleCheck){
- throw new Error("Could not load '" + moduleName + "'; last tried '" + relpath + "'");
- }
-
- // check that the symbol was defined
- // Don't bother if we're doing xdomain (asynchronous) loading.
- if(!omitModuleCheck && !d._isXDomain){
- // pass in false so we can give better error
- module = d._loadedModules[moduleName];
- if(!module){
- throw new Error("symbol '" + moduleName + "' is not defined after loading '" + relpath + "'");
- }
- }
-
- return module;
- }
-
- dojo.provide = function(/*String*/ resourceName){
- // summary:
- // Register a resource with the package system. Works in conjunction with `dojo.require`
- //
- // description:
- // Each javascript source file is called a resource. When a
- // resource is loaded by the browser, `dojo.provide()` registers
- // that it has been loaded.
- //
- // Each javascript source file must have at least one
- // `dojo.provide()` call at the top of the file, corresponding to
- // the file name. For example, `js/dojo/foo.js` must have
- // `dojo.provide("dojo.foo");` before any calls to
- // `dojo.require()` are made.
- //
- // For backwards compatibility reasons, in addition to registering
- // the resource, `dojo.provide()` also ensures that the javascript
- // object for the module exists. For example,
- // `dojo.provide("dojox.data.FlickrStore")`, in addition to
- // registering that `FlickrStore.js` is a resource for the
- // `dojox.data` module, will ensure that the `dojox.data`
- // javascript object exists, so that calls like
- // `dojo.data.foo = function(){ ... }` don't fail.
- //
- // In the case of a build where multiple javascript source files
- // are combined into one bigger file (similar to a .lib or .jar
- // file), that file may contain multiple dojo.provide() calls, to
- // note that it includes multiple resources.
- //
- // resourceName: String
- // A dot-sperated string identifying a resource.
- //
- // example:
- // Safely create a `my` object, and make dojo.require("my.CustomModule") work
- // | dojo.provide("my.CustomModule");
-
- //Make sure we have a string.
- resourceName = resourceName + "";
- return (d._loadedModules[resourceName] = d.getObject(resourceName, true)); // Object
- }
-
- //Start of old bootstrap2:
-
- dojo.platformRequire = function(/*Object*/modMap){
- // summary:
- // require one or more modules based on which host environment
- // Dojo is currently operating in
- // description:
- // This method takes a "map" of arrays which one can use to
- // optionally load dojo modules. The map is indexed by the
- // possible dojo.name_ values, with two additional values:
- // "default" and "common". The items in the "default" array will
- // be loaded if none of the other items have been choosen based on
- // dojo.name_, set by your host environment. The items in the
- // "common" array will *always* be loaded, regardless of which
- // list is chosen.
- // example:
- // | dojo.platformRequire({
- // | browser: [
- // | "foo.sample", // simple module
- // | "foo.test",
- // | ["foo.bar.baz", true] // skip object check in _loadModule (dojo.require)
- // | ],
- // | default: [ "foo.sample._base" ],
- // | common: [ "important.module.common" ]
- // | });
-
- var common = modMap.common || [];
- var result = common.concat(modMap[d._name] || modMap["default"] || []);
-
- for(var x=0; x<result.length; x++){
- var curr = result[x];
- if(curr.constructor == Array){
- d._loadModule.apply(d, curr);
- }else{
- d._loadModule(curr);
- }
- }
- }
-
- dojo.requireIf = function(/*Boolean*/ condition, /*String*/ resourceName){
- // summary:
- // If the condition is true then call `dojo.require()` for the specified
- // resource
- //
- // example:
- // | dojo.requireIf(dojo.isBrowser, "my.special.Module");
-
- if(condition === true){
- // FIXME: why do we support chained require()'s here? does the build system?
- var args = [];
- for(var i = 1; i < arguments.length; i++){
- args.push(arguments[i]);
- }
- d.require.apply(d, args);
- }
- }
-
- dojo.requireAfterIf = d.requireIf;
-
- dojo.registerModulePath = function(/*String*/module, /*String*/prefix){
- // summary:
- // Maps a module name to a path
- // description:
- // An unregistered module is given the default path of ../[module],
- // relative to Dojo root. For example, module acme is mapped to
- // ../acme. If you want to use a different module name, use
- // dojo.registerModulePath.
- // example:
- // If your dojo.js is located at this location in the web root:
- // | /myapp/js/dojo/dojo/dojo.js
- // and your modules are located at:
- // | /myapp/js/foo/bar.js
- // | /myapp/js/foo/baz.js
- // | /myapp/js/foo/thud/xyzzy.js
- // Your application can tell Dojo to locate the "foo" namespace by calling:
- // | dojo.registerModulePath("foo", "../../foo");
- // At which point you can then use dojo.require() to load the
- // modules (assuming they provide() the same things which are
- // required). The full code might be:
- // | <script type="text/javascript"
- // | src="/myapp/js/dojo/dojo/dojo.js"></script>
- // | <script type="text/javascript">
- // | dojo.registerModulePath("foo", "../../foo");
- // | dojo.require("foo.bar");
- // | dojo.require("foo.baz");
- // | dojo.require("foo.thud.xyzzy");
- // | </script>
- d._modulePrefixes[module] = { name: module, value: prefix };
- }
-
- dojo.requireLocalization = function(/*String*/moduleName, /*String*/bundleName, /*String?*/locale, /*String?*/availableFlatLocales){
- // summary:
- // Declares translated resources and loads them if necessary, in the
- // same style as dojo.require. Contents of the resource bundle are
- // typically strings, but may be any name/value pair, represented in
- // JSON format. See also `dojo.i18n.getLocalization`.
- //
- // description:
- // Load translated resource bundles provided underneath the "nls"
- // directory within a package. Translated resources may be located in
- // different packages throughout the source tree.
- //
- // Each directory is named for a locale as specified by RFC 3066,
- // (http://www.ietf.org/rfc/rfc3066.txt), normalized in lowercase.
- // Note that the two bundles in the example do not define all the
- // same variants. For a given locale, bundles will be loaded for
- // that locale and all more general locales above it, including a
- // fallback at the root directory. For example, a declaration for
- // the "de-at" locale will first load `nls/de-at/bundleone.js`,
- // then `nls/de/bundleone.js` and finally `nls/bundleone.js`. The
- // data will be flattened into a single Object so that lookups
- // will follow this cascading pattern. An optional build step can
- // preload the bundles to avoid data redundancy and the multiple
- // network hits normally required to load these resources.
- //
- // moduleName:
- // name of the package containing the "nls" directory in which the
- // bundle is found
- //
- // bundleName:
- // bundle name, i.e. the filename without the '.js' suffix. Using "nls" as a
- // a bundle name is not supported, since "nls" is the name of the folder
- // that holds bundles. Using "nls" as the bundle name will cause problems
- // with the custom build.
- //
- // locale:
- // the locale to load (optional) By default, the browser's user
- // locale as defined by dojo.locale
- //
- // availableFlatLocales:
- // A comma-separated list of the available, flattened locales for this
- // bundle. This argument should only be set by the build process.
- //
- // example:
- // A particular widget may define one or more resource bundles,
- // structured in a program as follows, where moduleName is
- // mycode.mywidget and bundleNames available include bundleone and
- // bundletwo:
- // | ...
- // | mycode/
- // | mywidget/
- // | nls/
- // | bundleone.js (the fallback translation, English in this example)
- // | bundletwo.js (also a fallback translation)
- // | de/
- // | bundleone.js
- // | bundletwo.js
- // | de-at/
- // | bundleone.js
- // | en/
- // | (empty; use the fallback translation)
- // | en-us/
- // | bundleone.js
- // | en-gb/
- // | bundleone.js
- // | es/
- // | bundleone.js
- // | bundletwo.js
- // | ...etc
- // | ...
- //
-
- d.require("dojo.i18n");
- d.i18n._requireLocalization.apply(d.hostenv, arguments);
- };
-
-
- var ore = new RegExp("^(([^:/?#]+):)?(//([^/?#]*))?([^?#]*)(\\?([^#]*))?(#(.*))?$"),
- ire = new RegExp("^((([^\\[:]+):)?([^@]+)@)?(\\[([^\\]]+)\\]|([^\\[:]*))(:([0-9]+))?$");
-
- dojo._Url = function(/*dojo._Url|String...*/){
- // summary:
- // Constructor to create an object representing a URL.
- // It is marked as private, since we might consider removing
- // or simplifying it.
- // description:
- // Each argument is evaluated in order relative to the next until
- // a canonical uri is produced. To get an absolute Uri relative to
- // the current document use:
- // new dojo._Url(document.baseURI, url)
-
- var n = null,
- _a = arguments,
- uri = [_a[0]];
- // resolve uri components relative to each other
- for(var i = 1; i<_a.length; i++){
- if(!_a[i]){ continue; }
-
- // Safari doesn't support this.constructor so we have to be explicit
- // FIXME: Tracked (and fixed) in Webkit bug 3537.
- // http://bugs.webkit.org/show_bug.cgi?id=3537
- var relobj = new d._Url(_a[i]+""),
- uriobj = new d._Url(uri[0]+"");
-
- if(
- relobj.path == "" &&
- !relobj.scheme &&
- !relobj.authority &&
- !relobj.query
- ){
- if(relobj.fragment != n){
- uriobj.fragment = relobj.fragment;
- }
- relobj = uriobj;
- }else if(!relobj.scheme){
- relobj.scheme = uriobj.scheme;
-
- if(!relobj.authority){
- relobj.authority = uriobj.authority;
-
- if(relobj.path.charAt(0) != "/"){
- var path = uriobj.path.substring(0,
- uriobj.path.lastIndexOf("/") + 1) + relobj.path;
-
- var segs = path.split("/");
- for(var j = 0; j < segs.length; j++){
- if(segs[j] == "."){
- // flatten "./" references
- if(j == segs.length - 1){
- segs[j] = "";
- }else{
- segs.splice(j, 1);
- j--;
- }
- }else if(j > 0 && !(j == 1 && segs[0] == "") &&
- segs[j] == ".." && segs[j-1] != ".."){
- // flatten "../" references
- if(j == (segs.length - 1)){
- segs.splice(j, 1);
- segs[j - 1] = "";
- }else{
- segs.splice(j - 1, 2);
- j -= 2;
- }
- }
- }
- relobj.path = segs.join("/");
- }
- }
- }
-
- uri = [];
- if(relobj.scheme){
- uri.push(relobj.scheme, ":");
- }
- if(relobj.authority){
- uri.push("//", relobj.authority);
- }
- uri.push(relobj.path);
- if(relobj.query){
- uri.push("?", relobj.query);
- }
- if(relobj.fragment){
- uri.push("#", relobj.fragment);
- }
- }
-
- this.uri = uri.join("");
-
- // break the uri into its main components
- var r = this.uri.match(ore);
-
- this.scheme = r[2] || (r[1] ? "" : n);
- this.authority = r[4] || (r[3] ? "" : n);
- this.path = r[5]; // can never be undefined
- this.query = r[7] || (r[6] ? "" : n);
- this.fragment = r[9] || (r[8] ? "" : n);
-
- if(this.authority != n){
- // server based naming authority
- r = this.authority.match(ire);
-
- this.user = r[3] || n;
- this.password = r[4] || n;
- this.host = r[6] || r[7]; // ipv6 || ipv4
- this.port = r[9] || n;
- }
- }
-
- dojo._Url.prototype.toString = function(){ return this.uri; };
-
- dojo.moduleUrl = function(/*String*/module, /*dojo._Url||String*/url){
- // summary:
- // Returns a `dojo._Url` object relative to a module.
- // example:
- // | var pngPath = dojo.moduleUrl("acme","images/small.png");
- // | console.dir(pngPath); // list the object properties
- // | // create an image and set it's source to pngPath's value:
- // | var img = document.createElement("img");
- // | // NOTE: we assign the string representation of the url object
- // | img.src = pngPath.toString();
- // | // add our image to the document
- // | dojo.body().appendChild(img);
- // example:
- // you may de-reference as far as you like down the package
- // hierarchy. This is sometimes handy to avoid lenghty relative
- // urls or for building portable sub-packages. In this example,
- // the `acme.widget` and `acme.util` directories may be located
- // under different roots (see `dojo.registerModulePath`) but the
- // the modules which reference them can be unaware of their
- // relative locations on the filesystem:
- // | // somewhere in a configuration block
- // | dojo.registerModulePath("acme.widget", "../../acme/widget");
- // | dojo.registerModulePath("acme.util", "../../util");
- // |
- // | // ...
- // |
- // | // code in a module using acme resources
- // | var tmpltPath = dojo.moduleUrl("acme.widget","templates/template.html");
- // | var dataPath = dojo.moduleUrl("acme.util","resources/data.json");
-
- var loc = d._getModuleSymbols(module).join('/');
- if(!loc){ return null; }
- if(loc.lastIndexOf("/") != loc.length-1){
- loc += "/";
- }
-
- //If the path is an absolute path (starts with a / or is on another
- //domain/xdomain) then don't add the baseUrl.
- var colonIndex = loc.indexOf(":");
- if(loc.charAt(0) != "/" && (colonIndex == -1 || colonIndex > loc.indexOf("/"))){
- loc = d.baseUrl + loc;
- }
-
- return new d._Url(loc, url); // dojo._Url
- }
-})();
-
-}
diff --git a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dojo/_base/_loader/loader_debug.js b/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dojo/_base/_loader/loader_debug.js
deleted file mode 100644
index 10decbe..0000000
--- a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dojo/_base/_loader/loader_debug.js
+++ /dev/null
@@ -1,86 +0,0 @@
-/*
- Copyright (c) 2004-2009, The Dojo Foundation All Rights Reserved.
- Available via Academic Free License >= 2.1 OR the modified BSD license.
- see: http://dojotoolkit.org/license for details
-*/
-
-
-if(!dojo._hasResource["dojo._base._loader.loader_debug"]){ //_hasResource checks added by build. Do not use _hasResource directly in your code.
-dojo._hasResource["dojo._base._loader.loader_debug"] = true;
-dojo.provide("dojo._base._loader.loader_debug");
-
-//Override dojo.provide, so we can trigger the next
-//script tag for the next local module. We can only add one
-//at a time because there are browsers that execute script tags
-//in the order that the code is received, and not in the DOM order.
-dojo.nonDebugProvide = dojo.provide;
-
-dojo.provide = function(resourceName){
- var dbgQueue = dojo["_xdDebugQueue"];
- if(dbgQueue && dbgQueue.length > 0 && resourceName == dbgQueue["currentResourceName"]){
- //Set a timeout so the module can be executed into existence. Normally the
- //dojo.provide call in a module is the first line. Don't want to risk attaching
- //another script tag until the current one finishes executing.
- if(dojo.isAIR){
- window.setTimeout(function(){dojo._xdDebugFileLoaded(resourceName);}, 1);
- }else{
- window.setTimeout(dojo._scopeName + "._xdDebugFileLoaded('" + resourceName + "')", 1);
- }
- }
-
- return dojo.nonDebugProvide.apply(dojo, arguments);
-}
-
-dojo._xdDebugFileLoaded = function(resourceName){
-
- if(!dojo._xdDebugScopeChecked){
- //If using a scoped dojo, we need to expose dojo as a real global
- //for the debugAtAllCosts stuff to work.
- if(dojo._scopeName != "dojo"){
- window.dojo = window[dojo.config.scopeMap[0][1]];
- window.dijit = window[dojo.config.scopeMap[1][1]];
- window.dojox = window[dojo.config.scopeMap[2][1]];
- }
-
- dojo._xdDebugScopeChecked = true;
- }
-
- var dbgQueue = dojo._xdDebugQueue;
-
- if(resourceName && resourceName == dbgQueue.currentResourceName){
- dbgQueue.shift();
- }
-
- if(dbgQueue.length == 0){
- //Check for more modules that need debug loading.
- //dojo._xdWatchInFlight will add more things to the debug
- //queue if they just recently loaded but it was not detected
- //between the dojo._xdWatchInFlight intervals.
- dojo._xdWatchInFlight();
- }
-
- if(dbgQueue.length == 0){
- dbgQueue.currentResourceName = null;
-
- //Make sure nothing else is in flight.
- //If something is still in flight, then it still
- //needs to be added to debug queue after it loads.
- for(var param in dojo._xdInFlight){
- if(dojo._xdInFlight[param] === true){
- return;
- }
- }
-
- dojo._xdNotifyLoaded();
- }else{
- if(resourceName == dbgQueue.currentResourceName){
- dbgQueue.currentResourceName = dbgQueue[0].resourceName;
- var element = document.createElement("script");
- element.type = "text/javascript";
- element.src = dbgQueue[0].resourcePath;
- document.getElementsByTagName("head")[0].appendChild(element);
- }
- }
-}
-
-}
diff --git a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dojo/_base/_loader/loader_xd.js b/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dojo/_base/_loader/loader_xd.js
deleted file mode 100644
index 6fabe80..0000000
--- a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dojo/_base/_loader/loader_xd.js
+++ /dev/null
@@ -1,723 +0,0 @@
-/*
- Copyright (c) 2004-2009, The Dojo Foundation All Rights Reserved.
- Available via Academic Free License >= 2.1 OR the modified BSD license.
- see: http://dojotoolkit.org/license for details
-*/
-
-
-if(!dojo._hasResource["dojo._base._loader.loader_xd"]){ //_hasResource checks added by build. Do not use _hasResource directly in your code.
-dojo._hasResource["dojo._base._loader.loader_xd"] = true;
-//Cross-domain resource loader.
-dojo.provide("dojo._base._loader.loader_xd");
-
-dojo._xdReset = function(){
- //summary: Internal xd loader function. Resets the xd state.
-
- //This flag indicates where or not we have crossed into xdomain territory. Once any resource says
- //it is cross domain, then the rest of the resources have to be treated as xdomain because we need
- //to evaluate resources in order. If there is a xdomain resource followed by a xhr resource, we can't load
- //the xhr resource until the one before it finishes loading. The text of the xhr resource will be converted
- //to match the format for a xd resource and put in the xd load queue.
- dojo._isXDomain = dojo.config.useXDomain || false;
-
- dojo._xdClearInterval();
- dojo._xdInFlight = {};
- dojo._xdOrderedReqs = [];
- dojo._xdDepMap = {};
- dojo._xdContents = [];
- dojo._xdDefList = [];
-}
-
-dojo._xdClearInterval = function(){
- //summary: Internal xd loader function.
- //Clears the interval timer used to check on the
- //status of in-flight xd module resource requests.
- if(dojo._xdTimer){
- clearInterval(dojo._xdTimer);
- dojo._xdTimer = 0;
- }
-}
-
-
-//Call reset immediately to set the state.
-dojo._xdReset();
-
-dojo._xdCreateResource = function(/*String*/contents, /*String*/resourceName, /*String*/resourcePath){
- //summary: Internal xd loader function. Creates an xd module source given an
- //non-xd module contents.
-
- //Remove comments. Not perfect, but good enough for dependency resolution.
- var depContents = contents.replace(/(\/\*([\s\S]*?)\*\/|\/\/(.*)$)/mg , "");
-
- //Find dependencies.
- var deps = [];
- var depRegExp = /dojo.(require|requireIf|provide|requireAfterIf|platformRequire|requireLocalization)\s*\(([\w\W]*?)\)/mg;
- var match;
- while((match = depRegExp.exec(depContents)) != null){
- if(match[1] == "requireLocalization"){
- //Need to load the local bundles asap, since they are not
- //part of the list of modules watched for loading.
- eval(match[0]);
- }else{
- deps.push('"' + match[1] + '", ' + match[2]);
- }
- }
-
- //Create resource object and the call to _xdResourceLoaded.
- var output = [];
- output.push(dojo._scopeName + "._xdResourceLoaded(function(" + dojo._scopePrefixArgs + "){\n");
-
- //See if there are any dojo.loadInit calls
- var loadInitCalls = dojo._xdExtractLoadInits(contents);
- if(loadInitCalls){
- //Adjust fileContents since extractLoadInits removed something.
- contents = loadInitCalls[0];
-
- //Add any loadInit calls to the top of the xd file.
- for(var i = 1; i < loadInitCalls.length; i++){
- output.push(loadInitCalls[i] + ";\n");
- }
- }
-
- output.push("return {");
-
- //Add dependencies
- if(deps.length > 0){
- output.push("depends: [");
- for(i = 0; i < deps.length; i++){
- if(i > 0){
- output.push(",\n");
- }
- output.push("[" + deps[i] + "]");
- }
- output.push("],");
- }
-
- //Add the contents of the file inside a function.
- //Pass in scope arguments so we can support multiple versions of the
- //same module on a page.
- output.push("\ndefineResource: function(" + dojo._scopePrefixArgs + "){");
-
- //Don't put in the contents in the debugAtAllCosts case
- //since the contents may have syntax errors. Let those
- //get pushed up when the script tags are added to the page
- //in the debugAtAllCosts case.
- if(!dojo.config["debugAtAllCosts"] || resourceName == "dojo._base._loader.loader_debug"){
- output.push(contents);
- }
- //Add isLocal property so we know if we have to do something different
- //in debugAtAllCosts situations.
- output.push("\n}, resourceName: '" + resourceName + "', resourcePath: '" + resourcePath + "'};});");
-
- return output.join(""); //String
-}
-
-dojo._xdExtractLoadInits = function(/*String*/fileContents){
- //Extracts
- var regexp = /dojo.loadInit\s*\(/g;
- regexp.lastIndex = 0;
-
- var parenRe = /[\(\)]/g;
- parenRe.lastIndex = 0;
-
- var results = [];
- var matches;
- while((matches = regexp.exec(fileContents))){
- //Find end of the call by finding the matching end paren
- parenRe.lastIndex = regexp.lastIndex;
- var matchCount = 1;
- var parenMatch;
- while((parenMatch = parenRe.exec(fileContents))){
- if(parenMatch[0] == ")"){
- matchCount -= 1;
- }else{
- matchCount += 1;
- }
- if(matchCount == 0){
- break;
- }
- }
-
- if(matchCount != 0){
- throw "unmatched paren around character " + parenRe.lastIndex + " in: " + fileContents;
- }
-
- //Put the master matching string in the results.
- var startIndex = regexp.lastIndex - matches[0].length;
- results.push(fileContents.substring(startIndex, parenRe.lastIndex));
-
- //Remove the matching section.
- var remLength = parenRe.lastIndex - startIndex;
- fileContents = fileContents.substring(0, startIndex) + fileContents.substring(parenRe.lastIndex, fileContents.length);
-
- //Move the master regexp past the last matching paren point.
- regexp.lastIndex = parenRe.lastIndex - remLength;
-
- regexp.lastIndex = parenRe.lastIndex;
- }
-
- if(results.length > 0){
- results.unshift(fileContents);
- }
-
- return (results.length ? results : null);
-}
-
-dojo._xdIsXDomainPath = function(/*string*/relpath) {
- //summary: Figure out whether the path is local or x-domain
- //If there is a colon before the first / then, we have a URL with a protocol.
-
- var colonIndex = relpath.indexOf(":");
- var slashIndex = relpath.indexOf("/");
-
- if(colonIndex > 0 && colonIndex < slashIndex){
- return true;
- }else{
- //Is the base script URI-based URL a cross domain URL?
- //If so, then the relpath will be evaluated relative to
- //baseUrl, and therefore qualify as xdomain.
- //Only treat it as xdomain if the page does not have a
- //host (file:// url) or if the baseUrl does not match the
- //current window's domain.
- var url = dojo.baseUrl;
- colonIndex = url.indexOf(":");
- slashIndex = url.indexOf("/");
- if(colonIndex > 0 && colonIndex < slashIndex && (!location.host || url.indexOf("http://" + location.host) != 0)){
- return true;
- }
- }
- return false;
-}
-
-dojo._loadPath = function(/*String*/relpath, /*String?*/module, /*Function?*/cb){
- //summary: Internal xd loader function. Overrides loadPath() from loader.js.
- //xd loading requires slightly different behavior from loadPath().
-
- var currentIsXDomain = dojo._xdIsXDomainPath(relpath);
- dojo._isXDomain |= currentIsXDomain;
-
- var uri = ((relpath.charAt(0) == '/' || relpath.match(/^\w+:/)) ? "" : dojo.baseUrl) + relpath;
-
- try{
- return ((!module || dojo._isXDomain) ? dojo._loadUri(uri, cb, currentIsXDomain, module) : dojo._loadUriAndCheck(uri, module, cb)); //Boolean
- }catch(e){
- console.error(e);
- return false; //Boolean
- }
-}
-
-dojo._xdCharSet = "utf-8";
-
-dojo._loadUri = function(/*String*/uri, /*Function?*/cb, /*boolean*/currentIsXDomain, /*String?*/module){
- //summary: Internal xd loader function. Overrides loadUri() from loader.js.
- // xd loading requires slightly different behavior from loadPath().
- //description: Wanted to override getText(), but it is used by
- // the widget code in too many, synchronous ways right now.
- if(dojo._loadedUrls[uri]){
- return 1; //Boolean
- }
-
- //Add the module (resource) to the list of modules.
- //Only do this work if we have a modlue name. Otherwise,
- //it is a non-xd i18n bundle, which can load immediately and does not
- //need to be tracked. Also, don't track dojo.i18n, since it is a prerequisite
- //and will be loaded correctly if we load it right away: it has no dependencies.
- if(dojo._isXDomain && module && module != "dojo.i18n"){
- dojo._xdOrderedReqs.push(module);
-
- //Add to waiting resources if it is an xdomain resource.
- //Don't add non-xdomain i18n bundles, those get evaled immediately.
- if(currentIsXDomain || uri.indexOf("/nls/") == -1){
- dojo._xdInFlight[module] = true;
-
- //Increment inFlightCount
- //This will stop the modulesLoaded from firing all the way.
- dojo._inFlightCount++;
- }
-
- //Start timer
- if(!dojo._xdTimer){
- if(dojo.isAIR){
- dojo._xdTimer = setInterval(function(){dojo._xdWatchInFlight();}, 100);
- }else{
- dojo._xdTimer = setInterval(dojo._scopeName + "._xdWatchInFlight();", 100);
- }
- }
- dojo._xdStartTime = (new Date()).getTime();
- }
-
- if (currentIsXDomain){
- //Fix name to be a .xd.fileextension name.
- var lastIndex = uri.lastIndexOf('.');
- if(lastIndex <= 0){
- lastIndex = uri.length - 1;
- }
-
- var xdUri = uri.substring(0, lastIndex) + ".xd";
- if(lastIndex != uri.length - 1){
- xdUri += uri.substring(lastIndex, uri.length);
- }
-
- if (dojo.isAIR){
- xdUri = xdUri.replace("app:/", "/");
- }
-
- //Add to script src
- var element = document.createElement("script");
- element.type = "text/javascript";
- if(dojo._xdCharSet){
- element.charset = dojo._xdCharSet;
- }
- element.src = xdUri;
- if(!dojo.headElement){
- dojo._headElement = document.getElementsByTagName("head")[0];
-
- //Head element may not exist, particularly in html
- //html 4 or tag soup cases where the page does not
- //have a head tag in it. Use html element, since that will exist.
- //Seems to be an issue mostly with Opera 9 and to lesser extent Safari 2
- if(!dojo._headElement){
- dojo._headElement = document.getElementsByTagName("html")[0];
- }
- }
- dojo._headElement.appendChild(element);
- }else{
- var contents = dojo._getText(uri, null, true);
- if(contents == null){ return 0; /*boolean*/}
-
- //If this is not xdomain, or if loading a i18n resource bundle, then send it down
- //the normal eval/callback path.
- if(dojo._isXDomain
- && uri.indexOf("/nls/") == -1
- && module != "dojo.i18n"){
- var res = dojo._xdCreateResource(contents, module, uri);
- dojo.eval(res);
- }else{
- if(cb){
- contents = '('+contents+')';
- }else{
- //Only do the scoping if no callback. If a callback is specified,
- //it is most likely the i18n bundle stuff.
- contents = dojo._scopePrefix + contents + dojo._scopeSuffix;
- }
- var value = dojo["eval"](contents+"\r\n//@ sourceURL="+uri);
- if(cb){
- cb(value);
- }
- }
- }
-
- //These steps are done in the non-xd loader version of this function.
- //Maintain these steps to fit in with the existing system.
- dojo._loadedUrls[uri] = true;
- dojo._loadedUrls.push(uri);
- return true; //Boolean
-}
-
-dojo._xdResourceLoaded = function(/*Object*/res){
- //summary: Internal xd loader function. Called by an xd module resource when
- //it has been loaded via a script tag.
-
- //Evaluate the function with scopeArgs for multiversion support.
- res = res.apply(dojo.global, dojo._scopeArgs);
-
- //Work through dependencies.
- var deps = res.depends;
- var requireList = null;
- var requireAfterList = null;
- var provideList = [];
- if(deps && deps.length > 0){
- var dep = null;
- var insertHint = 0;
- var attachedResource = false;
- for(var i = 0; i < deps.length; i++){
- dep = deps[i];
-
- //Look for specific dependency indicators.
- if (dep[0] == "provide"){
- provideList.push(dep[1]);
- }else{
- if(!requireList){
- requireList = [];
- }
- if(!requireAfterList){
- requireAfterList = [];
- }
-
- var unpackedDeps = dojo._xdUnpackDependency(dep);
- if(unpackedDeps.requires){
- requireList = requireList.concat(unpackedDeps.requires);
- }
- if(unpackedDeps.requiresAfter){
- requireAfterList = requireAfterList.concat(unpackedDeps.requiresAfter);
- }
- }
-
- //Call the dependency indicator to allow for the normal dojo setup.
- //Only allow for one dot reference, for the i18n._preloadLocalizations calls
- //(and maybe future, one-dot things).
- var depType = dep[0];
- var objPath = depType.split(".");
- if(objPath.length == 2){
- dojo[objPath[0]][objPath[1]].apply(dojo[objPath[0]], dep.slice(1));
- }else{
- dojo[depType].apply(dojo, dep.slice(1));
- }
- }
-
-
- //If loading the debugAtAllCosts module, eval it right away since we need
- //its functions to properly load the other modules.
- if(provideList.length == 1 && provideList[0] == "dojo._base._loader.loader_debug"){
- res.defineResource(dojo);
- }else{
- //Save off the resource contents for definition later.
- var contentIndex = dojo._xdContents.push({
- content: res.defineResource,
- resourceName: res["resourceName"],
- resourcePath: res["resourcePath"],
- isDefined: false
- }) - 1;
-
- //Add provide/requires to dependency map.
- for(i = 0; i < provideList.length; i++){
- dojo._xdDepMap[provideList[i]] = { requires: requireList, requiresAfter: requireAfterList, contentIndex: contentIndex };
- }
- }
-
- //Now update the inflight status for any provided resources in this loaded resource.
- //Do this at the very end (in a *separate* for loop) to avoid shutting down the
- //inflight timer check too soon.
- for(i = 0; i < provideList.length; i++){
- dojo._xdInFlight[provideList[i]] = false;
- }
- }
-}
-
-dojo._xdLoadFlattenedBundle = function(/*String*/moduleName, /*String*/bundleName, /*String?*/locale, /*Object*/bundleData){
- //summary: Internal xd loader function. Used when loading
- //a flattened localized bundle via a script tag.
- locale = locale || "root";
- var jsLoc = dojo.i18n.normalizeLocale(locale).replace('-', '_');
- var bundleResource = [moduleName, "nls", bundleName].join(".");
- var bundle = dojo["provide"](bundleResource);
- bundle[jsLoc] = bundleData;
-
- //Assign the bundle for the original locale(s) we wanted.
- var mapName = [moduleName, jsLoc, bundleName].join(".");
- var bundleMap = dojo._xdBundleMap[mapName];
- if(bundleMap){
- for(var param in bundleMap){
- bundle[param] = bundleData;
- }
- }
-};
-
-
-dojo._xdInitExtraLocales = function(){
- // Simulate the extra locale work that dojo.requireLocalization does.
-
- var extra = dojo.config.extraLocale;
- if(extra){
- if(!extra instanceof Array){
- extra = [extra];
- }
-
- dojo._xdReqLoc = dojo.xdRequireLocalization;
- dojo.xdRequireLocalization = function(m, b, locale, fLocales){
- dojo._xdReqLoc(m,b,locale, fLocales);
- if(locale){return;}
- for(var i=0; i<extra.length; i++){
- dojo._xdReqLoc(m,b,extra[i], fLocales);
- }
- };
- }
-}
-
-dojo._xdBundleMap = {};
-
-dojo.xdRequireLocalization = function(/*String*/moduleName, /*String*/bundleName, /*String?*/locale, /*String*/availableFlatLocales){
- //summary: Internal xd loader function. The xd version of dojo.requireLocalization.
-
-
- //Account for allowing multiple extra locales. Do this here inside the function
- //since dojo._xdInitExtraLocales() depends on djConfig being set up, but that only
- //happens after hostenv_browser runs. loader_xd has to come before hostenv_browser
- //though since hostenv_browser can do a dojo.require for the debug module.
- if(dojo._xdInitExtraLocales){
- dojo._xdInitExtraLocales();
- dojo._xdInitExtraLocales = null;
- dojo.xdRequireLocalization.apply(dojo, arguments);
- return;
- }
-
- var locales = availableFlatLocales.split(",");
-
- //Find the best-match locale to load.
- //Assumes dojo.i18n has already been loaded. This is true for xdomain builds,
- //since it is included in dojo.xd.js.
- var jsLoc = dojo.i18n.normalizeLocale(locale);
-
- var bestLocale = "";
- for(var i = 0; i < locales.length; i++){
- //Locale must match from start of string.
- if(jsLoc.indexOf(locales[i]) == 0){
- if(locales[i].length > bestLocale.length){
- bestLocale = locales[i];
- }
- }
- }
-
- var fixedBestLocale = bestLocale.replace('-', '_');
- //See if the bundle we are going to use is already loaded.
- var bundleResource = dojo.getObject([moduleName, "nls", bundleName].join("."));
- if(!bundleResource || !bundleResource[fixedBestLocale]){
- //Need to remember what locale we wanted and which one we actually use.
- //Then when we load the one we are actually using, use that bundle for the one
- //we originally wanted.
- var mapName = [moduleName, (fixedBestLocale||"root"), bundleName].join(".");
- var bundleMap = dojo._xdBundleMap[mapName];
- if(!bundleMap){
- bundleMap = dojo._xdBundleMap[mapName] = {};
- }
- bundleMap[jsLoc.replace('-', '_')] = true;
-
- //Do just a normal dojo.require so the resource tracking stuff works as usual.
- dojo.require(moduleName + ".nls" + (bestLocale ? "." + bestLocale : "") + "." + bundleName);
- }
-}
-
-// Replace dojo.requireLocalization with a wrapper
-dojo._xdRealRequireLocalization = dojo.requireLocalization;
-dojo.requireLocalization = function(/*String*/moduleName, /*String*/bundleName, /*String?*/locale, /*String*/availableFlatLocales){
- // summary: loads a bundle intelligently based on whether the module is
- // local or xd. Overrides the local-case implementation.
-
- var modulePath = dojo.moduleUrl(moduleName).toString();
- if (dojo._xdIsXDomainPath(modulePath)) {
- // call cross-domain loader
- return dojo.xdRequireLocalization.apply(dojo, arguments);
- } else {
- // call local-loader
- return dojo._xdRealRequireLocalization.apply(dojo, arguments);
- }
-}
-
-//This is a bit brittle: it has to know about the dojo methods that deal with dependencies
-//It would be ideal to intercept the actual methods and do something fancy at that point,
-//but I have concern about knowing which provide to match to the dependency in that case,
-//since scripts can load whenever they want, and trigger new calls to dojo._xdResourceLoaded().
-dojo._xdUnpackDependency = function(/*Array*/dep){
- //summary: Internal xd loader function. Determines what to do with a dependency
- //that was listed in an xd version of a module contents.
-
- //Extract the dependency(ies).
- var newDeps = null;
- var newAfterDeps = null;
- switch(dep[0]){
- case "requireIf":
- case "requireAfterIf":
- //First arg (dep[1]) is the test. Depedency is dep[2].
- if(dep[1] === true){
- newDeps = [{name: dep[2], content: null}];
- }
- break;
- case "platformRequire":
- var modMap = dep[1];
- var common = modMap["common"]||[];
- newDeps = (modMap[dojo.hostenv.name_]) ? common.concat(modMap[dojo.hostenv.name_]||[]) : common.concat(modMap["default"]||[]);
- //Flatten the array of arrays into a one-level deep array.
- //Each result could be an array of 3 elements (the 3 arguments to dojo.require).
- //We only need the first one.
- if(newDeps){
- for(var i = 0; i < newDeps.length; i++){
- if(newDeps[i] instanceof Array){
- newDeps[i] = {name: newDeps[i][0], content: null};
- }else{
- newDeps[i] = {name: newDeps[i], content: null};
- }
- }
- }
- break;
- case "require":
- //Just worry about dep[1]
- newDeps = [{name: dep[1], content: null}];
- break;
- case "i18n._preloadLocalizations":
- //We can eval these immediately, since they load i18n bundles.
- //Since i18n bundles have no dependencies, whenever they are loaded
- //in a script tag, they are evaluated immediately, so we do not have to
- //treat them has an explicit dependency for the dependency mapping.
- //We can call it immediately since dojo.i18n is part of dojo.xd.js.
- dojo.i18n._preloadLocalizations.apply(dojo.i18n._preloadLocalizations, dep.slice(1));
- break;
- }
-
- //The requireIf and requireAfterIf needs to be evaluated after the current resource is evaluated.
- if(dep[0] == "requireAfterIf" || dep[0] == "requireIf"){
- newAfterDeps = newDeps;
- newDeps = null;
- }
- return {requires: newDeps, requiresAfter: newAfterDeps}; //Object
-}
-
-dojo._xdWalkReqs = function(){
- //summary: Internal xd loader function.
- //Walks the requires and evaluates module resource contents in
- //the right order.
- var reqChain = null;
- var req;
- for(var i = 0; i < dojo._xdOrderedReqs.length; i++){
- req = dojo._xdOrderedReqs[i];
- if(dojo._xdDepMap[req]){
- reqChain = [req];
- reqChain[req] = true; //Allow for fast lookup of the req in the array
- dojo._xdEvalReqs(reqChain);
- }
- }
-}
-
-dojo._xdEvalReqs = function(/*Array*/reqChain){
- //summary: Internal xd loader function.
- //Does a depth first, breadth second search and eval of required modules.
- while(reqChain.length > 0){
- var req = reqChain[reqChain.length - 1];
- var res = dojo._xdDepMap[req];
- var i, reqs, nextReq;
- if(res){
- //Trace down any requires for this resource.
- //START dojo._xdTraceReqs() inlining for small Safari 2.0 call stack
- reqs = res.requires;
- if(reqs && reqs.length > 0){
- for(i = 0; i < reqs.length; i++){
- nextReq = reqs[i].name;
- if(nextReq && !reqChain[nextReq]){
- //New req depedency. Follow it down.
- reqChain.push(nextReq);
- reqChain[nextReq] = true;
- dojo._xdEvalReqs(reqChain);
- }
- }
- }
- //END dojo._xdTraceReqs() inlining for small Safari 2.0 call stack
-
- //Evaluate the resource.
- var contents = dojo._xdContents[res.contentIndex];
- if(!contents.isDefined){
- var content = contents.content;
- content["resourceName"] = contents["resourceName"];
- content["resourcePath"] = contents["resourcePath"];
- dojo._xdDefList.push(content);
- contents.isDefined = true;
- }
- dojo._xdDepMap[req] = null;
-
- //Trace down any requireAfters for this resource.
- //START dojo._xdTraceReqs() inlining for small Safari 2.0 call stack
- reqs = res.requiresAfter;
- if(reqs && reqs.length > 0){
- for(i = 0; i < reqs.length; i++){
- nextReq = reqs[i].name;
- if(nextReq && !reqChain[nextReq]){
- //New req depedency. Follow it down.
- reqChain.push(nextReq);
- reqChain[nextReq] = true;
- dojo._xdEvalReqs(reqChain);
- }
- }
- }
- //END dojo._xdTraceReqs() inlining for small Safari 2.0 call stack
- }
-
- //Done with that require. Remove it and go to the next one.
- reqChain.pop();
- }
-}
-
-dojo._xdWatchInFlight = function(){
- //summary: Internal xd loader function.
- //Monitors in-flight requests for xd module resources.
-
- var noLoads = "";
- var waitInterval = (dojo.config.xdWaitSeconds || 15) * 1000;
- var expired = (dojo._xdStartTime + waitInterval) < (new Date()).getTime();
-
- //If any xdInFlight are true, then still waiting for something to load.
- //Come back later. If we timed out, report the things that did not load.
- for(var param in dojo._xdInFlight){
- if(dojo._xdInFlight[param] === true){
- if(expired){
- noLoads += param + " ";
- }else{
- return;
- }
- }
- }
-
- //All done. Clean up and notify.
- dojo._xdClearInterval();
-
- if(expired){
- throw "Could not load cross-domain resources: " + noLoads;
- }
-
- dojo._xdWalkReqs();
-
- var defLength = dojo._xdDefList.length;
- for(var i= 0; i < defLength; i++){
- var content = dojo._xdDefList[i];
- if(dojo.config["debugAtAllCosts"] && content["resourceName"]){
- if(!dojo["_xdDebugQueue"]){
- dojo._xdDebugQueue = [];
- }
- dojo._xdDebugQueue.push({resourceName: content.resourceName, resourcePath: content.resourcePath});
- }else{
- //Evaluate the resource to bring it into being.
- //Pass in scope args to allow multiple versions of modules in a page.
- content.apply(dojo.global, dojo._scopeArgs);
- }
- }
-
- //Evaluate any resources that were not evaled before.
- //This normally shouldn't happen with proper dojo.provide and dojo.require
- //usage, but providing it just in case. Note that these may not be executed
- //in the original order that the developer intended.
- for(i = 0; i < dojo._xdContents.length; i++){
- var current = dojo._xdContents[i];
- if(current.content && !current.isDefined){
- //Pass in scope args to allow multiple versions of modules in a page.
- current.content.apply(dojo.global, dojo._scopeArgs);
- }
- }
-
- //Clean up for the next round of xd loading.
- dojo._xdReset();
-
- if(dojo["_xdDebugQueue"] && dojo._xdDebugQueue.length > 0){
- dojo._xdDebugFileLoaded();
- }else{
- dojo._xdNotifyLoaded();
- }
-}
-
-dojo._xdNotifyLoaded = function(){
- //Clear inflight count so we will finally do finish work.
-
- //Just having a legitimate status (true or false) for an inflight item
- //means that it is still being processed. Do the typeof test
- //to avoid bad JavaScript that might tinker with Object.prototype.
- for(var prop in dojo._xdInFlight){
- if(typeof dojo._xdInFlight[prop] == "boolean"){
- return;
- }
- }
-
- dojo._inFlightCount = 0;
-
- //Only trigger call loaded if dj_load_init has run.
- if(dojo._initFired && !dojo._loadNotifying){
- dojo._callLoaded();
- }
-}
-
-}
diff --git a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dojo/_base/array.js b/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dojo/_base/array.js
deleted file mode 100644
index a2a1846..0000000
--- a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dojo/_base/array.js
+++ /dev/null
@@ -1,262 +0,0 @@
-/*
- Copyright (c) 2004-2009, The Dojo Foundation All Rights Reserved.
- Available via Academic Free License >= 2.1 OR the modified BSD license.
- see: http://dojotoolkit.org/license for details
-*/
-
-
-if(!dojo._hasResource["dojo._base.array"]){ //_hasResource checks added by build. Do not use _hasResource directly in your code.
-dojo._hasResource["dojo._base.array"] = true;
-dojo.require("dojo._base.lang");
-dojo.provide("dojo._base.array");
-
-(function(){
- var _getParts = function(arr, obj, cb){
- return [
- (typeof arr == "string") ? arr.split("") : arr,
- obj || dojo.global,
- // FIXME: cache the anonymous functions we create here?
- (typeof cb == "string") ? new Function("item", "index", "array", cb) : cb
- ];
- };
-
- var everyOrSome = function(/*Boolean*/every, /*Array|String*/arr, /*Function|String*/callback, /*Object?*/thisObject){
- var _p = _getParts(arr, thisObject, callback); arr = _p[0];
- for(var i=0,l=arr.length; i<l; ++i){
- var result = !!_p[2].call(_p[1], arr[i], i, arr);
- if(every ^ result){
- return result; // Boolean
- }
- }
- return every; // Boolean
- };
-
- dojo.mixin(dojo, {
- indexOf: function( /*Array*/ array,
- /*Object*/ value,
- /*Integer?*/ fromIndex,
- /*Boolean?*/ findLast){
- // summary:
- // locates the first index of the provided value in the
- // passed array. If the value is not found, -1 is returned.
- // description:
- // This method corresponds to the JavaScript 1.6 Array.indexOf method, with one difference: when
- // run over sparse arrays, the Dojo function invokes the callback for every index whereas JavaScript
- // 1.6's indexOf skips the holes in the sparse array.
- // For details on this method, see:
- // https://developer.mozilla.org/en/Core_JavaScript_1.5_Reference/Objects/Array/indexOf
-
- var step = 1, end = array.length || 0, i = 0;
- if(findLast){
- i = end - 1;
- step = end = -1;
- }
- if(fromIndex != undefined){ i = fromIndex; }
- if((findLast && i > end) || i < end){
- for(; i != end; i += step){
- if(array[i] == value){ return i; }
- }
- }
- return -1; // Number
- },
-
- lastIndexOf: function(/*Array*/array, /*Object*/value, /*Integer?*/fromIndex){
- // summary:
- // locates the last index of the provided value in the passed
- // array. If the value is not found, -1 is returned.
- // description:
- // This method corresponds to the JavaScript 1.6 Array.lastIndexOf method, with one difference: when
- // run over sparse arrays, the Dojo function invokes the callback for every index whereas JavaScript
- // 1.6's lastIndexOf skips the holes in the sparse array.
- // For details on this method, see:
- // https://developer.mozilla.org/en/Core_JavaScript_1.5_Reference/Objects/Array/lastIndexOf
- return dojo.indexOf(array, value, fromIndex, true); // Number
- },
-
- forEach: function(/*Array|String*/arr, /*Function|String*/callback, /*Object?*/thisObject){
- // summary:
- // for every item in arr, callback is invoked. Return values are ignored.
- // If you want to break out of the loop, consider using dojo.every() or dojo.some().
- // forEach does not allow breaking out of the loop over the items in arr.
- // arr:
- // the array to iterate over. If a string, operates on individual characters.
- // callback:
- // a function is invoked with three arguments: item, index, and array
- // thisObject:
- // may be used to scope the call to callback
- // description:
- // This function corresponds to the JavaScript 1.6 Array.forEach() method, with one difference: when
- // run over sparse arrays, this implemenation passes the "holes" in the sparse array to
- // the callback function with a value of undefined. JavaScript 1.6's forEach skips the holes in the sparse array.
- // For more details, see:
- // https://developer.mozilla.org/en/Core_JavaScript_1.5_Reference/Objects/Array/forEach
- // example:
- // | // log out all members of the array:
- // | dojo.forEach(
- // | [ "thinger", "blah", "howdy", 10 ],
- // | function(item){
- // | console.log(item);
- // | }
- // | );
- // example:
- // | // log out the members and their indexes
- // | dojo.forEach(
- // | [ "thinger", "blah", "howdy", 10 ],
- // | function(item, idx, arr){
- // | console.log(item, "at index:", idx);
- // | }
- // | );
- // example:
- // | // use a scoped object member as the callback
- // |
- // | var obj = {
- // | prefix: "logged via obj.callback:",
- // | callback: function(item){
- // | console.log(this.prefix, item);
- // | }
- // | };
- // |
- // | // specifying the scope function executes the callback in that scope
- // | dojo.forEach(
- // | [ "thinger", "blah", "howdy", 10 ],
- // | obj.callback,
- // | obj
- // | );
- // |
- // | // alternately, we can accomplish the same thing with dojo.hitch()
- // | dojo.forEach(
- // | [ "thinger", "blah", "howdy", 10 ],
- // | dojo.hitch(obj, "callback")
- // | );
-
- // match the behavior of the built-in forEach WRT empty arrs
- if(!arr || !arr.length){ return; }
-
- // FIXME: there are several ways of handilng thisObject. Is
- // dojo.global always the default context?
- var _p = _getParts(arr, thisObject, callback); arr = _p[0];
- for(var i=0,l=arr.length; i<l; ++i){
- _p[2].call(_p[1], arr[i], i, arr);
- }
- },
-
- every: function(/*Array|String*/arr, /*Function|String*/callback, /*Object?*/thisObject){
- // summary:
- // Determines whether or not every item in arr satisfies the
- // condition implemented by callback.
- // arr:
- // the array to iterate on. If a string, operates on individual characters.
- // callback:
- // a function is invoked with three arguments: item, index,
- // and array and returns true if the condition is met.
- // thisObject:
- // may be used to scope the call to callback
- // description:
- // This function corresponds to the JavaScript 1.6 Array.every() method, with one difference: when
- // run over sparse arrays, this implemenation passes the "holes" in the sparse array to
- // the callback function with a value of undefined. JavaScript 1.6's every skips the holes in the sparse array.
- // For more details, see:
- // https://developer.mozilla.org/en/Core_JavaScript_1.5_Reference/Objects/Array/every
- // example:
- // | // returns false
- // | dojo.every([1, 2, 3, 4], function(item){ return item>1; });
- // example:
- // | // returns true
- // | dojo.every([1, 2, 3, 4], function(item){ return item>0; });
- return everyOrSome(true, arr, callback, thisObject); // Boolean
- },
-
- some: function(/*Array|String*/arr, /*Function|String*/callback, /*Object?*/thisObject){
- // summary:
- // Determines whether or not any item in arr satisfies the
- // condition implemented by callback.
- // arr:
- // the array to iterate over. If a string, operates on individual characters.
- // callback:
- // a function is invoked with three arguments: item, index,
- // and array and returns true if the condition is met.
- // thisObject:
- // may be used to scope the call to callback
- // description:
- // This function corresponds to the JavaScript 1.6 Array.some() method, with one difference: when
- // run over sparse arrays, this implemenation passes the "holes" in the sparse array to
- // the callback function with a value of undefined. JavaScript 1.6's some skips the holes in the sparse array.
- // For more details, see:
- // https://developer.mozilla.org/en/Core_JavaScript_1.5_Reference/Objects/Array/some
- // example:
- // | // is true
- // | dojo.some([1, 2, 3, 4], function(item){ return item>1; });
- // example:
- // | // is false
- // | dojo.some([1, 2, 3, 4], function(item){ return item<1; });
- return everyOrSome(false, arr, callback, thisObject); // Boolean
- },
-
- map: function(/*Array|String*/arr, /*Function|String*/callback, /*Function?*/thisObject){
- // summary:
- // applies callback to each element of arr and returns
- // an Array with the results
- // arr:
- // the array to iterate on. If a string, operates on
- // individual characters.
- // callback:
- // a function is invoked with three arguments, (item, index,
- // array), and returns a value
- // thisObject:
- // may be used to scope the call to callback
- // description:
- // This function corresponds to the JavaScript 1.6 Array.map() method, with one difference: when
- // run over sparse arrays, this implemenation passes the "holes" in the sparse array to
- // the callback function with a value of undefined. JavaScript 1.6's map skips the holes in the sparse array.
- // For more details, see:
- // https://developer.mozilla.org/en/Core_JavaScript_1.5_Reference/Objects/Array/map
- // example:
- // | // returns [2, 3, 4, 5]
- // | dojo.map([1, 2, 3, 4], function(item){ return item+1 });
-
- var _p = _getParts(arr, thisObject, callback); arr = _p[0];
- var outArr = (arguments[3] ? (new arguments[3]()) : []);
- for(var i=0,l=arr.length; i<l; ++i){
- outArr.push(_p[2].call(_p[1], arr[i], i, arr));
- }
- return outArr; // Array
- },
-
- filter: function(/*Array*/arr, /*Function|String*/callback, /*Object?*/thisObject){
- // summary:
- // Returns a new Array with those items from arr that match the
- // condition implemented by callback.
- // arr:
- // the array to iterate over.
- // callback:
- // a function that is invoked with three arguments (item,
- // index, array). The return of this function is expected to
- // be a boolean which determines whether the passed-in item
- // will be included in the returned array.
- // thisObject:
- // may be used to scope the call to callback
- // description:
- // This function corresponds to the JavaScript 1.6 Array.filter() method, with one difference: when
- // run over sparse arrays, this implemenation passes the "holes" in the sparse array to
- // the callback function with a value of undefined. JavaScript 1.6's filter skips the holes in the sparse array.
- // For more details, see:
- // https://developer.mozilla.org/en/Core_JavaScript_1.5_Reference/Objects/Array/filter
- // example:
- // | // returns [2, 3, 4]
- // | dojo.filter([1, 2, 3, 4], function(item){ return item>1; });
-
- var _p = _getParts(arr, thisObject, callback); arr = _p[0];
- var outArr = [];
- for(var i=0,l=arr.length; i<l; ++i){
- if(_p[2].call(_p[1], arr[i], i, arr)){
- outArr.push(arr[i]);
- }
- }
- return outArr; // Array
- }
- });
-})();
-/*
-*/
-
-}
diff --git a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dojo/_base/browser.js b/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dojo/_base/browser.js
deleted file mode 100644
index 52e5f81..0000000
--- a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dojo/_base/browser.js
+++ /dev/null
@@ -1,29 +0,0 @@
-/*
- Copyright (c) 2004-2009, The Dojo Foundation All Rights Reserved.
- Available via Academic Free License >= 2.1 OR the modified BSD license.
- see: http://dojotoolkit.org/license for details
-*/
-
-
-if(!dojo._hasResource["dojo._base.browser"]){ //_hasResource checks added by build. Do not use _hasResource directly in your code.
-dojo._hasResource["dojo._base.browser"] = true;
-dojo.provide("dojo._base.browser");
-
-dojo.require("dojo._base.window");
-dojo.require("dojo._base.connect");
-dojo.require("dojo._base.event");
-dojo.require("dojo._base.html");
-dojo.require("dojo._base.NodeList");
-dojo.require("dojo._base.query");
-dojo.require("dojo._base.xhr");
-dojo.require("dojo._base.fx");
-
-//Need this to be the last code segment in base, so do not place any
-//dojo.requireIf calls in this file. Otherwise, due to how the build system
-//puts all requireIf dependencies after the current file, the require calls
-//could be called before all of base is defined.
-dojo.forEach(dojo.config.require, function(i){
- dojo["require"](i);
-});
-
-}
diff --git a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dojo/_base/connect.js b/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dojo/_base/connect.js
deleted file mode 100644
index 358410e..0000000
--- a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dojo/_base/connect.js
+++ /dev/null
@@ -1,310 +0,0 @@
-/*
- Copyright (c) 2004-2009, The Dojo Foundation All Rights Reserved.
- Available via Academic Free License >= 2.1 OR the modified BSD license.
- see: http://dojotoolkit.org/license for details
-*/
-
-
-if(!dojo._hasResource["dojo._base.connect"]){ //_hasResource checks added by build. Do not use _hasResource directly in your code.
-dojo._hasResource["dojo._base.connect"] = true;
-dojo.provide("dojo._base.connect");
-dojo.require("dojo._base.lang");
-
-// this file courtesy of the TurboAjax Group, licensed under a Dojo CLA
-
-// low-level delegation machinery
-dojo._listener = {
- // create a dispatcher function
- getDispatcher: function(){
- // following comments pulled out-of-line to prevent cloning them
- // in the returned function.
- // - indices (i) that are really in the array of listeners (ls) will
- // not be in Array.prototype. This is the 'sparse array' trick
- // that keeps us safe from libs that take liberties with built-in
- // objects
- // - listener is invoked with current scope (this)
- return function(){
- var ap=Array.prototype, c=arguments.callee, ls=c._listeners, t=c.target;
- // return value comes from original target function
- var r = t && t.apply(this, arguments);
- // make local copy of listener array so it is immutable during processing
- var lls;
- lls = [].concat(ls);
-
- // invoke listeners after target function
- for(var i in lls){
- if(!(i in ap)){
- lls[i].apply(this, arguments);
- }
- }
- // return value comes from original target function
- return r;
- }
- },
- // add a listener to an object
- add: function(/*Object*/ source, /*String*/ method, /*Function*/ listener){
- // Whenever 'method' is invoked, 'listener' will have the same scope.
- // Trying to supporting a context object for the listener led to
- // complexity.
- // Non trivial to provide 'once' functionality here
- // because listener could be the result of a dojo.hitch call,
- // in which case two references to the same hitch target would not
- // be equivalent.
- source = source || dojo.global;
- // The source method is either null, a dispatcher, or some other function
- var f = source[method];
- // Ensure a dispatcher
- if(!f||!f._listeners){
- var d = dojo._listener.getDispatcher();
- // original target function is special
- d.target = f;
- // dispatcher holds a list of listeners
- d._listeners = [];
- // redirect source to dispatcher
- f = source[method] = d;
- }
- // The contract is that a handle is returned that can
- // identify this listener for disconnect.
- //
- // The type of the handle is private. Here is it implemented as Integer.
- // DOM event code has this same contract but handle is Function
- // in non-IE browsers.
- //
- // We could have separate lists of before and after listeners.
- return f._listeners.push(listener) ; /*Handle*/
- },
- // remove a listener from an object
- remove: function(/*Object*/ source, /*String*/ method, /*Handle*/ handle){
- var f = (source||dojo.global)[method];
- // remember that handle is the index+1 (0 is not a valid handle)
- if(f && f._listeners && handle--){
- delete f._listeners[handle];
- }
- }
-};
-
-// Multiple delegation for arbitrary methods.
-
-// This unit knows nothing about DOM, but we include DOM aware documentation
-// and dontFix argument here to help the autodocs. Actual DOM aware code is in
-// event.js.
-
-dojo.connect = function(/*Object|null*/ obj,
- /*String*/ event,
- /*Object|null*/ context,
- /*String|Function*/ method,
- /*Boolean?*/ dontFix){
- // summary:
- // `dojo.connect` is the core event handling and delegation method in
- // Dojo. It allows one function to "listen in" on the execution of
- // any other, triggering the second whenever the first is called. Many
- // listeners may be attached to a function, and source functions may
- // be either regular function calls or DOM events.
- //
- // description:
- // Connects listeners to actions, so that after event fires, a
- // listener is called with the same arguments passed to the orginal
- // function.
- //
- // Since `dojo.connect` allows the source of events to be either a
- // "regular" JavaScript function or a DOM event, it provides a uniform
- // interface for listening to all the types of events that an
- // application is likely to deal with though a single, unified
- // interface. DOM programmers may want to think of it as
- // "addEventListener for everything and anything".
- //
- // When setting up a connection, the `event` parameter must be a
- // string that is the name of the method/event to be listened for. If
- // `obj` is null, `dojo.global` is assumed, meaning that connections
- // to global methods are supported but also that you may inadvertantly
- // connect to a global by passing an incorrect object name or invalid
- // reference.
- //
- // `dojo.connect` generally is forgiving. If you pass the name of a
- // function or method that does not yet exist on `obj`, connect will
- // not fail, but will instead set up a stub method. Similarly, null
- // arguments may simply be omitted such that fewer than 4 arguments
- // may be required to set up a connection See the examples for deails.
- //
- // The return value is a handle that is needed to
- // remove this connection with `dojo.disconnect`.
- //
- // obj:
- // The source object for the event function.
- // Defaults to `dojo.global` if null.
- // If obj is a DOM node, the connection is delegated
- // to the DOM event manager (unless dontFix is true).
- //
- // event:
- // String name of the event function in obj.
- // I.e. identifies a property `obj[event]`.
- //
- // context:
- // The object that method will receive as "this".
- //
- // If context is null and method is a function, then method
- // inherits the context of event.
- //
- // If method is a string then context must be the source
- // object object for method (context[method]). If context is null,
- // dojo.global is used.
- //
- // method:
- // A function reference, or name of a function in context.
- // The function identified by method fires after event does.
- // method receives the same arguments as the event.
- // See context argument comments for information on method's scope.
- //
- // dontFix:
- // If obj is a DOM node, set dontFix to true to prevent delegation
- // of this connection to the DOM event manager.
- //
- // example:
- // When obj.onchange(), do ui.update():
- // | dojo.connect(obj, "onchange", ui, "update");
- // | dojo.connect(obj, "onchange", ui, ui.update); // same
- //
- // example:
- // Using return value for disconnect:
- // | var link = dojo.connect(obj, "onchange", ui, "update");
- // | ...
- // | dojo.disconnect(link);
- //
- // example:
- // When onglobalevent executes, watcher.handler is invoked:
- // | dojo.connect(null, "onglobalevent", watcher, "handler");
- //
- // example:
- // When ob.onCustomEvent executes, customEventHandler is invoked:
- // | dojo.connect(ob, "onCustomEvent", null, "customEventHandler");
- // | dojo.connect(ob, "onCustomEvent", "customEventHandler"); // same
- //
- // example:
- // When ob.onCustomEvent executes, customEventHandler is invoked
- // with the same scope (this):
- // | dojo.connect(ob, "onCustomEvent", null, customEventHandler);
- // | dojo.connect(ob, "onCustomEvent", customEventHandler); // same
- //
- // example:
- // When globalEvent executes, globalHandler is invoked
- // with the same scope (this):
- // | dojo.connect(null, "globalEvent", null, globalHandler);
- // | dojo.connect("globalEvent", globalHandler); // same
-
- // normalize arguments
- var a=arguments, args=[], i=0;
- // if a[0] is a String, obj was ommited
- args.push(dojo.isString(a[0]) ? null : a[i++], a[i++]);
- // if the arg-after-next is a String or Function, context was NOT omitted
- var a1 = a[i+1];
- args.push(dojo.isString(a1)||dojo.isFunction(a1) ? a[i++] : null, a[i++]);
- // absorb any additional arguments
- for(var l=a.length; i<l; i++){ args.push(a[i]); }
- // do the actual work
- return dojo._connect.apply(this, args); /*Handle*/
-}
-
-// used by non-browser hostenvs. always overriden by event.js
-dojo._connect = function(obj, event, context, method){
- var l=dojo._listener, h=l.add(obj, event, dojo.hitch(context, method));
- return [obj, event, h, l]; // Handle
-}
-
-dojo.disconnect = function(/*Handle*/ handle){
- // summary:
- // Remove a link created by dojo.connect.
- // description:
- // Removes the connection between event and the method referenced by handle.
- // handle:
- // the return value of the dojo.connect call that created the connection.
- if(handle && handle[0] !== undefined){
- dojo._disconnect.apply(this, handle);
- // let's not keep this reference
- delete handle[0];
- }
-}
-
-dojo._disconnect = function(obj, event, handle, listener){
- listener.remove(obj, event, handle);
-}
-
-// topic publish/subscribe
-
-dojo._topics = {};
-
-dojo.subscribe = function(/*String*/ topic, /*Object|null*/ context, /*String|Function*/ method){
- // summary:
- // Attach a listener to a named topic. The listener function is invoked whenever the
- // named topic is published (see: dojo.publish).
- // Returns a handle which is needed to unsubscribe this listener.
- // context:
- // Scope in which method will be invoked, or null for default scope.
- // method:
- // The name of a function in context, or a function reference. This is the function that
- // is invoked when topic is published.
- // example:
- // | dojo.subscribe("alerts", null, function(caption, message){ alert(caption + "\n" + message); });
- // | dojo.publish("alerts", [ "read this", "hello world" ]);
-
- // support for 2 argument invocation (omitting context) depends on hitch
- return [topic, dojo._listener.add(dojo._topics, topic, dojo.hitch(context, method))]; /*Handle*/
-}
-
-dojo.unsubscribe = function(/*Handle*/ handle){
- // summary:
- // Remove a topic listener.
- // handle:
- // The handle returned from a call to subscribe.
- // example:
- // | var alerter = dojo.subscribe("alerts", null, function(caption, message){ alert(caption + "\n" + message); };
- // | ...
- // | dojo.unsubscribe(alerter);
- if(handle){
- dojo._listener.remove(dojo._topics, handle[0], handle[1]);
- }
-}
-
-dojo.publish = function(/*String*/ topic, /*Array*/ args){
- // summary:
- // Invoke all listener method subscribed to topic.
- // topic:
- // The name of the topic to publish.
- // args:
- // An array of arguments. The arguments will be applied
- // to each topic subscriber (as first class parameters, via apply).
- // example:
- // | dojo.subscribe("alerts", null, function(caption, message){ alert(caption + "\n" + message); };
- // | dojo.publish("alerts", [ "read this", "hello world" ]);
-
- // Note that args is an array, which is more efficient vs variable length
- // argument list. Ideally, var args would be implemented via Array
- // throughout the APIs.
- var f = dojo._topics[topic];
- if(f){
- f.apply(this, args||[]);
- }
-}
-
-dojo.connectPublisher = function( /*String*/ topic,
- /*Object|null*/ obj,
- /*String*/ event){
- // summary:
- // Ensure that everytime obj.event() is called, a message is published
- // on the topic. Returns a handle which can be passed to
- // dojo.disconnect() to disable subsequent automatic publication on
- // the topic.
- // topic:
- // The name of the topic to publish.
- // obj:
- // The source object for the event function. Defaults to dojo.global
- // if null.
- // event:
- // The name of the event function in obj.
- // I.e. identifies a property obj[event].
- // example:
- // | dojo.connectPublisher("/ajax/start", dojo, "xhrGet");
- var pf = function(){ dojo.publish(topic, arguments); }
- return (event) ? dojo.connect(obj, event, pf) : dojo.connect(obj, pf); //Handle
-};
-
-}
diff --git a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dojo/_base/declare.js b/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dojo/_base/declare.js
deleted file mode 100644
index dbaa5fd..0000000
--- a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dojo/_base/declare.js
+++ /dev/null
@@ -1,984 +0,0 @@
-/*
- Copyright (c) 2004-2009, The Dojo Foundation All Rights Reserved.
- Available via Academic Free License >= 2.1 OR the modified BSD license.
- see: http://dojotoolkit.org/license for details
-*/
-
-
-if(!dojo._hasResource["dojo._base.declare"]){ //_hasResource checks added by build. Do not use _hasResource directly in your code.
-dojo._hasResource["dojo._base.declare"] = true;
-dojo.provide("dojo._base.declare");
-
-dojo.require("dojo._base.lang");
-dojo.require("dojo._base.array");
-
-(function(){
- var d = dojo, mix = d._mixin, op = Object.prototype, opts = op.toString,
- xtor = new Function, counter = 0, cname = "constructor";
-
- function err(msg){ throw new Error("declare: " + msg); }
-
- // C3 Method Resolution Order (see http://www.python.org/download/releases/2.3/mro/)
- function c3mro(bases){
- var result = [], roots = [{cls: 0, refs: []}], nameMap = {}, clsCount = 1,
- l = bases.length, i = 0, j, lin, base, top, proto, rec, name, refs;
-
- // build a list of bases naming them if needed
- for(; i < l; ++i){
- base = bases[i];
- if(!base){
- err("mixin #" + i + " is null");
- }
- lin = base._meta ? base._meta.bases : [base];
- top = 0;
- // add bases to the name map
- for(j = lin.length - 1; j >= 0; --j){
- proto = lin[j].prototype;
- if(!proto.hasOwnProperty("declaredClass")){
- proto.declaredClass = "uniqName_" + (counter++);
- }
- name = proto.declaredClass;
- if(!nameMap.hasOwnProperty(name)){
- nameMap[name] = {count: 0, refs: [], cls: lin[j]};
- ++clsCount;
- }
- rec = nameMap[name];
- if(top && top !== rec){
- rec.refs.push(top);
- ++top.count;
- }
- top = rec;
- }
- ++top.count;
- roots[0].refs.push(top);
- }
-
- // remove classes without external references recursively
- while(roots.length){
- top = roots.pop();
- result.push(top.cls);
- --clsCount;
- // optimization: follow a single-linked chain
- while(refs = top.refs, refs.length == 1){
- top = refs[0];
- if(!top || --top.count){
- // branch or end of chain => do not end to roots
- top = 0;
- break;
- }
- result.push(top.cls);
- --clsCount;
- }
- if(top){
- // branch
- for(i = 0, l = refs.length; i < l; ++i){
- top = refs[i];
- if(!--top.count){
- roots.push(top);
- }
- }
- }
- }
- if(clsCount){
- err("can't build consistent linearization");
- }
-
- // calculate the superclass offset
- base = bases[0];
- result[0] = base ?
- base._meta && base === result[result.length - base._meta.bases.length] ?
- base._meta.bases.length : 1 : 0;
-
- return result;
- }
-
- function inherited(args, a, f){
- var name, chains, bases, caller, meta, base, proto, opf, pos,
- cache = this._inherited = this._inherited || {};
-
- // crack arguments
- if(typeof args == "string"){
- name = args;
- args = a;
- a = f;
- }
- f = 0;
-
- caller = args.callee;
- name = name || caller.nom;
- if(!name){
- err("can't deduce a name to call inherited()");
- }
-
- meta = this.constructor._meta;
- bases = meta.bases;
-
- pos = cache.p;
- if(name != cname){
- // method
- if(cache.c !== caller){
- // cache bust
- pos = 0;
- base = bases[0];
- meta = base._meta;
- if(meta.hidden[name] !== caller){
- // error detection
- chains = meta.chains;
- if(chains && typeof chains[name] == "string"){
- err("calling chained method with inherited: " + name);
- }
- // find caller
- do{
- meta = base._meta;
- proto = base.prototype;
- if(meta && (proto[name] === caller && proto.hasOwnProperty(name) || meta.hidden[name] === caller)){
- break;
- }
- }while(base = bases[++pos]); // intentional assignment
- pos = base ? pos : -1;
- }
- }
- // find next
- base = bases[++pos];
- if(base){
- proto = base.prototype;
- if(base._meta && proto.hasOwnProperty(name)){
- f = proto[name];
- }else{
- opf = op[name];
- do{
- proto = base.prototype;
- f = proto[name];
- if(f && (base._meta ? proto.hasOwnProperty(name) : f !== opf)){
- break;
- }
- }while(base = bases[++pos]); // intentional assignment
- }
- }
- f = base && f || op[name];
- }else{
- // constructor
- if(cache.c !== caller){
- // cache bust
- pos = 0;
- meta = bases[0]._meta;
- if(meta && meta.ctor !== caller){
- // error detection
- chains = meta.chains;
- if(!chains || chains.constructor !== "manual"){
- err("calling chained constructor with inherited");
- }
- // find caller
- while(base = bases[++pos]){ // intentional assignment
- meta = base._meta;
- if(meta && meta.ctor === caller){
- break;
- }
- };
- pos = base ? pos : -1;
- }
- }
- // find next
- while(base = bases[++pos]){ // intentional assignment
- meta = base._meta;
- f = meta ? meta.ctor : base;
- if(f){
- break;
- }
- }
- f = base && f;
- }
-
- // cache the found super method
- cache.c = f;
- cache.p = pos;
-
- // now we have the result
- if(f){
- return a === true ? f : f.apply(this, a || args);
- }
- // intentionally if a super method was not found
- }
-
- function getInherited(name, args){
- if(typeof name == "string"){
- return this.inherited(name, args, true);
- }
- return this.inherited(name, true);
- }
-
- // emulation of "instanceof"
- function isInstanceOf(cls){
- var bases = this.constructor._meta.bases;
- for(var i = 0, l = bases.length; i < l; ++i){
- if(bases[i] === cls){
- return true;
- }
- }
- return this instanceof cls;
- }
-
- // imlementation of safe mixin function
- function safeMixin(target, source){
- var name, t, i = 0, l = d._extraNames.length;
- // add props adding metadata for incoming functions skipping a constructor
- for(name in source){
- t = source[name];
- if((t !== op[name] || !(name in op)) && name != cname){
- if(opts.call(t) == "[object Function]"){
- // non-trivial function method => attach its name
- t.nom = name;
- }
- target[name] = t;
- }
- }
- // process unenumerable methods on IE
- for(; i < l; ++i){
- name = d._extraNames[i];
- t = source[name];
- if((t !== op[name] || !(name in op)) && name != cname){
- if(opts.call(t) == "[object Function]"){
- // non-trivial function method => attach its name
- t.nom = name;
- }
- target[name] = t;
- }
- }
- return target;
- }
-
- function extend(source){
- safeMixin(this.prototype, source);
- return this;
- }
-
- // chained constructor compatible with the legacy dojo.declare()
- function chainedConstructor(bases, ctorSpecial){
- return function(){
- var a = arguments, args = a, a0 = a[0], f, i, m,
- l = bases.length, preArgs;
- //this._inherited = {};
- // perform the shaman's rituals of the original dojo.declare()
- // 1) call two types of the preamble
- if(ctorSpecial && (a0 && a0.preamble || this.preamble)){
- // full blown ritual
- preArgs = new Array(bases.length);
- // prepare parameters
- preArgs[0] = a;
- for(i = 0;;){
- // process the preamble of the 1st argument
- a0 = a[0];
- if(a0){
- f = a0.preamble;
- if(f){
- a = f.apply(this, a) || a;
- }
- }
- // process the preamble of this class
- f = bases[i].prototype;
- f = f.hasOwnProperty("preamble") && f.preamble;
- if(f){
- a = f.apply(this, a) || a;
- }
- // one pecularity of the preamble:
- // it is called if it is not needed,
- // e.g., there is no constructor to call
- // let's watch for the last constructor
- // (see ticket #9795)
- if(++i == l){
- break;
- }
- preArgs[i] = a;
- }
- }
- // 2) call all non-trivial constructors using prepared arguments
- for(i = l - 1; i >= 0; --i){
- f = bases[i];
- m = f._meta;
- f = m ? m.ctor : f;
- if(f){
- f.apply(this, preArgs ? preArgs[i] : a);
- }
- }
- // 3) continue the original ritual: call the postscript
- f = this.postscript;
- if(f){
- f.apply(this, args);
- }
- };
- }
-
-
- // chained constructor compatible with the legacy dojo.declare()
- function singleConstructor(ctor, ctorSpecial){
- return function(){
- var a = arguments, t = a, a0 = a[0], f;
- //this._inherited = {};
- // perform the shaman's rituals of the original dojo.declare()
- // 1) call two types of the preamble
- if(ctorSpecial){
- // full blown ritual
- if(a0){
- // process the preamble of the 1st argument
- f = a0.preamble;
- if(f){
- t = f.apply(this, t) || t;
- }
- }
- f = this.preamble;
- if(f){
- // process the preamble of this class
- f.apply(this, t);
- // one pecularity of the preamble:
- // it is called even if it is not needed,
- // e.g., there is no constructor to call
- // let's watch for the last constructor
- // (see ticket #9795)
- }
- }
- // 2) call a constructor
- if(ctor){
- ctor.apply(this, a);
- }
- // 3) continue the original ritual: call the postscript
- f = this.postscript;
- if(f){
- f.apply(this, a);
- }
- };
- }
-
- // plain vanilla constructor (can use inherited() to call its base constructor)
- function simpleConstructor(bases){
- return function(){
- var a = arguments, i = 0, f;
- //this._inherited = {};
- // perform the shaman's rituals of the original dojo.declare()
- // 1) do not call the preamble
- // 2) call the top constructor (it can use this.inherited())
- for(; f = bases[i]; ++i){ // intentional assignment
- m = f._meta;
- f = m ? m.ctor : f;
- if(f){
- f.apply(this, a);
- break;
- }
- }
- // 3) call the postscript
- f = this.postscript;
- if(f){
- f.apply(this, a);
- }
- };
- }
-
- function chain(name, bases, reversed){
- return function(){
- var b, m, f, i = 0, step = 1;
- if(reversed){
- i = bases.length - 1;
- step = -1;
- }
- for(; b = bases[i]; i += step){ // intentional assignment
- m = b._meta;
- f = (m ? m.hidden : b.prototype)[name];
- if(f){
- f.apply(this, arguments);
- }
- }
- };
- }
-
- d.declare = function(className, superclass, props){
- var proto, i, t, ctor, name, bases, chains, mixins = 1, parents = superclass;
-
- // crack parameters
- if(typeof className != "string"){
- props = superclass;
- superclass = className;
- className = "";
- }
- props = props || {};
-
- // build a prototype
- if(opts.call(superclass) == "[object Array]"){
- // C3 MRO
- bases = c3mro(superclass);
- t = bases[0];
- mixins = bases.length - t;
- superclass = bases[mixins];
- }else{
- bases = [0];
- if(superclass){
- t = superclass._meta;
- bases = bases.concat(t ? t.bases : superclass);
- }
- }
- if(superclass){
- for(i = mixins - 1;; --i){
- // delegation
- xtor.prototype = superclass.prototype;
- proto = new xtor;
- if(!i){
- // stop if nothing to add (the last base)
- break;
- }
- // mix in properties
- t = bases[i];
- mix(proto, t._meta ? t._meta.hidden : t.prototype);
- // chain in new constructor
- ctor = new Function;
- ctor.superclass = superclass;
- ctor.prototype = proto;
- superclass = proto.constructor = ctor;
- }
- }else{
- proto = {};
- }
- // add all properties
- safeMixin(proto, props);
- // add constructor
- t = props.constructor;
- if(t !== op.constructor){
- t.nom = cname;
- proto.constructor = t;
- }
- xtor.prototype = 0; // cleanup
-
- // collect chains and flags
- for(i = mixins - 1; i; --i){ // intentional assignment
- t = bases[i]._meta;
- if(t && t.chains){
- chains = mix(chains || {}, t.chains);
- }
- }
- if(proto["-chains-"]){
- chains = mix(chains || {}, proto["-chains-"]);
- }
-
- // build ctor
- t = !chains || !chains.hasOwnProperty(cname);
- bases[0] = ctor = (chains && chains.constructor === "manual") ? simpleConstructor(bases) :
- (bases.length == 1 ? singleConstructor(props.constructor, t) : chainedConstructor(bases, t));
-
- // add meta information to the constructor
- ctor._meta = {bases: bases, hidden: props, chains: chains,
- parents: parents, ctor: props.constructor};
- ctor.superclass = superclass && superclass.prototype;
- ctor.extend = extend;
- ctor.prototype = proto;
- proto.constructor = ctor;
-
- // add "standard" methods to the ptototype
- proto.getInherited = getInherited;
- proto.inherited = inherited;
- proto.isInstanceOf = isInstanceOf;
-
- // add name if specified
- if(className){
- proto.declaredClass = className;
- d.setObject(className, ctor);
- }
-
- // build chains and add them to the prototype
- if(chains){
- for(name in chains){
- if(proto[name] && typeof chains[name] == "string" && name != cname){
- t = proto[name] = chain(name, bases, chains[name] === "after");
- t.nom = name;
- }
- }
- }
- // chained methods do not return values
- // no need to chain "invisible" functions
-
- return ctor; // Function
- };
-
- d.safeMixin = safeMixin;
-
- /*=====
- dojo.declare = function(className, superclass, props){
- // summary:
- // Create a feature-rich constructor from compact notation.
- // className: String?:
- // The optional name of the constructor (loosely, a "class")
- // stored in the "declaredClass" property in the created prototype.
- // It will be used as a global name for a created constructor.
- // superclass: Function|Function[]:
- // May be null, a Function, or an Array of Functions. This argument
- // specifies a list of bases (the left-most one is the most deepest
- // base).
- // props: Object:
- // An object whose properties are copied to the created prototype.
- // Add an instance-initialization function by making it a property
- // named "constructor".
- // returns:
- // New constructor function.
- // description:
- // Create a constructor using a compact notation for inheritance and
- // prototype extension.
- //
- // Mixin ancestors provide a type of multiple inheritance.
- // Prototypes of mixin ancestors are copied to the new class:
- // changes to mixin prototypes will not affect classes to which
- // they have been mixed in.
- //
- // Ancestors can be compound classes created by this version of
- // dojo.declare. In complex cases all base classes are going to be
- // linearized according to C3 MRO algorithm
- // (see http://www.python.org/download/releases/2.3/mro/ for more
- // details).
- //
- // "className" is cached in "declaredClass" property of the new class,
- // if it was supplied. The immediate super class will be cached in
- // "superclass" property of the new class.
- //
- // Methods in "props" will be copied and modified: "nom" property
- // (the declared name of the method) will be added to all copied
- // functions to help identify them for the internal machinery. Be
- // very careful, while reusing methods: if you use the same
- // function under different names, it can produce errors in some
- // cases.
- //
- // It is possible to use constructors created "manually" (without
- // dojo.declare) as bases. They will be called as usual during the
- // creation of an instance, their methods will be chained, and even
- // called by "this.inherited()".
- //
- // Special property "-chains-" governs how to chain methods. It is
- // a dictionary, which uses method names as keys, and hint strings
- // as values. If a hint string is "after", this method will be
- // called after methods of its base classes. If a hint string is
- // "before", this method will be called before methods of its base
- // classes.
- //
- // If "constructor" is not mentioned in "-chains-" property, it will
- // be chained using the legacy mode: using "after" chaining,
- // calling preamble() method before each constructor, if available,
- // and calling postscript() after all constructors were executed.
- // If the hint is "after", it is chained as a regular method, but
- // postscript() will be called after the chain of constructors.
- // "constructor" cannot be chained "before", but it allows
- // a special hint string: "manual", which means that constructors
- // are not going to be chained in any way, and programmer will call
- // them manually using this.inherited(). In the latter case
- // postscript() will be called after the construction.
- //
- // All chaining hints are "inherited" from base classes and
- // potentially can be overridden. Be very careful when overriding
- // hints! Make sure that all chained methods can work in a proposed
- // manner of chaining.
- //
- // Once a method was chained, it is impossible to unchain it. The
- // only exception is "constructor". You don't need to define a
- // method in order to supply a chaining hint.
- //
- // If a method is chained, it cannot use this.inherited() because
- // all other methods in the hierarchy will be called automatically.
- //
- // Usually constructors and initializers of any kind are chained
- // using "after" and destructors of any kind are chained as
- // "before". Note that chaining assumes that chained methods do not
- // return any value: any returned value will be discarded.
- //
- // example:
- // | dojo.declare("my.classes.bar", my.classes.foo, {
- // | // properties to be added to the class prototype
- // | someValue: 2,
- // | // initialization function
- // | constructor: function(){
- // | this.myComplicatedObject = new ReallyComplicatedObject();
- // | },
- // | // other functions
- // | someMethod: function(){
- // | doStuff();
- // | }
- // | });
- //
- // example:
- // | var MyBase = dojo.declare(null, {
- // | // constructor, properties, and methods go here
- // | // ...
- // | });
- // | var MyClass1 = dojo.declare(MyBase, {
- // | // constructor, properties, and methods go here
- // | // ...
- // | });
- // | var MyClass2 = dojo.declare(MyBase, {
- // | // constructor, properties, and methods go here
- // | // ...
- // | });
- // | var MyDiamond = dojo.declare([MyClass1, MyClass2], {
- // | // constructor, properties, and methods go here
- // | // ...
- // | });
- //
- // example:
- // | var F = function(){ console.log("raw constructor"); };
- // | F.prototype.method = function(){
- // | console.log("raw method");
- // | };
- // | var A = dojo.declare(F, {
- // | constructor: function(){
- // | console.log("A.constructor");
- // | },
- // | method: function(){
- // | console.log("before calling F.method...");
- // | this.inherited(arguments);
- // | console.log("...back in A");
- // | }
- // | });
- // | new A().method();
- // | // will print:
- // | // raw constructor
- // | // A.constructor
- // | // before calling F.method...
- // | // raw method
- // | // ...back in A
- //
- // example:
- // | var A = dojo.declare(null, {
- // | "-chains-": {
- // | destroy: "before"
- // | }
- // | });
- // | var B = dojo.declare(A, {
- // | constructor: function(){
- // | console.log("B.constructor");
- // | },
- // | destroy: function(){
- // | console.log("B.destroy");
- // | }
- // | });
- // | var C = dojo.declare(B, {
- // | constructor: function(){
- // | console.log("C.constructor");
- // | },
- // | destroy: function(){
- // | console.log("C.destroy");
- // | }
- // | });
- // | new C().destroy();
- // | // prints:
- // | // B.constructor
- // | // C.constructor
- // | // C.destroy
- // | // B.destroy
- //
- // example:
- // | var A = dojo.declare(null, {
- // | "-chains-": {
- // | constructor: "manual"
- // | }
- // | });
- // | var B = dojo.declare(A, {
- // | constructor: function(){
- // | // ...
- // | // call the base constructor with new parameters
- // | this.inherited(arguments, [1, 2, 3]);
- // | // ...
- // | }
- // | });
- //
- // example:
- // | var A = dojo.declare(null, {
- // | "-chains-": {
- // | m1: "before"
- // | },
- // | m1: function(){
- // | console.log("A.m1");
- // | },
- // | m2: function(){
- // | console.log("A.m2");
- // | }
- // | });
- // | var B = dojo.declare(A, {
- // | "-chains-": {
- // | m2: "after"
- // | },
- // | m1: function(){
- // | console.log("B.m1");
- // | },
- // | m2: function(){
- // | console.log("B.m2");
- // | }
- // | });
- // | var x = new B();
- // | x.m1();
- // | // prints:
- // | // B.m1
- // | // A.m1
- // | x.m2();
- // | // prints:
- // | // A.m2
- // | // B.m2
- return new Function(); // Function
- };
- =====*/
-
- /*=====
- dojo.safeMixin = function(target, source){
- // summary:
- // Mix in properties skipping a constructor and decorating functions
- // like it is done by dojo.declare.
- // target: Object
- // Target object to accept new properties.
- // source: Object
- // Source object for new properties.
- // description:
- // This function is used to mix in properties like dojo._mixin does,
- // but it skips a constructor property and decorates functions like
- // dojo.declare does.
- //
- // It is meant to be used with classes and objects produced with
- // dojo.declare. Functions mixed in with dojo.safeMixin can use
- // this.inherited() like normal methods.
- //
- // This function is used to implement extend() method of a constructor
- // produced with dojo.declare().
- //
- // example:
- // | var A = dojo.declare(null, {
- // | m1: function(){
- // | console.log("A.m1");
- // | },
- // | m2: function(){
- // | console.log("A.m2");
- // | }
- // | });
- // | var B = dojo.declare(A, {
- // | m1: function(){
- // | this.inherited(arguments);
- // | console.log("B.m1");
- // | }
- // | });
- // | B.extend({
- // | m2: function(){
- // | this.inherited(arguments);
- // | console.log("B.m2");
- // | }
- // | });
- // | var x = new B();
- // | dojo.safeMixin(x, {
- // | m1: function(){
- // | this.inherited(arguments);
- // | console.log("X.m1");
- // | },
- // | m2: function(){
- // | this.inherited(arguments);
- // | console.log("X.m2");
- // | }
- // | });
- // | x.m2();
- // | // prints:
- // | // A.m1
- // | // B.m1
- // | // X.m1
- };
- =====*/
-
- /*=====
- Object.inherited = function(name, args, newArgs){
- // summary:
- // Calls a super method.
- // name: String?
- // The optional method name. Should be the same as the caller's
- // name. Usually "name" is specified in complex dynamic cases, when
- // the calling method was dynamically added, undecorated by
- // dojo.declare, and it cannot be determined.
- // args: Arguments
- // The caller supply this argument, which should be the original
- // "arguments".
- // newArgs: Object?
- // If "true", the found function will be returned without
- // executing it.
- // If Array, it will be used to call a super method. Otherwise
- // "args" will be used.
- // returns:
- // Whatever is returned by a super method, or a super method itself,
- // if "true" was specified as newArgs.
- // description:
- // This method is used inside method of classes produced with
- // dojo.declare to call a super method (next in the chain). It is
- // used for manually controlled chaining. Consider using the regular
- // chaining, because it is faster. Use "this.inherited()" only in
- // complex cases.
- //
- // This method cannot me called from automatically chained
- // constructors including the case of a special (legacy)
- // constructor chaining. It cannot be called from chained methods.
- //
- // If "this.inherited()" cannot find the next-in-chain method, it
- // does nothing and returns "undefined". The last method in chain
- // can be a default method implemented in Object, which will be
- // called last.
- //
- // If "name" is specified, it is assumed that the method that
- // received "args" is the parent method for this call. It is looked
- // up in the chain list and if it is found the next-in-chain method
- // is called. If it is not found, the first-in-chain method is
- // called.
- //
- // If "name" is not specified, it will be derived from the calling
- // method (using a methoid property "nom").
- //
- // example:
- // | var B = dojo.declare(A, {
- // | method1: function(a, b, c){
- // | this.inherited(arguments);
- // | },
- // | method2: function(a, b){
- // | return this.inherited(arguments, [a + b]);
- // | }
- // | });
- // | // next method is not in the chain list because it is added
- // | // manually after the class was created.
- // | B.prototype.method3 = function(){
- // | console.log("This is a dynamically-added method.");
- // | this.inherited("method3", arguments);
- // | };
- // example:
- // | var B = dojo.declare(A, {
- // | method: function(a, b){
- // | var super = this.inherited(arguments, true);
- // | // ...
- // | if(!super){
- // | console.log("there is no super method");
- // | return 0;
- // | }
- // | return super.apply(this, arguments);
- // | }
- // | });
- return {}; // Object
- }
- =====*/
-
- /*=====
- Object.getInherited = function(name, args){
- // summary:
- // Returns a super method.
- // name: String?
- // The optional method name. Should be the same as the caller's
- // name. Usually "name" is specified in complex dynamic cases, when
- // the calling method was dynamically added, undecorated by
- // dojo.declare, and it cannot be determined.
- // args: Arguments
- // The caller supply this argument, which should be the original
- // "arguments".
- // returns:
- // Returns a super method (Function) or "undefined".
- // description:
- // This method is a convenience method for "this.inherited()".
- // It uses the same algorithm but instead of executing a super
- // method, it returns it, or "undefined" if not found.
- //
- // example:
- // | var B = dojo.declare(A, {
- // | method: function(a, b){
- // | var super = this.getInherited(arguments);
- // | // ...
- // | if(!super){
- // | console.log("there is no super method");
- // | return 0;
- // | }
- // | return super.apply(this, arguments);
- // | }
- // | });
- return {}; // Object
- }
- =====*/
-
- /*=====
- Object.isInstanceOf = function(cls){
- // summary:
- // Checks the inheritance cahin to see if it is inherited from this
- // class.
- // cls: Function
- // Class constructor.
- // returns:
- // "true", if this object is inherited from this class, "false"
- // otherwise.
- // description:
- // This method is used with instances of classes produced with
- // dojo.declare to determine of they support a certain interface or
- // not. It models "instanceof" operator.
- //
- // example:
- // | var A = dojo.declare(null, {
- // | // constructor, properties, and methods go here
- // | // ...
- // | });
- // | var B = dojo.declare(null, {
- // | // constructor, properties, and methods go here
- // | // ...
- // | });
- // | var C = dojo.declare([A, B], {
- // | // constructor, properties, and methods go here
- // | // ...
- // | });
- // | var D = dojo.declare(A, {
- // | // constructor, properties, and methods go here
- // | // ...
- // | });
- // |
- // | var a = new A(), b = new B(), c = new C(), d = new D();
- // |
- // | console.log(a.isInstanceOf(A)); // true
- // | console.log(b.isInstanceOf(A)); // false
- // | console.log(c.isInstanceOf(A)); // true
- // | console.log(d.isInstanceOf(A)); // true
- // |
- // | console.log(a.isInstanceOf(B)); // false
- // | console.log(b.isInstanceOf(B)); // true
- // | console.log(c.isInstanceOf(B)); // true
- // | console.log(d.isInstanceOf(B)); // false
- // |
- // | console.log(a.isInstanceOf(C)); // false
- // | console.log(b.isInstanceOf(C)); // false
- // | console.log(c.isInstanceOf(C)); // true
- // | console.log(d.isInstanceOf(C)); // false
- // |
- // | console.log(a.isInstanceOf(D)); // false
- // | console.log(b.isInstanceOf(D)); // false
- // | console.log(c.isInstanceOf(D)); // false
- // | console.log(d.isInstanceOf(D)); // true
- return {}; // Object
- }
- =====*/
-
- /*=====
- Object.extend = function(source){
- // summary:
- // Adds all properties and methods of source to constructor's
- // prototype, making them available to all instances created with
- // constructor. This method is specific to constructors created with
- // dojo.declare.
- // source: Object
- // Source object which properties are going to be copied to the
- // constructor's prototype.
- // description:
- // Adds source properties to the constructor's prototype. It can
- // override existing properties.
- //
- // This method is similar to dojo.extend function, but it is specific
- // to constructors produced by dojo.declare. It is implemented
- // using dojo.safeMixin, and it skips a constructor property,
- // and properly decorates copied functions.
- //
- // example:
- // | var A = dojo.declare(null, {
- // | m1: function(){},
- // | s1: "Popokatepetl"
- // | });
- // | A.extend({
- // | m1: function(){},
- // | m2: function(){},
- // | f1: true,
- // | d1: 42
- // | });
- };
- =====*/
-})();
-
-}
diff --git a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dojo/_base/event.js b/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dojo/_base/event.js
deleted file mode 100644
index 0f452f4..0000000
--- a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dojo/_base/event.js
+++ /dev/null
@@ -1,645 +0,0 @@
-/*
- Copyright (c) 2004-2009, The Dojo Foundation All Rights Reserved.
- Available via Academic Free License >= 2.1 OR the modified BSD license.
- see: http://dojotoolkit.org/license for details
-*/
-
-
-if(!dojo._hasResource["dojo._base.event"]){ //_hasResource checks added by build. Do not use _hasResource directly in your code.
-dojo._hasResource["dojo._base.event"] = true;
-dojo.provide("dojo._base.event");
-dojo.require("dojo._base.connect");
-
-// this file courtesy of the TurboAjax Group, licensed under a Dojo CLA
-
-(function(){
- // DOM event listener machinery
- var del = (dojo._event_listener = {
- add: function(/*DOMNode*/ node, /*String*/ name, /*Function*/ fp){
- if(!node){return;}
- name = del._normalizeEventName(name);
- fp = del._fixCallback(name, fp);
- var oname = name;
- if(
- !dojo.isIE &&
- (name == "mouseenter" || name == "mouseleave")
- ){
- var ofp = fp;
- //oname = name;
- name = (name == "mouseenter") ? "mouseover" : "mouseout";
- fp = function(e){
- if(!dojo.isDescendant(e.relatedTarget, node)){
- // e.type = oname; // FIXME: doesn't take? SJM: event.type is generally immutable.
- return ofp.call(this, e);
- }
- }
- }
- node.addEventListener(name, fp, false);
- return fp; /*Handle*/
- },
- remove: function(/*DOMNode*/ node, /*String*/ event, /*Handle*/ handle){
- // summary:
- // clobbers the listener from the node
- // node:
- // DOM node to attach the event to
- // event:
- // the name of the handler to remove the function from
- // handle:
- // the handle returned from add
- if(node){
- event = del._normalizeEventName(event);
- if(!dojo.isIE && (event == "mouseenter" || event == "mouseleave")){
- event = (event == "mouseenter") ? "mouseover" : "mouseout";
- }
-
- node.removeEventListener(event, handle, false);
- }
- },
- _normalizeEventName: function(/*String*/ name){
- // Generally, name should be lower case, unless it is special
- // somehow (e.g. a Mozilla DOM event).
- // Remove 'on'.
- return name.slice(0,2) =="on" ? name.slice(2) : name;
- },
- _fixCallback: function(/*String*/ name, fp){
- // By default, we only invoke _fixEvent for 'keypress'
- // If code is added to _fixEvent for other events, we have
- // to revisit this optimization.
- // This also applies to _fixEvent overrides for Safari and Opera
- // below.
- return name != "keypress" ? fp : function(e){ return fp.call(this, del._fixEvent(e, this)); };
- },
- _fixEvent: function(evt, sender){
- // _fixCallback only attaches us to keypress.
- // Switch on evt.type anyway because we might
- // be called directly from dojo.fixEvent.
- switch(evt.type){
- case "keypress":
- del._setKeyChar(evt);
- break;
- }
- return evt;
- },
- _setKeyChar: function(evt){
- evt.keyChar = evt.charCode ? String.fromCharCode(evt.charCode) : '';
- evt.charOrCode = evt.keyChar || evt.keyCode;
- },
- // For IE and Safari: some ctrl-key combinations (mostly w/punctuation) do not emit a char code in IE
- // we map those virtual key codes to ascii here
- // not valid for all (non-US) keyboards, so maybe we shouldn't bother
- _punctMap: {
- 106:42,
- 111:47,
- 186:59,
- 187:43,
- 188:44,
- 189:45,
- 190:46,
- 191:47,
- 192:96,
- 219:91,
- 220:92,
- 221:93,
- 222:39
- }
- });
-
- // DOM events
-
- dojo.fixEvent = function(/*Event*/ evt, /*DOMNode*/ sender){
- // summary:
- // normalizes properties on the event object including event
- // bubbling methods, keystroke normalization, and x/y positions
- // evt: Event
- // native event object
- // sender: DOMNode
- // node to treat as "currentTarget"
- return del._fixEvent(evt, sender);
- }
-
- dojo.stopEvent = function(/*Event*/ evt){
- // summary:
- // prevents propagation and clobbers the default action of the
- // passed event
- // evt: Event
- // The event object. If omitted, window.event is used on IE.
- evt.preventDefault();
- evt.stopPropagation();
- // NOTE: below, this method is overridden for IE
- }
-
- // the default listener to use on dontFix nodes, overriden for IE
- var node_listener = dojo._listener;
-
- // Unify connect and event listeners
- dojo._connect = function(obj, event, context, method, dontFix){
- // FIXME: need a more strict test
- var isNode = obj && (obj.nodeType||obj.attachEvent||obj.addEventListener);
- // choose one of three listener options: raw (connect.js), DOM event on a Node, custom event on a Node
- // we need the third option to provide leak prevention on broken browsers (IE)
- var lid = isNode ? (dontFix ? 2 : 1) : 0, l = [dojo._listener, del, node_listener][lid];
- // create a listener
- var h = l.add(obj, event, dojo.hitch(context, method));
- // formerly, the disconnect package contained "l" directly, but if client code
- // leaks the disconnect package (by connecting it to a node), referencing "l"
- // compounds the problem.
- // instead we return a listener id, which requires custom _disconnect below.
- // return disconnect package
- return [ obj, event, h, lid ];
- }
-
- dojo._disconnect = function(obj, event, handle, listener){
- ([dojo._listener, del, node_listener][listener]).remove(obj, event, handle);
- }
-
- // Constants
-
- // Public: client code should test
- // keyCode against these named constants, as the
- // actual codes can vary by browser.
- dojo.keys = {
- // summary:
- // Definitions for common key values
- BACKSPACE: 8,
- TAB: 9,
- CLEAR: 12,
- ENTER: 13,
- SHIFT: 16,
- CTRL: 17,
- ALT: 18,
- META: dojo.isSafari ? 91 : 224, // the apple key on macs
- PAUSE: 19,
- CAPS_LOCK: 20,
- ESCAPE: 27,
- SPACE: 32,
- PAGE_UP: 33,
- PAGE_DOWN: 34,
- END: 35,
- HOME: 36,
- LEFT_ARROW: 37,
- UP_ARROW: 38,
- RIGHT_ARROW: 39,
- DOWN_ARROW: 40,
- INSERT: 45,
- DELETE: 46,
- HELP: 47,
- LEFT_WINDOW: 91,
- RIGHT_WINDOW: 92,
- SELECT: 93,
- NUMPAD_0: 96,
- NUMPAD_1: 97,
- NUMPAD_2: 98,
- NUMPAD_3: 99,
- NUMPAD_4: 100,
- NUMPAD_5: 101,
- NUMPAD_6: 102,
- NUMPAD_7: 103,
- NUMPAD_8: 104,
- NUMPAD_9: 105,
- NUMPAD_MULTIPLY: 106,
- NUMPAD_PLUS: 107,
- NUMPAD_ENTER: 108,
- NUMPAD_MINUS: 109,
- NUMPAD_PERIOD: 110,
- NUMPAD_DIVIDE: 111,
- F1: 112,
- F2: 113,
- F3: 114,
- F4: 115,
- F5: 116,
- F6: 117,
- F7: 118,
- F8: 119,
- F9: 120,
- F10: 121,
- F11: 122,
- F12: 123,
- F13: 124,
- F14: 125,
- F15: 126,
- NUM_LOCK: 144,
- SCROLL_LOCK: 145,
- // virtual key mapping
- copyKey: dojo.isMac && !dojo.isAIR ? (dojo.isSafari ? 91 : 224 ) : 17
- };
-
- var evtCopyKey = dojo.isMac ? "metaKey" : "ctrlKey";
-
- dojo.isCopyKey = function(e){
- // summary:
- // Checks an event for the copy key (meta on Mac, and ctrl anywhere else)
- // e: Event
- // Event object to examine
- return e[evtCopyKey]; // Boolean
- };
-
- // Public: decoding mouse buttons from events
-
-/*=====
- dojo.mouseButtons = {
- // LEFT: Number
- // Numeric value of the left mouse button for the platform.
- LEFT: 0,
- // MIDDLE: Number
- // Numeric value of the middle mouse button for the platform.
- MIDDLE: 1,
- // RIGHT: Number
- // Numeric value of the right mouse button for the platform.
- RIGHT: 2,
-
- isButton: function(e, button){
- // summary:
- // Checks an event object for a pressed button
- // e: Event
- // Event object to examine
- // button: Number
- // The button value (example: dojo.mouseButton.LEFT)
- return e.button == button; // Boolean
- },
- isLeft: function(e){
- // summary:
- // Checks an event object for the pressed left button
- // e: Event
- // Event object to examine
- return e.button == 0; // Boolean
- },
- isMiddle: function(e){
- // summary:
- // Checks an event object for the pressed middle button
- // e: Event
- // Event object to examine
- return e.button == 1; // Boolean
- },
- isRight: function(e){
- // summary:
- // Checks an event object for the pressed right button
- // e: Event
- // Event object to examine
- return e.button == 2; // Boolean
- }
- };
-=====*/
-
- if(dojo.isIE){
- dojo.mouseButtons = {
- LEFT: 1,
- MIDDLE: 4,
- RIGHT: 2,
- // helper functions
- isButton: function(e, button){ return e.button & button; },
- isLeft: function(e){ return e.button & 1; },
- isMiddle: function(e){ return e.button & 4; },
- isRight: function(e){ return e.button & 2; }
- };
- }else{
- dojo.mouseButtons = {
- LEFT: 0,
- MIDDLE: 1,
- RIGHT: 2,
- // helper functions
- isButton: function(e, button){ return e.button == button; },
- isLeft: function(e){ return e.button == 0; },
- isMiddle: function(e){ return e.button == 1; },
- isRight: function(e){ return e.button == 2; }
- };
- }
-
- // IE event normalization
- if(dojo.isIE){
- var _trySetKeyCode = function(e, code){
- try{
- // squelch errors when keyCode is read-only
- // (e.g. if keyCode is ctrl or shift)
- return (e.keyCode = code);
- }catch(e){
- return 0;
- }
- }
-
- // by default, use the standard listener
- var iel = dojo._listener;
- var listenersName = (dojo._ieListenersName = "_" + dojo._scopeName + "_listeners");
- // dispatcher tracking property
- if(!dojo.config._allow_leaks){
- // custom listener that handles leak protection for DOM events
- node_listener = iel = dojo._ie_listener = {
- // support handler indirection: event handler functions are
- // referenced here. Event dispatchers hold only indices.
- handlers: [],
- // add a listener to an object
- add: function(/*Object*/ source, /*String*/ method, /*Function*/ listener){
- source = source || dojo.global;
- var f = source[method];
- if(!f||!f[listenersName]){
- var d = dojo._getIeDispatcher();
- // original target function is special
- d.target = f && (ieh.push(f) - 1);
- // dispatcher holds a list of indices into handlers table
- d[listenersName] = [];
- // redirect source to dispatcher
- f = source[method] = d;
- }
- return f[listenersName].push(ieh.push(listener) - 1) ; /*Handle*/
- },
- // remove a listener from an object
- remove: function(/*Object*/ source, /*String*/ method, /*Handle*/ handle){
- var f = (source||dojo.global)[method], l = f && f[listenersName];
- if(f && l && handle--){
- delete ieh[l[handle]];
- delete l[handle];
- }
- }
- };
- // alias used above
- var ieh = iel.handlers;
- }
-
- dojo.mixin(del, {
- add: function(/*DOMNode*/ node, /*String*/ event, /*Function*/ fp){
- if(!node){return;} // undefined
- event = del._normalizeEventName(event);
- if(event=="onkeypress"){
- // we need to listen to onkeydown to synthesize
- // keypress events that otherwise won't fire
- // on IE
- var kd = node.onkeydown;
- if(!kd || !kd[listenersName] || !kd._stealthKeydownHandle){
- var h = del.add(node, "onkeydown", del._stealthKeyDown);
- kd = node.onkeydown;
- kd._stealthKeydownHandle = h;
- kd._stealthKeydownRefs = 1;
- }else{
- kd._stealthKeydownRefs++;
- }
- }
- return iel.add(node, event, del._fixCallback(fp));
- },
- remove: function(/*DOMNode*/ node, /*String*/ event, /*Handle*/ handle){
- event = del._normalizeEventName(event);
- iel.remove(node, event, handle);
- if(event=="onkeypress"){
- var kd = node.onkeydown;
- if(--kd._stealthKeydownRefs <= 0){
- iel.remove(node, "onkeydown", kd._stealthKeydownHandle);
- delete kd._stealthKeydownHandle;
- }
- }
- },
- _normalizeEventName: function(/*String*/ eventName){
- // Generally, eventName should be lower case, unless it is
- // special somehow (e.g. a Mozilla event)
- // ensure 'on'
- return eventName.slice(0,2) != "on" ? "on" + eventName : eventName;
- },
- _nop: function(){},
- _fixEvent: function(/*Event*/ evt, /*DOMNode*/ sender){
- // summary:
- // normalizes properties on the event object including event
- // bubbling methods, keystroke normalization, and x/y positions
- // evt:
- // native event object
- // sender:
- // node to treat as "currentTarget"
- if(!evt){
- var w = sender && (sender.ownerDocument || sender.document || sender).parentWindow || window;
- evt = w.event;
- }
- if(!evt){return(evt);}
- evt.target = evt.srcElement;
- evt.currentTarget = (sender || evt.srcElement);
- evt.layerX = evt.offsetX;
- evt.layerY = evt.offsetY;
- // FIXME: scroll position query is duped from dojo.html to
- // avoid dependency on that entire module. Now that HTML is in
- // Base, we should convert back to something similar there.
- var se = evt.srcElement, doc = (se && se.ownerDocument) || document;
- // DO NOT replace the following to use dojo.body(), in IE, document.documentElement should be used
- // here rather than document.body
- var docBody = ((dojo.isIE < 6) || (doc["compatMode"] == "BackCompat")) ? doc.body : doc.documentElement;
- var offset = dojo._getIeDocumentElementOffset();
- evt.pageX = evt.clientX + dojo._fixIeBiDiScrollLeft(docBody.scrollLeft || 0) - offset.x;
- evt.pageY = evt.clientY + (docBody.scrollTop || 0) - offset.y;
- if(evt.type == "mouseover"){
- evt.relatedTarget = evt.fromElement;
- }
- if(evt.type == "mouseout"){
- evt.relatedTarget = evt.toElement;
- }
- evt.stopPropagation = del._stopPropagation;
- evt.preventDefault = del._preventDefault;
- return del._fixKeys(evt);
- },
- _fixKeys: function(evt){
- switch(evt.type){
- case "keypress":
- var c = ("charCode" in evt ? evt.charCode : evt.keyCode);
- if (c==10){
- // CTRL-ENTER is CTRL-ASCII(10) on IE, but CTRL-ENTER on Mozilla
- c=0;
- evt.keyCode = 13;
- }else if(c==13||c==27){
- c=0; // Mozilla considers ENTER and ESC non-printable
- }else if(c==3){
- c=99; // Mozilla maps CTRL-BREAK to CTRL-c
- }
- // Mozilla sets keyCode to 0 when there is a charCode
- // but that stops the event on IE.
- evt.charCode = c;
- del._setKeyChar(evt);
- break;
- }
- return evt;
- },
- _stealthKeyDown: function(evt){
- // IE doesn't fire keypress for most non-printable characters.
- // other browsers do, we simulate it here.
- var kp = evt.currentTarget.onkeypress;
- // only works if kp exists and is a dispatcher
- if(!kp || !kp[listenersName]){ return; }
- // munge key/charCode
- var k=evt.keyCode;
- // These are Windows Virtual Key Codes
- // http://msdn.microsoft.com/library/default.asp?url=/library/en-us/winui/WinUI/WindowsUserInterface/UserInput/VirtualKeyCodes.asp
- var unprintable = k!=13 && k!=32 && k!=27 && (k<48||k>90) && (k<96||k>111) && (k<186||k>192) && (k<219||k>222);
- // synthesize keypress for most unprintables and CTRL-keys
- if(unprintable||evt.ctrlKey){
- var c = unprintable ? 0 : k;
- if(evt.ctrlKey){
- if(k==3 || k==13){
- return; // IE will post CTRL-BREAK, CTRL-ENTER as keypress natively
- }else if(c>95 && c<106){
- c -= 48; // map CTRL-[numpad 0-9] to ASCII
- }else if((!evt.shiftKey)&&(c>=65&&c<=90)){
- c += 32; // map CTRL-[A-Z] to lowercase
- }else{
- c = del._punctMap[c] || c; // map other problematic CTRL combinations to ASCII
- }
- }
- // simulate a keypress event
- var faux = del._synthesizeEvent(evt, {type: 'keypress', faux: true, charCode: c});
- kp.call(evt.currentTarget, faux);
- evt.cancelBubble = faux.cancelBubble;
- evt.returnValue = faux.returnValue;
- _trySetKeyCode(evt, faux.keyCode);
- }
- },
- // Called in Event scope
- _stopPropagation: function(){
- this.cancelBubble = true;
- },
- _preventDefault: function(){
- // Setting keyCode to 0 is the only way to prevent certain keypresses (namely
- // ctrl-combinations that correspond to menu accelerator keys).
- // Otoh, it prevents upstream listeners from getting this information
- // Try to split the difference here by clobbering keyCode only for ctrl
- // combinations. If you still need to access the key upstream, bubbledKeyCode is
- // provided as a workaround.
- this.bubbledKeyCode = this.keyCode;
- if(this.ctrlKey){_trySetKeyCode(this, 0);}
- this.returnValue = false;
- }
- });
-
- // override stopEvent for IE
- dojo.stopEvent = function(evt){
- evt = evt || window.event;
- del._stopPropagation.call(evt);
- del._preventDefault.call(evt);
- }
- }
-
- del._synthesizeEvent = function(evt, props){
- var faux = dojo.mixin({}, evt, props);
- del._setKeyChar(faux);
- // FIXME: would prefer to use dojo.hitch: dojo.hitch(evt, evt.preventDefault);
- // but it throws an error when preventDefault is invoked on Safari
- // does Event.preventDefault not support "apply" on Safari?
- faux.preventDefault = function(){ evt.preventDefault(); };
- faux.stopPropagation = function(){ evt.stopPropagation(); };
- return faux;
- }
-
- // Opera event normalization
- if(dojo.isOpera){
- dojo.mixin(del, {
- _fixEvent: function(evt, sender){
- switch(evt.type){
- case "keypress":
- var c = evt.which;
- if(c==3){
- c=99; // Mozilla maps CTRL-BREAK to CTRL-c
- }
- // can't trap some keys at all, like INSERT and DELETE
- // there is no differentiating info between DELETE and ".", or INSERT and "-"
- c = c<41 && !evt.shiftKey ? 0 : c;
- if(evt.ctrlKey && !evt.shiftKey && c>=65 && c<=90){
- // lowercase CTRL-[A-Z] keys
- c += 32;
- }
- return del._synthesizeEvent(evt, { charCode: c });
- }
- return evt;
- }
- });
- }
-
- // Webkit event normalization
- if(dojo.isWebKit){
- del._add = del.add;
- del._remove = del.remove;
-
- dojo.mixin(del, {
- add: function(/*DOMNode*/ node, /*String*/ event, /*Function*/ fp){
- if(!node){return;} // undefined
- var handle = del._add(node, event, fp);
- if(del._normalizeEventName(event) == "keypress"){
- // we need to listen to onkeydown to synthesize
- // keypress events that otherwise won't fire
- // in Safari 3.1+: https://lists.webkit.org/pipermail/webkit-dev/2007-December/002992.html
- handle._stealthKeyDownHandle = del._add(node, "keydown", function(evt){
- //A variation on the IE _stealthKeydown function
- //Synthesize an onkeypress event, but only for unprintable characters.
- var k=evt.keyCode;
- // These are Windows Virtual Key Codes
- // http://msdn.microsoft.com/library/default.asp?url=/library/en-us/winui/WinUI/WindowsUserInterface/UserInput/VirtualKeyCodes.asp
- var unprintable = k!=13 && k!=32 && (k<48 || k>90) && (k<96 || k>111) && (k<186 || k>192) && (k<219 || k>222);
- // synthesize keypress for most unprintables and CTRL-keys
- if(unprintable || evt.ctrlKey){
- var c = unprintable ? 0 : k;
- if(evt.ctrlKey){
- if(k==3 || k==13){
- return; // IE will post CTRL-BREAK, CTRL-ENTER as keypress natively
- }else if(c>95 && c<106){
- c -= 48; // map CTRL-[numpad 0-9] to ASCII
- }else if(!evt.shiftKey && c>=65 && c<=90){
- c += 32; // map CTRL-[A-Z] to lowercase
- }else{
- c = del._punctMap[c] || c; // map other problematic CTRL combinations to ASCII
- }
- }
- // simulate a keypress event
- var faux = del._synthesizeEvent(evt, {type: 'keypress', faux: true, charCode: c});
- fp.call(evt.currentTarget, faux);
- }
- });
- }
- return handle; /*Handle*/
- },
-
- remove: function(/*DOMNode*/ node, /*String*/ event, /*Handle*/ handle){
- if(node){
- if(handle._stealthKeyDownHandle){
- del._remove(node, "keydown", handle._stealthKeyDownHandle);
- }
- del._remove(node, event, handle);
- }
- },
- _fixEvent: function(evt, sender){
- switch(evt.type){
- case "keypress":
- if(evt.faux){ return evt; }
- var c = evt.charCode;
- c = c>=32 ? c : 0;
- return del._synthesizeEvent(evt, {charCode: c, faux: true});
- }
- return evt;
- }
- });
- }
- })();
-
-if(dojo.isIE){
- // keep this out of the closure
- // closing over 'iel' or 'ieh' b0rks leak prevention
- // ls[i] is an index into the master handler array
- dojo._ieDispatcher = function(args, sender){
- var ap = Array.prototype,
- h = dojo._ie_listener.handlers,
- c = args.callee,
- ls = c[dojo._ieListenersName],
- t = h[c.target];
- // return value comes from original target function
- var r = t && t.apply(sender, args);
- // make local copy of listener array so it's immutable during processing
- var lls = [].concat(ls);
- // invoke listeners after target function
- for(var i in lls){
- var f = h[lls[i]];
- if(!(i in ap) && f){
- f.apply(sender, args);
- }
- }
- return r;
- }
- dojo._getIeDispatcher = function(){
- // ensure the returned function closes over nothing ("new Function" apparently doesn't close)
- return new Function(dojo._scopeName + "._ieDispatcher(arguments, this)"); // function
- }
- // keep this out of the closure to reduce RAM allocation
- dojo._event_listener._fixCallback = function(fp){
- var f = dojo._event_listener._fixEvent;
- return function(e){ return fp.call(this, f(e, this)); };
- }
-}
-
-}
diff --git a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dojo/_base/fx.js b/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dojo/_base/fx.js
deleted file mode 100644
index 9b87b95..0000000
--- a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dojo/_base/fx.js
+++ /dev/null
@@ -1,671 +0,0 @@
-/*
- Copyright (c) 2004-2009, The Dojo Foundation All Rights Reserved.
- Available via Academic Free License >= 2.1 OR the modified BSD license.
- see: http://dojotoolkit.org/license for details
-*/
-
-
-if(!dojo._hasResource["dojo._base.fx"]){ //_hasResource checks added by build. Do not use _hasResource directly in your code.
-dojo._hasResource["dojo._base.fx"] = true;
-dojo.provide("dojo._base.fx");
-dojo.require("dojo._base.Color");
-dojo.require("dojo._base.connect");
-dojo.require("dojo._base.lang");
-dojo.require("dojo._base.html");
-
-/*
- Animation loosely package based on Dan Pupius' work, contributed under CLA:
- http://pupius.co.uk/js/Toolkit.Drawing.js
-*/
-(function(){
- var d = dojo;
- var _mixin = d._mixin;
-
- dojo._Line = function(/*int*/ start, /*int*/ end){
- // summary:
- // dojo._Line is the object used to generate values from a start value
- // to an end value
- // start: int
- // Beginning value for range
- // end: int
- // Ending value for range
- this.start = start;
- this.end = end;
- };
-
- dojo._Line.prototype.getValue = function(/*float*/ n){
- // summary: Returns the point on the line
- // n: a floating point number greater than 0 and less than 1
- return ((this.end - this.start) * n) + this.start; // Decimal
- };
-
- dojo.Animation = function(args){
- // summary:
- // A generic animation class that fires callbacks into its handlers
- // object at various states.
- // description:
- // A generic animation class that fires callbacks into its handlers
- // object at various states. Nearly all dojo animation functions
- // return an instance of this method, usually without calling the
- // .play() method beforehand. Therefore, you will likely need to
- // call .play() on instances of `dojo.Animation` when one is
- // returned.
- // args: Object
- // The 'magic argument', mixing all the properties into this
- // animation instance.
-
- _mixin(this, args);
- if(d.isArray(this.curve)){
- this.curve = new d._Line(this.curve[0], this.curve[1]);
- }
-
- };
-
- // Alias to drop come 2.0:
- d._Animation = d.Animation;
-
- d.extend(dojo.Animation, {
- // duration: Integer
- // The time in milliseonds the animation will take to run
- duration: 350,
-
- /*=====
- // curve: dojo._Line|Array
- // A two element array of start and end values, or a `dojo._Line` instance to be
- // used in the Animation.
- curve: null,
-
- // easing: Function?
- // A Function to adjust the acceleration (or deceleration) of the progress
- // across a dojo._Line
- easing: null,
- =====*/
-
- // repeat: Integer?
- // The number of times to loop the animation
- repeat: 0,
-
- // rate: Integer?
- // the time in milliseconds to wait before advancing to next frame
- // (used as a fps timer: 1000/rate = fps)
- rate: 20 /* 50 fps */,
-
- /*=====
- // delay: Integer?
- // The time in milliseconds to wait before starting animation after it
- // has been .play()'ed
- delay: null,
-
- // beforeBegin: Event?
- // Synthetic event fired before a dojo.Animation begins playing (synchronous)
- beforeBegin: null,
-
- // onBegin: Event?
- // Synthetic event fired as a dojo.Animation begins playing (useful?)
- onBegin: null,
-
- // onAnimate: Event?
- // Synthetic event fired at each interval of a `dojo.Animation`
- onAnimate: null,
-
- // onEnd: Event?
- // Synthetic event fired after the final frame of a `dojo.Animation`
- onEnd: null,
-
- // onPlay: Event?
- // Synthetic event fired any time a `dojo.Animation` is play()'ed
- onPlay: null,
-
- // onPause: Event?
- // Synthetic event fired when a `dojo.Animation` is paused
- onPause: null,
-
- // onStop: Event
- // Synthetic event fires when a `dojo.Animation` is stopped
- onStop: null,
-
- =====*/
-
- _percent: 0,
- _startRepeatCount: 0,
-
- _getStep: function(){
- var _p = this._percent,
- _e = this.easing
- ;
- return _e ? _e(_p) : _p;
- },
- _fire: function(/*Event*/ evt, /*Array?*/ args){
- // summary:
- // Convenience function. Fire event "evt" and pass it the
- // arguments specified in "args".
- // description:
- // Convenience function. Fire event "evt" and pass it the
- // arguments specified in "args".
- // Fires the callback in the scope of the `dojo.Animation`
- // instance.
- // evt:
- // The event to fire.
- // args:
- // The arguments to pass to the event.
- var a = args||[];
- if(this[evt]){
- if(d.config.debugAtAllCosts){
- this[evt].apply(this, a);
- }else{
- try{
- this[evt].apply(this, a);
- }catch(e){
- // squelch and log because we shouldn't allow exceptions in
- // synthetic event handlers to cause the internal timer to run
- // amuck, potentially pegging the CPU. I'm not a fan of this
- // squelch, but hopefully logging will make it clear what's
- // going on
- console.error("exception in animation handler for:", evt);
- console.error(e);
- }
- }
- }
- return this; // dojo.Animation
- },
-
- play: function(/*int?*/ delay, /*Boolean?*/ gotoStart){
- // summary:
- // Start the animation.
- // delay:
- // How many milliseconds to delay before starting.
- // gotoStart:
- // If true, starts the animation from the beginning; otherwise,
- // starts it from its current position.
- // returns: dojo.Animation
- // The instance to allow chaining.
-
- var _t = this;
- if(_t._delayTimer){ _t._clearTimer(); }
- if(gotoStart){
- _t._stopTimer();
- _t._active = _t._paused = false;
- _t._percent = 0;
- }else if(_t._active && !_t._paused){
- return _t;
- }
-
- _t._fire("beforeBegin", [_t.node]);
-
- var de = delay || _t.delay,
- _p = dojo.hitch(_t, "_play", gotoStart);
-
- if(de > 0){
- _t._delayTimer = setTimeout(_p, de);
- return _t;
- }
- _p();
- return _t;
- },
-
- _play: function(gotoStart){
- var _t = this;
- if(_t._delayTimer){ _t._clearTimer(); }
- _t._startTime = new Date().valueOf();
- if(_t._paused){
- _t._startTime -= _t.duration * _t._percent;
- }
- _t._endTime = _t._startTime + _t.duration;
-
- _t._active = true;
- _t._paused = false;
- var value = _t.curve.getValue(_t._getStep());
- if(!_t._percent){
- if(!_t._startRepeatCount){
- _t._startRepeatCount = _t.repeat;
- }
- _t._fire("onBegin", [value]);
- }
-
- _t._fire("onPlay", [value]);
-
- _t._cycle();
- return _t; // dojo.Animation
- },
-
- pause: function(){
- // summary: Pauses a running animation.
- var _t = this;
- if(_t._delayTimer){ _t._clearTimer(); }
- _t._stopTimer();
- if(!_t._active){ return _t; /*dojo.Animation*/ }
- _t._paused = true;
- _t._fire("onPause", [_t.curve.getValue(_t._getStep())]);
- return _t; // dojo.Animation
- },
-
- gotoPercent: function(/*Decimal*/ percent, /*Boolean?*/ andPlay){
- // summary:
- // Sets the progress of the animation.
- // percent:
- // A percentage in decimal notation (between and including 0.0 and 1.0).
- // andPlay:
- // If true, play the animation after setting the progress.
- var _t = this;
- _t._stopTimer();
- _t._active = _t._paused = true;
- _t._percent = percent;
- if(andPlay){ _t.play(); }
- return _t; // dojo.Animation
- },
-
- stop: function(/*boolean?*/ gotoEnd){
- // summary: Stops a running animation.
- // gotoEnd: If true, the animation will end.
- var _t = this;
- if(_t._delayTimer){ _t._clearTimer(); }
- if(!_t._timer){ return _t; /* dojo.Animation */ }
- _t._stopTimer();
- if(gotoEnd){
- _t._percent = 1;
- }
- _t._fire("onStop", [_t.curve.getValue(_t._getStep())]);
- _t._active = _t._paused = false;
- return _t; // dojo.Animation
- },
-
- status: function(){
- // summary:
- // Returns a string token representation of the status of
- // the animation, one of: "paused", "playing", "stopped"
- if(this._active){
- return this._paused ? "paused" : "playing"; // String
- }
- return "stopped"; // String
- },
-
- _cycle: function(){
- var _t = this;
- if(_t._active){
- var curr = new Date().valueOf();
- var step = (curr - _t._startTime) / (_t._endTime - _t._startTime);
-
- if(step >= 1){
- step = 1;
- }
- _t._percent = step;
-
- // Perform easing
- if(_t.easing){
- step = _t.easing(step);
- }
-
- _t._fire("onAnimate", [_t.curve.getValue(step)]);
-
- if(_t._percent < 1){
- _t._startTimer();
- }else{
- _t._active = false;
-
- if(_t.repeat > 0){
- _t.repeat--;
- _t.play(null, true);
- }else if(_t.repeat == -1){
- _t.play(null, true);
- }else{
- if(_t._startRepeatCount){
- _t.repeat = _t._startRepeatCount;
- _t._startRepeatCount = 0;
- }
- }
- _t._percent = 0;
- _t._fire("onEnd", [_t.node]);
- !_t.repeat && _t._stopTimer();
- }
- }
- return _t; // dojo.Animation
- },
-
- _clearTimer: function(){
- // summary: Clear the play delay timer
- clearTimeout(this._delayTimer);
- delete this._delayTimer;
- }
-
- });
-
- // the local timer, stubbed into all Animation instances
- var ctr = 0,
- _globalTimerList = [],
- timer = null,
- runner = {
- run: function(){}
- };
-
- d.extend(d.Animation, {
-
- _startTimer: function(){
- if(!this._timer){
- this._timer = d.connect(runner, "run", this, "_cycle");
- ctr++;
- }
- if(!timer){
- timer = setInterval(d.hitch(runner, "run"), this.rate);
- }
- },
-
- _stopTimer: function(){
- if(this._timer){
- d.disconnect(this._timer);
- this._timer = null;
- ctr--;
- }
- if(ctr <= 0){
- clearInterval(timer);
- timer = null;
- ctr = 0;
- }
- }
-
- });
-
- var _makeFadeable =
- d.isIE ? function(node){
- // only set the zoom if the "tickle" value would be the same as the
- // default
- var ns = node.style;
- // don't set the width to auto if it didn't already cascade that way.
- // We don't want to f anyones designs
- if(!ns.width.length && d.style(node, "width") == "auto"){
- ns.width = "auto";
- }
- } :
- function(){};
-
- dojo._fade = function(/*Object*/ args){
- // summary:
- // Returns an animation that will fade the node defined by
- // args.node from the start to end values passed (args.start
- // args.end) (end is mandatory, start is optional)
-
- args.node = d.byId(args.node);
- var fArgs = _mixin({ properties: {} }, args),
- props = (fArgs.properties.opacity = {});
-
- props.start = !("start" in fArgs) ?
- function(){
- return +d.style(fArgs.node, "opacity")||0;
- } : fArgs.start;
- props.end = fArgs.end;
-
- var anim = d.animateProperty(fArgs);
- d.connect(anim, "beforeBegin", d.partial(_makeFadeable, fArgs.node));
-
- return anim; // dojo.Animation
- };
-
- /*=====
- dojo.__FadeArgs = function(node, duration, easing){
- // node: DOMNode|String
- // The node referenced in the animation
- // duration: Integer?
- // Duration of the animation in milliseconds.
- // easing: Function?
- // An easing function.
- this.node = node;
- this.duration = duration;
- this.easing = easing;
- }
- =====*/
-
- dojo.fadeIn = function(/*dojo.__FadeArgs*/ args){
- // summary:
- // Returns an animation that will fade node defined in 'args' from
- // its current opacity to fully opaque.
- return d._fade(_mixin({ end: 1 }, args)); // dojo.Animation
- };
-
- dojo.fadeOut = function(/*dojo.__FadeArgs*/ args){
- // summary:
- // Returns an animation that will fade node defined in 'args'
- // from its current opacity to fully transparent.
- return d._fade(_mixin({ end: 0 }, args)); // dojo.Animation
- };
-
- dojo._defaultEasing = function(/*Decimal?*/ n){
- // summary: The default easing function for dojo.Animation(s)
- return 0.5 + ((Math.sin((n + 1.5) * Math.PI)) / 2);
- };
-
- var PropLine = function(properties){
- // PropLine is an internal class which is used to model the values of
- // an a group of CSS properties across an animation lifecycle. In
- // particular, the "getValue" function handles getting interpolated
- // values between start and end for a particular CSS value.
- this._properties = properties;
- for(var p in properties){
- var prop = properties[p];
- if(prop.start instanceof d.Color){
- // create a reusable temp color object to keep intermediate results
- prop.tempColor = new d.Color();
- }
- }
- };
-
- PropLine.prototype.getValue = function(r){
- var ret = {};
- for(var p in this._properties){
- var prop = this._properties[p],
- start = prop.start;
- if(start instanceof d.Color){
- ret[p] = d.blendColors(start, prop.end, r, prop.tempColor).toCss();
- }else if(!d.isArray(start)){
- ret[p] = ((prop.end - start) * r) + start + (p != "opacity" ? prop.units || "px" : 0);
- }
- }
- return ret;
- };
-
- /*=====
- dojo.declare("dojo.__AnimArgs", [dojo.__FadeArgs], {
- // Properties: Object?
- // A hash map of style properties to Objects describing the transition,
- // such as the properties of dojo._Line with an additional 'units' property
- properties: {}
-
- //TODOC: add event callbacks
- });
- =====*/
-
- dojo.animateProperty = function(/*dojo.__AnimArgs*/ args){
- // summary:
- // Returns an animation that will transition the properties of
- // node defined in `args` depending how they are defined in
- // `args.properties`
- //
- // description:
- // `dojo.animateProperty` is the foundation of most `dojo.fx`
- // animations. It takes an object of "properties" corresponding to
- // style properties, and animates them in parallel over a set
- // duration.
- //
- // example:
- // A simple animation that changes the width of the specified node.
- // | dojo.animateProperty({
- // | node: "nodeId",
- // | properties: { width: 400 },
- // | }).play();
- // Dojo figures out the start value for the width and converts the
- // integer specified for the width to the more expressive but
- // verbose form `{ width: { end: '400', units: 'px' } }` which you
- // can also specify directly. Defaults to 'px' if ommitted.
- //
- // example:
- // Animate width, height, and padding over 2 seconds... the
- // pedantic way:
- // | dojo.animateProperty({ node: node, duration:2000,
- // | properties: {
- // | width: { start: '200', end: '400', units:"px" },
- // | height: { start:'200', end: '400', units:"px" },
- // | paddingTop: { start:'5', end:'50', units:"px" }
- // | }
- // | }).play();
- // Note 'paddingTop' is used over 'padding-top'. Multi-name CSS properties
- // are written using "mixed case", as the hyphen is illegal as an object key.
- //
- // example:
- // Plug in a different easing function and register a callback for
- // when the animation ends. Easing functions accept values between
- // zero and one and return a value on that basis. In this case, an
- // exponential-in curve.
- // | dojo.animateProperty({
- // | node: "nodeId",
- // | // dojo figures out the start value
- // | properties: { width: { end: 400 } },
- // | easing: function(n){
- // | return (n==0) ? 0 : Math.pow(2, 10 * (n - 1));
- // | },
- // | onEnd: function(node){
- // | // called when the animation finishes. The animation
- // | // target is passed to this function
- // | }
- // | }).play(500); // delay playing half a second
- //
- // example:
- // Like all `dojo.Animation`s, animateProperty returns a handle to the
- // Animation instance, which fires the events common to Dojo FX. Use `dojo.connect`
- // to access these events outside of the Animation definiton:
- // | var anim = dojo.animateProperty({
- // | node:"someId",
- // | properties:{
- // | width:400, height:500
- // | }
- // | });
- // | dojo.connect(anim,"onEnd", function(){
- // | console.log("animation ended");
- // | });
- // | // play the animation now:
- // | anim.play();
- //
- // example:
- // Each property can be a function whose return value is substituted along.
- // Additionally, each measurement (eg: start, end) can be a function. The node
- // reference is passed direcly to callbacks.
- // | dojo.animateProperty({
- // | node:"mine",
- // | properties:{
- // | height:function(node){
- // | // shrink this node by 50%
- // | return dojo.position(node).h / 2
- // | },
- // | width:{
- // | start:function(node){ return 100; },
- // | end:function(node){ return 200; }
- // | }
- // | }
- // | }).play();
- //
-
- var n = args.node = d.byId(args.node);
- if(!args.easing){ args.easing = d._defaultEasing; }
-
- var anim = new d.Animation(args);
- d.connect(anim, "beforeBegin", anim, function(){
- var pm = {};
- for(var p in this.properties){
- // Make shallow copy of properties into pm because we overwrite
- // some values below. In particular if start/end are functions
- // we don't want to overwrite them or the functions won't be
- // called if the animation is reused.
- if(p == "width" || p == "height"){
- this.node.display = "block";
- }
- var prop = this.properties[p];
- if(d.isFunction(prop)){
- prop = prop(n);
- }
- prop = pm[p] = _mixin({}, (d.isObject(prop) ? prop: { end: prop }));
-
- if(d.isFunction(prop.start)){
- prop.start = prop.start(n);
- }
- if(d.isFunction(prop.end)){
- prop.end = prop.end(n);
- }
- var isColor = (p.toLowerCase().indexOf("color") >= 0);
- function getStyle(node, p){
- // dojo.style(node, "height") can return "auto" or "" on IE; this is more reliable:
- var v = { height: node.offsetHeight, width: node.offsetWidth }[p];
- if(v !== undefined){ return v; }
- v = d.style(node, p);
- return (p == "opacity") ? +v : (isColor ? v : parseFloat(v));
- }
- if(!("end" in prop)){
- prop.end = getStyle(n, p);
- }else if(!("start" in prop)){
- prop.start = getStyle(n, p);
- }
-
- if(isColor){
- prop.start = new d.Color(prop.start);
- prop.end = new d.Color(prop.end);
- }else{
- prop.start = (p == "opacity") ? +prop.start : parseFloat(prop.start);
- }
- }
- this.curve = new PropLine(pm);
- });
- d.connect(anim, "onAnimate", d.hitch(d, "style", anim.node));
- return anim; // dojo.Animation
- };
-
- dojo.anim = function( /*DOMNode|String*/ node,
- /*Object*/ properties,
- /*Integer?*/ duration,
- /*Function?*/ easing,
- /*Function?*/ onEnd,
- /*Integer?*/ delay){
- // summary:
- // A simpler interface to `dojo.animateProperty()`, also returns
- // an instance of `dojo.Animation` but begins the animation
- // immediately, unlike nearly every other Dojo animation API.
- // description:
- // `dojo.anim` is a simpler (but somewhat less powerful) version
- // of `dojo.animateProperty`. It uses defaults for many basic properties
- // and allows for positional parameters to be used in place of the
- // packed "property bag" which is used for other Dojo animation
- // methods.
- //
- // The `dojo.Animation` object returned from `dojo.anim` will be
- // already playing when it is returned from this function, so
- // calling play() on it again is (usually) a no-op.
- // node:
- // a DOM node or the id of a node to animate CSS properties on
- // duration:
- // The number of milliseconds over which the animation
- // should run. Defaults to the global animation default duration
- // (350ms).
- // easing:
- // An easing function over which to calculate acceleration
- // and deceleration of the animation through its duration.
- // A default easing algorithm is provided, but you may
- // plug in any you wish. A large selection of easing algorithms
- // are available in `dojo.fx.easing`.
- // onEnd:
- // A function to be called when the animation finishes
- // running.
- // delay:
- // The number of milliseconds to delay beginning the
- // animation by. The default is 0.
- // example:
- // Fade out a node
- // | dojo.anim("id", { opacity: 0 });
- // example:
- // Fade out a node over a full second
- // | dojo.anim("id", { opacity: 0 }, 1000);
- return d.animateProperty({ // dojo.Animation
- node: node,
- duration: duration || d.Animation.prototype.duration,
- properties: properties,
- easing: easing,
- onEnd: onEnd
- }).play(delay || 0);
- };
-})();
-
-}
diff --git a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dojo/_base/html.js b/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dojo/_base/html.js
deleted file mode 100644
index 168c4a2..0000000
--- a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dojo/_base/html.js
+++ /dev/null
@@ -1,1824 +0,0 @@
-/*
- Copyright (c) 2004-2009, The Dojo Foundation All Rights Reserved.
- Available via Academic Free License >= 2.1 OR the modified BSD license.
- see: http://dojotoolkit.org/license for details
-*/
-
-
-if(!dojo._hasResource["dojo._base.html"]){ //_hasResource checks added by build. Do not use _hasResource directly in your code.
-dojo._hasResource["dojo._base.html"] = true;
-dojo.require("dojo._base.lang");
-dojo.provide("dojo._base.html");
-
-// FIXME: need to add unit tests for all the semi-public methods
-
-try{
- document.execCommand("BackgroundImageCache", false, true);
-}catch(e){
- // sane browsers don't have cache "issues"
-}
-
-// =============================
-// DOM Functions
-// =============================
-
-/*=====
-dojo.byId = function(id, doc){
- // summary:
- // Returns DOM node with matching `id` attribute or `null`
- // if not found. If `id` is a DomNode, this function is a no-op.
- //
- // id: String|DOMNode
- // A string to match an HTML id attribute or a reference to a DOM Node
- //
- // doc: Document?
- // Document to work in. Defaults to the current value of
- // dojo.doc. Can be used to retrieve
- // node references from other documents.
- //
- // example:
- // Look up a node by ID:
- // | var n = dojo.byId("foo");
- //
- // example:
- // Check if a node exists, and use it.
- // | var n = dojo.byId("bar");
- // | if(n){ doStuff() ... }
- //
- // example:
- // Allow string or DomNode references to be passed to a custom function:
- // | var foo = function(nodeOrId){
- // | nodeOrId = dojo.byId(nodeOrId);
- // | // ... more stuff
- // | }
-=====*/
-
-if(dojo.isIE || dojo.isOpera){
- dojo.byId = function(id, doc){
- if(typeof id != "string"){
- return id;
- }
- var _d = doc || dojo.doc, te = _d.getElementById(id);
- // attributes.id.value is better than just id in case the
- // user has a name=id inside a form
- if(te && (te.attributes.id.value == id || te.id == id)){
- return te;
- }else{
- var eles = _d.all[id];
- if(!eles || eles.nodeName){
- eles = [eles];
- }
- // if more than 1, choose first with the correct id
- var i=0;
- while((te=eles[i++])){
- if((te.attributes && te.attributes.id && te.attributes.id.value == id)
- || te.id == id){
- return te;
- }
- }
- }
- };
-}else{
- dojo.byId = function(id, doc){
- // inline'd type check
- return (typeof id == "string") ? (doc || dojo.doc).getElementById(id) : id; // DomNode
- };
-}
-/*=====
-};
-=====*/
-
-(function(){
- var d = dojo;
- var byId = d.byId;
-
- var _destroyContainer = null,
- _destroyDoc;
- d.addOnWindowUnload(function(){
- _destroyContainer = null; //prevent IE leak
- });
-
-/*=====
- dojo._destroyElement = function(node){
- // summary:
- // Existing alias for `dojo.destroy`. Deprecated, will be removed
- // in 2.0
- }
-=====*/
- dojo._destroyElement = dojo.destroy = function(/*String|DomNode*/node){
- // summary:
- // Removes a node from its parent, clobbering it and all of its
- // children.
- //
- // description:
- // Removes a node from its parent, clobbering it and all of its
- // children. Function only works with DomNodes, and returns nothing.
- //
- // node:
- // A String ID or DomNode reference of the element to be destroyed
- //
- // example:
- // Destroy a node byId:
- // | dojo.destroy("someId");
- //
- // example:
- // Destroy all nodes in a list by reference:
- // | dojo.query(".someNode").forEach(dojo.destroy);
-
- node = byId(node);
- try{
- var doc = node.ownerDocument;
- // cannot use _destroyContainer.ownerDocument since this can throw an exception on IE
- if(!_destroyContainer || _destroyDoc != doc){
- _destroyContainer = doc.createElement("div");
- _destroyDoc = doc;
- }
- _destroyContainer.appendChild(node.parentNode ? node.parentNode.removeChild(node) : node);
- // NOTE: see http://trac.dojotoolkit.org/ticket/2931. This may be a bug and not a feature
- _destroyContainer.innerHTML = "";
- }catch(e){
- /* squelch */
- }
- };
-
- dojo.isDescendant = function(/*DomNode|String*/node, /*DomNode|String*/ancestor){
- // summary:
- // Returns true if node is a descendant of ancestor
- // node: string id or node reference to test
- // ancestor: string id or node reference of potential parent to test against
- //
- // example:
- // Test is node id="bar" is a descendant of node id="foo"
- // | if(dojo.isDescendant("bar", "foo")){ ... }
- try{
- node = byId(node);
- ancestor = byId(ancestor);
- while(node){
- if(node == ancestor){
- return true; // Boolean
- }
- node = node.parentNode;
- }
- }catch(e){ /* squelch, return false */ }
- return false; // Boolean
- };
-
- dojo.setSelectable = function(/*DomNode|String*/node, /*Boolean*/selectable){
- // summary:
- // Enable or disable selection on a node
- // node:
- // id or reference to node
- // selectable:
- // state to put the node in. false indicates unselectable, true
- // allows selection.
- // example:
- // Make the node id="bar" unselectable
- // | dojo.setSelectable("bar");
- // example:
- // Make the node id="bar" selectable
- // | dojo.setSelectable("bar", true);
- node = byId(node);
- if(d.isMozilla){
- node.style.MozUserSelect = selectable ? "" : "none";
- }else if(d.isKhtml || d.isWebKit){
- node.style.KhtmlUserSelect = selectable ? "auto" : "none";
- }else if(d.isIE){
- var v = (node.unselectable = selectable ? "" : "on");
- d.query("*", node).forEach("item.unselectable = '"+v+"'");
- }
- //FIXME: else? Opera?
- };
-
- var _insertBefore = function(/*DomNode*/node, /*DomNode*/ref){
- var parent = ref.parentNode;
- if(parent){
- parent.insertBefore(node, ref);
- }
- };
-
- var _insertAfter = function(/*DomNode*/node, /*DomNode*/ref){
- // summary:
- // Try to insert node after ref
- var parent = ref.parentNode;
- if(parent){
- if(parent.lastChild == ref){
- parent.appendChild(node);
- }else{
- parent.insertBefore(node, ref.nextSibling);
- }
- }
- };
-
- dojo.place = function(node, refNode, position){
- // summary:
- // Attempt to insert node into the DOM, choosing from various positioning options.
- // Returns the first argument resolved to a DOM node.
- //
- // node: String|DomNode
- // id or node reference, or HTML fragment starting with "<" to place relative to refNode
- //
- // refNode: String|DomNode
- // id or node reference to use as basis for placement
- //
- // position: String|Number?
- // string noting the position of node relative to refNode or a
- // number indicating the location in the childNodes collection of refNode.
- // Accepted string values are:
- // | * before
- // | * after
- // | * replace
- // | * only
- // | * first
- // | * last
- // "first" and "last" indicate positions as children of refNode, "replace" replaces refNode,
- // "only" replaces all children. position defaults to "last" if not specified
- //
- // returns: DomNode
- // Returned values is the first argument resolved to a DOM node.
- //
- // .place() is also a method of `dojo.NodeList`, allowing `dojo.query` node lookups.
- //
- // example:
- // Place a node by string id as the last child of another node by string id:
- // | dojo.place("someNode", "anotherNode");
- //
- // example:
- // Place a node by string id before another node by string id
- // | dojo.place("someNode", "anotherNode", "before");
- //
- // example:
- // Create a Node, and place it in the body element (last child):
- // | dojo.place("<div></div>", dojo.body());
- //
- // example:
- // Put a new LI as the first child of a list by id:
- // | dojo.place("<li></li>", "someUl", "first");
-
- refNode = byId(refNode);
- if(typeof node == "string"){ // inline'd type check
- node = node.charAt(0) == "<" ? d._toDom(node, refNode.ownerDocument) : byId(node);
- }
- if(typeof position == "number"){ // inline'd type check
- var cn = refNode.childNodes;
- if(!cn.length || cn.length <= position){
- refNode.appendChild(node);
- }else{
- _insertBefore(node, cn[position < 0 ? 0 : position]);
- }
- }else{
- switch(position){
- case "before":
- _insertBefore(node, refNode);
- break;
- case "after":
- _insertAfter(node, refNode);
- break;
- case "replace":
- refNode.parentNode.replaceChild(node, refNode);
- break;
- case "only":
- d.empty(refNode);
- refNode.appendChild(node);
- break;
- case "first":
- if(refNode.firstChild){
- _insertBefore(node, refNode.firstChild);
- break;
- }
- // else fallthrough...
- default: // aka: last
- refNode.appendChild(node);
- }
- }
- return node; // DomNode
- }
-
- // Box functions will assume this model.
- // On IE/Opera, BORDER_BOX will be set if the primary document is in quirks mode.
- // Can be set to change behavior of box setters.
-
- // can be either:
- // "border-box"
- // "content-box" (default)
- dojo.boxModel = "content-box";
-
- // We punt per-node box mode testing completely.
- // If anybody cares, we can provide an additional (optional) unit
- // that overrides existing code to include per-node box sensitivity.
-
- // Opera documentation claims that Opera 9 uses border-box in BackCompat mode.
- // but experiments (Opera 9.10.8679 on Windows Vista) indicate that it actually continues to use content-box.
- // IIRC, earlier versions of Opera did in fact use border-box.
- // Opera guys, this is really confusing. Opera being broken in quirks mode is not our fault.
-
- if(d.isIE /*|| dojo.isOpera*/){
- // client code may have to adjust if compatMode varies across iframes
- d.boxModel = document.compatMode == "BackCompat" ? "border-box" : "content-box";
- }
-
- // =============================
- // Style Functions
- // =============================
-
- // getComputedStyle drives most of the style code.
- // Wherever possible, reuse the returned object.
- //
- // API functions below that need to access computed styles accept an
- // optional computedStyle parameter.
- // If this parameter is omitted, the functions will call getComputedStyle themselves.
- // This way, calling code can access computedStyle once, and then pass the reference to
- // multiple API functions.
-
-/*=====
- dojo.getComputedStyle = function(node){
- // summary:
- // Returns a "computed style" object.
- //
- // description:
- // Gets a "computed style" object which can be used to gather
- // information about the current state of the rendered node.
- //
- // Note that this may behave differently on different browsers.
- // Values may have different formats and value encodings across
- // browsers.
- //
- // Note also that this method is expensive. Wherever possible,
- // reuse the returned object.
- //
- // Use the dojo.style() method for more consistent (pixelized)
- // return values.
- //
- // node: DOMNode
- // A reference to a DOM node. Does NOT support taking an
- // ID string for speed reasons.
- // example:
- // | dojo.getComputedStyle(dojo.byId('foo')).borderWidth;
- //
- // example:
- // Reusing the returned object, avoiding multiple lookups:
- // | var cs = dojo.getComputedStyle(dojo.byId("someNode"));
- // | var w = cs.width, h = cs.height;
- return; // CSS2Properties
- }
-=====*/
-
- // Although we normally eschew argument validation at this
- // level, here we test argument 'node' for (duck)type,
- // by testing nodeType, ecause 'document' is the 'parentNode' of 'body'
- // it is frequently sent to this function even
- // though it is not Element.
- var gcs;
- if(d.isWebKit){
- gcs = function(/*DomNode*/node){
- var s;
- if(node.nodeType == 1){
- var dv = node.ownerDocument.defaultView;
- s = dv.getComputedStyle(node, null);
- if(!s && node.style){
- node.style.display = "";
- s = dv.getComputedStyle(node, null);
- }
- }
- return s || {};
- };
- }else if(d.isIE){
- gcs = function(node){
- // IE (as of 7) doesn't expose Element like sane browsers
- return node.nodeType == 1 /* ELEMENT_NODE*/ ? node.currentStyle : {};
- };
- }else{
- gcs = function(node){
- return node.nodeType == 1 ?
- node.ownerDocument.defaultView.getComputedStyle(node, null) : {};
- };
- }
- dojo.getComputedStyle = gcs;
-
- if(!d.isIE){
- d._toPixelValue = function(element, value){
- // style values can be floats, client code may want
- // to round for integer pixels.
- return parseFloat(value) || 0;
- };
- }else{
- d._toPixelValue = function(element, avalue){
- if(!avalue){ return 0; }
- // on IE7, medium is usually 4 pixels
- if(avalue == "medium"){ return 4; }
- // style values can be floats, client code may
- // want to round this value for integer pixels.
- if(avalue.slice && avalue.slice(-2) == 'px'){ return parseFloat(avalue); }
- with(element){
- var sLeft = style.left;
- var rsLeft = runtimeStyle.left;
- runtimeStyle.left = currentStyle.left;
- try{
- // 'avalue' may be incompatible with style.left, which can cause IE to throw
- // this has been observed for border widths using "thin", "medium", "thick" constants
- // those particular constants could be trapped by a lookup
- // but perhaps there are more
- style.left = avalue;
- avalue = style.pixelLeft;
- }catch(e){
- avalue = 0;
- }
- style.left = sLeft;
- runtimeStyle.left = rsLeft;
- }
- return avalue;
- }
- }
- var px = d._toPixelValue;
-
- // FIXME: there opacity quirks on FF that we haven't ported over. Hrm.
- /*=====
- dojo._getOpacity = function(node){
- // summary:
- // Returns the current opacity of the passed node as a
- // floating-point value between 0 and 1.
- // node: DomNode
- // a reference to a DOM node. Does NOT support taking an
- // ID string for speed reasons.
- // returns: Number between 0 and 1
- return; // Number
- }
- =====*/
-
- var astr = "DXImageTransform.Microsoft.Alpha";
- var af = function(n, f){
- try{
- return n.filters.item(astr);
- }catch(e){
- return f ? {} : null;
- }
- };
-
- dojo._getOpacity =
- d.isIE ? function(node){
- try{
- return af(node).Opacity / 100; // Number
- }catch(e){
- return 1; // Number
- }
- } :
- function(node){
- return gcs(node).opacity;
- };
-
- /*=====
- dojo._setOpacity = function(node, opacity){
- // summary:
- // set the opacity of the passed node portably. Returns the
- // new opacity of the node.
- // node: DOMNode
- // a reference to a DOM node. Does NOT support taking an
- // ID string for performance reasons.
- // opacity: Number
- // A Number between 0 and 1. 0 specifies transparent.
- // returns: Number between 0 and 1
- return; // Number
- }
- =====*/
-
- dojo._setOpacity =
- d.isIE ? function(/*DomNode*/node, /*Number*/opacity){
- var ov = opacity * 100;
- node.style.zoom = 1.0;
-
- // on IE7 Alpha(Filter opacity=100) makes text look fuzzy so disable it altogether (bug #2661),
- //but still update the opacity value so we can get a correct reading if it is read later.
- af(node, 1).Enabled = !(opacity == 1);
-
- if(!af(node)){
- node.style.filter += " progid:" + astr + "(Opacity=" + ov + ")";
- }else{
- af(node, 1).Opacity = ov;
- }
-
- if(node.nodeName.toLowerCase() == "tr"){
- d.query("> td", node).forEach(function(i){
- d._setOpacity(i, opacity);
- });
- }
- return opacity;
- } :
- function(node, opacity){
- return node.style.opacity = opacity;
- };
-
- var _pixelNamesCache = {
- left: true, top: true
- };
- var _pixelRegExp = /margin|padding|width|height|max|min|offset/; // |border
- var _toStyleValue = function(node, type, value){
- type = type.toLowerCase(); // FIXME: should we really be doing string case conversion here? Should we cache it? Need to profile!
- if(d.isIE){
- if(value == "auto"){
- if(type == "height"){ return node.offsetHeight; }
- if(type == "width"){ return node.offsetWidth; }
- }
- if(type == "fontweight"){
- switch(value){
- case 700: return "bold";
- case 400:
- default: return "normal";
- }
- }
- }
- if(!(type in _pixelNamesCache)){
- _pixelNamesCache[type] = _pixelRegExp.test(type);
- }
- return _pixelNamesCache[type] ? px(node, value) : value;
- };
-
- var _floatStyle = d.isIE ? "styleFloat" : "cssFloat",
- _floatAliases = { "cssFloat": _floatStyle, "styleFloat": _floatStyle, "float": _floatStyle }
- ;
-
- // public API
-
- dojo.style = function( /*DomNode|String*/ node,
- /*String?|Object?*/ style,
- /*String?*/ value){
- // summary:
- // Accesses styles on a node. If 2 arguments are
- // passed, acts as a getter. If 3 arguments are passed, acts
- // as a setter.
- // description:
- // Getting the style value uses the computed style for the node, so the value
- // will be a calculated value, not just the immediate node.style value.
- // Also when getting values, use specific style names,
- // like "borderBottomWidth" instead of "border" since compound values like
- // "border" are not necessarily reflected as expected.
- // If you want to get node dimensions, use `dojo.marginBox()`,
- // `dojo.contentBox()` or `dojo.position()`.
- // node:
- // id or reference to node to get/set style for
- // style:
- // the style property to set in DOM-accessor format
- // ("borderWidth", not "border-width") or an object with key/value
- // pairs suitable for setting each property.
- // value:
- // If passed, sets value on the node for style, handling
- // cross-browser concerns. When setting a pixel value,
- // be sure to include "px" in the value. For instance, top: "200px".
- // Otherwise, in some cases, some browsers will not apply the style.
- // example:
- // Passing only an ID or node returns the computed style object of
- // the node:
- // | dojo.style("thinger");
- // example:
- // Passing a node and a style property returns the current
- // normalized, computed value for that property:
- // | dojo.style("thinger", "opacity"); // 1 by default
- //
- // example:
- // Passing a node, a style property, and a value changes the
- // current display of the node and returns the new computed value
- // | dojo.style("thinger", "opacity", 0.5); // == 0.5
- //
- // example:
- // Passing a node, an object-style style property sets each of the values in turn and returns the computed style object of the node:
- // | dojo.style("thinger", {
- // | "opacity": 0.5,
- // | "border": "3px solid black",
- // | "height": "300px"
- // | });
- //
- // example:
- // When the CSS style property is hyphenated, the JavaScript property is camelCased.
- // font-size becomes fontSize, and so on.
- // | dojo.style("thinger",{
- // | fontSize:"14pt",
- // | letterSpacing:"1.2em"
- // | });
- //
- // example:
- // dojo.NodeList implements .style() using the same syntax, omitting the "node" parameter, calling
- // dojo.style() on every element of the list. See: `dojo.query()` and `dojo.NodeList()`
- // | dojo.query(".someClassName").style("visibility","hidden");
- // | // or
- // | dojo.query("#baz > div").style({
- // | opacity:0.75,
- // | fontSize:"13pt"
- // | });
-
- var n = byId(node), args = arguments.length, op = (style == "opacity");
- style = _floatAliases[style] || style;
- if(args == 3){
- return op ? d._setOpacity(n, value) : n.style[style] = value; /*Number*/
- }
- if(args == 2 && op){
- return d._getOpacity(n);
- }
- var s = gcs(n);
- if(args == 2 && typeof style != "string"){ // inline'd type check
- for(var x in style){
- d.style(node, x, style[x]);
- }
- return s;
- }
- return (args == 1) ? s : _toStyleValue(n, style, s[style] || n.style[style]); /* CSS2Properties||String||Number */
- }
-
- // =============================
- // Box Functions
- // =============================
-
- dojo._getPadExtents = function(/*DomNode*/n, /*Object*/computedStyle){
- // summary:
- // Returns object with special values specifically useful for node
- // fitting.
- // description:
- // Returns an object with `w`, `h`, `l`, `t` properties:
- // | l/t = left/top padding (respectively)
- // | w = the total of the left and right padding
- // | h = the total of the top and bottom padding
- // If 'node' has position, l/t forms the origin for child nodes.
- // The w/h are used for calculating boxes.
- // Normally application code will not need to invoke this
- // directly, and will use the ...box... functions instead.
- var
- s = computedStyle||gcs(n),
- l = px(n, s.paddingLeft),
- t = px(n, s.paddingTop);
- return {
- l: l,
- t: t,
- w: l+px(n, s.paddingRight),
- h: t+px(n, s.paddingBottom)
- };
- }
-
- dojo._getBorderExtents = function(/*DomNode*/n, /*Object*/computedStyle){
- // summary:
- // returns an object with properties useful for noting the border
- // dimensions.
- // description:
- // * l/t = the sum of left/top border (respectively)
- // * w = the sum of the left and right border
- // * h = the sum of the top and bottom border
- //
- // The w/h are used for calculating boxes.
- // Normally application code will not need to invoke this
- // directly, and will use the ...box... functions instead.
- var
- ne = "none",
- s = computedStyle||gcs(n),
- bl = (s.borderLeftStyle != ne ? px(n, s.borderLeftWidth) : 0),
- bt = (s.borderTopStyle != ne ? px(n, s.borderTopWidth) : 0);
- return {
- l: bl,
- t: bt,
- w: bl + (s.borderRightStyle!=ne ? px(n, s.borderRightWidth) : 0),
- h: bt + (s.borderBottomStyle!=ne ? px(n, s.borderBottomWidth) : 0)
- };
- }
-
- dojo._getPadBorderExtents = function(/*DomNode*/n, /*Object*/computedStyle){
- // summary:
- // Returns object with properties useful for box fitting with
- // regards to padding.
- // description:
- // * l/t = the sum of left/top padding and left/top border (respectively)
- // * w = the sum of the left and right padding and border
- // * h = the sum of the top and bottom padding and border
- //
- // The w/h are used for calculating boxes.
- // Normally application code will not need to invoke this
- // directly, and will use the ...box... functions instead.
- var
- s = computedStyle||gcs(n),
- p = d._getPadExtents(n, s),
- b = d._getBorderExtents(n, s);
- return {
- l: p.l + b.l,
- t: p.t + b.t,
- w: p.w + b.w,
- h: p.h + b.h
- };
- }
-
- dojo._getMarginExtents = function(n, computedStyle){
- // summary:
- // returns object with properties useful for box fitting with
- // regards to box margins (i.e., the outer-box).
- //
- // * l/t = marginLeft, marginTop, respectively
- // * w = total width, margin inclusive
- // * h = total height, margin inclusive
- //
- // The w/h are used for calculating boxes.
- // Normally application code will not need to invoke this
- // directly, and will use the ...box... functions instead.
- var
- s = computedStyle||gcs(n),
- l = px(n, s.marginLeft),
- t = px(n, s.marginTop),
- r = px(n, s.marginRight),
- b = px(n, s.marginBottom);
- if(d.isWebKit && (s.position != "absolute")){
- // FIXME: Safari's version of the computed right margin
- // is the space between our right edge and the right edge
- // of our offsetParent.
- // What we are looking for is the actual margin value as
- // determined by CSS.
- // Hack solution is to assume left/right margins are the same.
- r = l;
- }
- return {
- l: l,
- t: t,
- w: l+r,
- h: t+b
- };
- }
-
- // Box getters work in any box context because offsetWidth/clientWidth
- // are invariant wrt box context
- //
- // They do *not* work for display: inline objects that have padding styles
- // because the user agent ignores padding (it's bogus styling in any case)
- //
- // Be careful with IMGs because they are inline or block depending on
- // browser and browser mode.
-
- // Although it would be easier to read, there are not separate versions of
- // _getMarginBox for each browser because:
- // 1. the branching is not expensive
- // 2. factoring the shared code wastes cycles (function call overhead)
- // 3. duplicating the shared code wastes bytes
-
- dojo._getMarginBox = function(/*DomNode*/node, /*Object*/computedStyle){
- // summary:
- // returns an object that encodes the width, height, left and top
- // positions of the node's margin box.
- var s = computedStyle || gcs(node), me = d._getMarginExtents(node, s);
- var l = node.offsetLeft - me.l, t = node.offsetTop - me.t, p = node.parentNode;
- if(d.isMoz){
- // Mozilla:
- // If offsetParent has a computed overflow != visible, the offsetLeft is decreased
- // by the parent's border.
- // We don't want to compute the parent's style, so instead we examine node's
- // computed left/top which is more stable.
- var sl = parseFloat(s.left), st = parseFloat(s.top);
- if(!isNaN(sl) && !isNaN(st)){
- l = sl, t = st;
- }else{
- // If child's computed left/top are not parseable as a number (e.g. "auto"), we
- // have no choice but to examine the parent's computed style.
- if(p && p.style){
- var pcs = gcs(p);
- if(pcs.overflow != "visible"){
- var be = d._getBorderExtents(p, pcs);
- l += be.l, t += be.t;
- }
- }
- }
- }else if(d.isOpera || (d.isIE > 7 && !d.isQuirks)){
- // On Opera and IE 8, offsetLeft/Top includes the parent's border
- if(p){
- be = d._getBorderExtents(p);
- l -= be.l;
- t -= be.t;
- }
- }
- return {
- l: l,
- t: t,
- w: node.offsetWidth + me.w,
- h: node.offsetHeight + me.h
- };
- }
-
- dojo._getContentBox = function(node, computedStyle){
- // summary:
- // Returns an object that encodes the width, height, left and top
- // positions of the node's content box, irrespective of the
- // current box model.
-
- // clientWidth/Height are important since the automatically account for scrollbars
- // fallback to offsetWidth/Height for special cases (see #3378)
- var s = computedStyle || gcs(node),
- pe = d._getPadExtents(node, s),
- be = d._getBorderExtents(node, s),
- w = node.clientWidth,
- h
- ;
- if(!w){
- w = node.offsetWidth, h = node.offsetHeight;
- }else{
- h = node.clientHeight, be.w = be.h = 0;
- }
- // On Opera, offsetLeft includes the parent's border
- if(d.isOpera){ pe.l += be.l; pe.t += be.t; };
- return {
- l: pe.l,
- t: pe.t,
- w: w - pe.w - be.w,
- h: h - pe.h - be.h
- };
- }
-
- dojo._getBorderBox = function(node, computedStyle){
- var s = computedStyle || gcs(node),
- pe = d._getPadExtents(node, s),
- cb = d._getContentBox(node, s)
- ;
- return {
- l: cb.l - pe.l,
- t: cb.t - pe.t,
- w: cb.w + pe.w,
- h: cb.h + pe.h
- };
- }
-
- // Box setters depend on box context because interpretation of width/height styles
- // vary wrt box context.
- //
- // The value of dojo.boxModel is used to determine box context.
- // dojo.boxModel can be set directly to change behavior.
- //
- // Beware of display: inline objects that have padding styles
- // because the user agent ignores padding (it's a bogus setup anyway)
- //
- // Be careful with IMGs because they are inline or block depending on
- // browser and browser mode.
- //
- // Elements other than DIV may have special quirks, like built-in
- // margins or padding, or values not detectable via computedStyle.
- // In particular, margins on TABLE do not seems to appear
- // at all in computedStyle on Mozilla.
-
- dojo._setBox = function(/*DomNode*/node, /*Number?*/l, /*Number?*/t, /*Number?*/w, /*Number?*/h, /*String?*/u){
- // summary:
- // sets width/height/left/top in the current (native) box-model
- // dimentions. Uses the unit passed in u.
- // node:
- // DOM Node reference. Id string not supported for performance
- // reasons.
- // l:
- // left offset from parent.
- // t:
- // top offset from parent.
- // w:
- // width in current box model.
- // h:
- // width in current box model.
- // u:
- // unit measure to use for other measures. Defaults to "px".
- u = u || "px";
- var s = node.style;
- if(!isNaN(l)){ s.left = l + u; }
- if(!isNaN(t)){ s.top = t + u; }
- if(w >= 0){ s.width = w + u; }
- if(h >= 0){ s.height = h + u; }
- }
-
- dojo._isButtonTag = function(/*DomNode*/node) {
- // summary:
- // True if the node is BUTTON or INPUT.type="button".
- return node.tagName == "BUTTON"
- || node.tagName=="INPUT" && (node.getAttribute("type")||'').toUpperCase() == "BUTTON"; // boolean
- }
-
- dojo._usesBorderBox = function(/*DomNode*/node){
- // summary:
- // True if the node uses border-box layout.
-
- // We could test the computed style of node to see if a particular box
- // has been specified, but there are details and we choose not to bother.
-
- // TABLE and BUTTON (and INPUT type=button) are always border-box by default.
- // If you have assigned a different box to either one via CSS then
- // box functions will break.
-
- var n = node.tagName;
- return d.boxModel=="border-box" || n=="TABLE" || d._isButtonTag(node); // boolean
- }
-
- dojo._setContentSize = function(/*DomNode*/node, /*Number*/widthPx, /*Number*/heightPx, /*Object*/computedStyle){
- // summary:
- // Sets the size of the node's contents, irrespective of margins,
- // padding, or borders.
- if(d._usesBorderBox(node)){
- var pb = d._getPadBorderExtents(node, computedStyle);
- if(widthPx >= 0){ widthPx += pb.w; }
- if(heightPx >= 0){ heightPx += pb.h; }
- }
- d._setBox(node, NaN, NaN, widthPx, heightPx);
- }
-
- dojo._setMarginBox = function(/*DomNode*/node, /*Number?*/leftPx, /*Number?*/topPx,
- /*Number?*/widthPx, /*Number?*/heightPx,
- /*Object*/computedStyle){
- // summary:
- // sets the size of the node's margin box and placement
- // (left/top), irrespective of box model. Think of it as a
- // passthrough to dojo._setBox that handles box-model vagaries for
- // you.
-
- var s = computedStyle || gcs(node),
- // Some elements have special padding, margin, and box-model settings.
- // To use box functions you may need to set padding, margin explicitly.
- // Controlling box-model is harder, in a pinch you might set dojo.boxModel.
- bb = d._usesBorderBox(node),
- pb = bb ? _nilExtents : d._getPadBorderExtents(node, s)
- ;
- if(d.isWebKit){
- // on Safari (3.1.2), button nodes with no explicit size have a default margin
- // setting an explicit size eliminates the margin.
- // We have to swizzle the width to get correct margin reading.
- if(d._isButtonTag(node)){
- var ns = node.style;
- if(widthPx >= 0 && !ns.width) { ns.width = "4px"; }
- if(heightPx >= 0 && !ns.height) { ns.height = "4px"; }
- }
- }
- var mb = d._getMarginExtents(node, s);
- if(widthPx >= 0){ widthPx = Math.max(widthPx - pb.w - mb.w, 0); }
- if(heightPx >= 0){ heightPx = Math.max(heightPx - pb.h - mb.h, 0); }
- d._setBox(node, leftPx, topPx, widthPx, heightPx);
- }
-
- var _nilExtents = { l:0, t:0, w:0, h:0 };
-
- // public API
-
- dojo.marginBox = function(/*DomNode|String*/node, /*Object?*/box){
- // summary:
- // Getter/setter for the margin-box of node.
- // description:
- // Getter/setter for the margin-box of node.
- // Returns an object in the expected format of box (regardless
- // if box is passed). The object might look like:
- // `{ l: 50, t: 200, w: 300: h: 150 }`
- // for a node offset from its parent 50px to the left, 200px from
- // the top with a margin width of 300px and a margin-height of
- // 150px.
- // node:
- // id or reference to DOM Node to get/set box for
- // box:
- // If passed, denotes that dojo.marginBox() should
- // update/set the margin box for node. Box is an object in the
- // above format. All properties are optional if passed.
- // example:
- // Retrieve the marginbox of a passed node
- // | var box = dojo.marginBox("someNodeId");
- // | console.dir(box);
- //
- // example:
- // Set a node's marginbox to the size of another node
- // | var box = dojo.marginBox("someNodeId");
- // | dojo.marginBox("someOtherNode", box);
-
- var n = byId(node), s = gcs(n), b = box;
- return !b ? d._getMarginBox(n, s) : d._setMarginBox(n, b.l, b.t, b.w, b.h, s); // Object
- }
-
- dojo.contentBox = function(/*DomNode|String*/node, /*Object?*/box){
- // summary:
- // Getter/setter for the content-box of node.
- // description:
- // Returns an object in the expected format of box (regardless if box is passed).
- // The object might look like:
- // `{ l: 50, t: 200, w: 300: h: 150 }`
- // for a node offset from its parent 50px to the left, 200px from
- // the top with a content width of 300px and a content-height of
- // 150px. Note that the content box may have a much larger border
- // or margin box, depending on the box model currently in use and
- // CSS values set/inherited for node.
- // node:
- // id or reference to DOM Node to get/set box for
- // box:
- // If passed, denotes that dojo.contentBox() should
- // update/set the content box for node. Box is an object in the
- // above format. All properties are optional if passed.
- var n = byId(node), s = gcs(n), b = box;
- return !b ? d._getContentBox(n, s) : d._setContentSize(n, b.w, b.h, s); // Object
- }
-
- // =============================
- // Positioning
- // =============================
-
- var _sumAncestorProperties = function(node, prop){
- if(!(node = (node||0).parentNode)){return 0}
- var val, retVal = 0, _b = d.body();
- while(node && node.style){
- if(gcs(node).position == "fixed"){
- return 0;
- }
- val = node[prop];
- if(val){
- retVal += val - 0;
- // opera and khtml #body & #html has the same values, we only
- // need one value
- if(node == _b){ break; }
- }
- node = node.parentNode;
- }
- return retVal; // integer
- }
-
- dojo._docScroll = function(){
- var n = d.global;
- return "pageXOffset" in n? { x:n.pageXOffset, y:n.pageYOffset } :
- (n=d.doc.documentElement, n.clientHeight? { x:d._fixIeBiDiScrollLeft(n.scrollLeft), y:n.scrollTop } :
- (n=d.body(), { x:n.scrollLeft||0, y:n.scrollTop||0 }));
- };
-
- dojo._isBodyLtr = function(){
- return "_bodyLtr" in d? d._bodyLtr :
- d._bodyLtr = (d.body().dir || d.doc.documentElement.dir || "ltr").toLowerCase() == "ltr"; // Boolean
- }
-
- dojo._getIeDocumentElementOffset = function(){
- // summary:
- // returns the offset in x and y from the document body to the
- // visual edge of the page
- // description:
- // The following values in IE contain an offset:
- // | event.clientX
- // | event.clientY
- // | node.getBoundingClientRect().left
- // | node.getBoundingClientRect().top
- // But other position related values do not contain this offset,
- // such as node.offsetLeft, node.offsetTop, node.style.left and
- // node.style.top. The offset is always (2, 2) in LTR direction.
- // When the body is in RTL direction, the offset counts the width
- // of left scroll bar's width. This function computes the actual
- // offset.
-
- //NOTE: assumes we're being called in an IE browser
-
- var de = d.doc.documentElement; // only deal with HTML element here, _abs handles body/quirks
-
- if(d.isIE < 8){
- var r = de.getBoundingClientRect(); // works well for IE6+
- //console.debug('rect left,top = ' + r.left+','+r.top + ', html client left/top = ' + de.clientLeft+','+de.clientTop + ', rtl = ' + (!d._isBodyLtr()) + ', quirks = ' + d.isQuirks);
- var l = r.left,
- t = r.top;
- if(d.isIE < 7){
- l += de.clientLeft; // scrollbar size in strict/RTL, or,
- t += de.clientTop; // HTML border size in strict
- }
- return {
- x: l < 0? 0 : l, // FRAME element border size can lead to inaccurate negative values
- y: t < 0? 0 : t
- };
- }else{
- return {
- x: 0,
- y: 0
- };
- }
-
- };
-
- dojo._fixIeBiDiScrollLeft = function(/*Integer*/ scrollLeft){
- // In RTL direction, scrollLeft should be a negative value, but IE < 8
- // returns a positive one. All codes using documentElement.scrollLeft
- // must call this function to fix this error, otherwise the position
- // will offset to right when there is a horizontal scrollbar.
-
- var dd = d.doc;
- if(d.isIE < 8 && !d._isBodyLtr()){
- var de = d.isQuirks ? dd.body : dd.documentElement;
- return scrollLeft + de.clientWidth - de.scrollWidth; // Integer
- }
- return scrollLeft; // Integer
- }
-
- // FIXME: need a setter for coords or a moveTo!!
- dojo._abs = dojo.position = function(/*DomNode*/node, /*Boolean?*/includeScroll){
- // summary:
- // Gets the position and size of the passed element relative to
- // the viewport (if includeScroll==false), or relative to the
- // document root (if includeScroll==true).
- //
- // description:
- // Returns an object of the form:
- // { x: 100, y: 300, w: 20, h: 15 }
- // If includeScroll==true, the x and y values will include any
- // document offsets that may affect the position relative to the
- // viewport.
- // Uses the border-box model (inclusive of border and padding but
- // not margin). Does not act as a setter.
-
- var db = d.body(), dh = db.parentNode, ret;
- node = byId(node);
- if(node["getBoundingClientRect"]){
- // IE6+, FF3+, super-modern WebKit, and Opera 9.6+ all take this branch
- ret = node.getBoundingClientRect();
- ret = { x: ret.left, y: ret.top, w: ret.right - ret.left, h: ret.bottom - ret.top };
- if(d.isIE){
- // On IE there's a 2px offset that we need to adjust for, see _getIeDocumentElementOffset()
- var offset = d._getIeDocumentElementOffset();
-
- // fixes the position in IE, quirks mode
- ret.x -= offset.x + (d.isQuirks ? db.clientLeft+db.offsetLeft : 0);
- ret.y -= offset.y + (d.isQuirks ? db.clientTop+db.offsetTop : 0);
- }else if(d.isFF == 3){
- // In FF3 you have to subtract the document element margins.
- // Fixed in FF3.5 though.
- var cs = gcs(dh);
- ret.x -= px(dh, cs.marginLeft) + px(dh, cs.borderLeftWidth);
- ret.y -= px(dh, cs.marginTop) + px(dh, cs.borderTopWidth);
- }
- }else{
- // FF2 and older WebKit
- ret = {
- x: 0,
- y: 0,
- w: node.offsetWidth,
- h: node.offsetHeight
- };
- if(node["offsetParent"]){
- ret.x -= _sumAncestorProperties(node, "scrollLeft");
- ret.y -= _sumAncestorProperties(node, "scrollTop");
-
- var curnode = node;
- do{
- var n = curnode.offsetLeft,
- t = curnode.offsetTop;
- ret.x += isNaN(n) ? 0 : n;
- ret.y += isNaN(t) ? 0 : t;
-
- cs = gcs(curnode);
- if(curnode != node){
- if(d.isMoz){
- // tried left+right with differently sized left/right borders
- // it really is 2xleft border in FF, not left+right, even in RTL!
- ret.x += 2 * px(curnode,cs.borderLeftWidth);
- ret.y += 2 * px(curnode,cs.borderTopWidth);
- }else{
- ret.x += px(curnode, cs.borderLeftWidth);
- ret.y += px(curnode, cs.borderTopWidth);
- }
- }
- // static children in a static div in FF2 are affected by the div's border as well
- // but offsetParent will skip this div!
- if(d.isMoz && cs.position=="static"){
- var parent=curnode.parentNode;
- while(parent!=curnode.offsetParent){
- var pcs=gcs(parent);
- if(pcs.position=="static"){
- ret.x += px(curnode,pcs.borderLeftWidth);
- ret.y += px(curnode,pcs.borderTopWidth);
- }
- parent=parent.parentNode;
- }
- }
- curnode = curnode.offsetParent;
- }while((curnode != dh) && curnode);
- }else if(node.x && node.y){
- ret.x += isNaN(node.x) ? 0 : node.x;
- ret.y += isNaN(node.y) ? 0 : node.y;
- }
- }
- // account for document scrolling
- // if offsetParent is used, ret value already includes scroll position
- // so we may have to actually remove that value if !includeScroll
- if(includeScroll){
- var scroll = d._docScroll();
- ret.x += scroll.x;
- ret.y += scroll.y;
- }
-
- return ret; // Object
- }
-
- dojo.coords = function(/*DomNode|String*/node, /*Boolean?*/includeScroll){
- // summary:
- // Deprecated: Use position() for border-box x/y/w/h
- // or marginBox() for margin-box w/h/l/t.
- // Returns an object representing a node's size and position.
- //
- // description:
- // Returns an object that measures margin-box (w)idth/(h)eight
- // and absolute position x/y of the border-box. Also returned
- // is computed (l)eft and (t)op values in pixels from the
- // node's offsetParent as returned from marginBox().
- // Return value will be in the form:
- //| { l: 50, t: 200, w: 300: h: 150, x: 100, y: 300 }
- // Does not act as a setter. If includeScroll is passed, the x and
- // y params are affected as one would expect in dojo.position().
- var n = byId(node), s = gcs(n), mb = d._getMarginBox(n, s);
- var abs = d.position(n, includeScroll);
- mb.x = abs.x;
- mb.y = abs.y;
- return mb;
- }
-
- // =============================
- // Element attribute Functions
- // =============================
-
- // dojo.attr() should conform to http://www.w3.org/TR/DOM-Level-2-Core/
-
- var _propNames = {
- // properties renamed to avoid clashes with reserved words
- "class": "className",
- "for": "htmlFor",
- // properties written as camelCase
- tabindex: "tabIndex",
- readonly: "readOnly",
- colspan: "colSpan",
- frameborder: "frameBorder",
- rowspan: "rowSpan",
- valuetype: "valueType"
- },
- _attrNames = {
- // original attribute names
- classname: "class",
- htmlfor: "for",
- // for IE
- tabindex: "tabIndex",
- readonly: "readOnly"
- },
- _forcePropNames = {
- innerHTML: 1,
- className: 1,
- htmlFor: d.isIE,
- value: 1
- };
-
- var _fixAttrName = function(/*String*/ name){
- return _attrNames[name.toLowerCase()] || name;
- };
-
- var _hasAttr = function(node, name){
- var attr = node.getAttributeNode && node.getAttributeNode(name);
- return attr && attr.specified; // Boolean
- };
-
- // There is a difference in the presence of certain properties and their default values
- // between browsers. For example, on IE "disabled" is present on all elements,
- // but it is value is "false"; "tabIndex" of <div> returns 0 by default on IE, yet other browsers
- // can return -1.
-
- dojo.hasAttr = function(/*DomNode|String*/node, /*String*/name){
- // summary:
- // Returns true if the requested attribute is specified on the
- // given element, and false otherwise.
- // node:
- // id or reference to the element to check
- // name:
- // the name of the attribute
- // returns:
- // true if the requested attribute is specified on the
- // given element, and false otherwise
- var lc = name.toLowerCase();
- return _forcePropNames[_propNames[lc] || name] || _hasAttr(byId(node), _attrNames[lc] || name); // Boolean
- }
-
- var _evtHdlrMap = {}, _ctr = 0,
- _attrId = dojo._scopeName + "attrid",
- // the next dictionary lists elements with read-only innerHTML on IE
- _roInnerHtml = {col: 1, colgroup: 1,
- // frameset: 1, head: 1, html: 1, style: 1,
- table: 1, tbody: 1, tfoot: 1, thead: 1, tr: 1, title: 1};
-
- dojo.attr = function(/*DomNode|String*/node, /*String|Object*/name, /*String?*/value){
- // summary:
- // Gets or sets an attribute on an HTML element.
- // description:
- // Handles normalized getting and setting of attributes on DOM
- // Nodes. If 2 arguments are passed, and a the second argumnt is a
- // string, acts as a getter.
- //
- // If a third argument is passed, or if the second argument is a
- // map of attributes, acts as a setter.
- //
- // When passing functions as values, note that they will not be
- // directly assigned to slots on the node, but rather the default
- // behavior will be removed and the new behavior will be added
- // using `dojo.connect()`, meaning that event handler properties
- // will be normalized and that some caveats with regards to
- // non-standard behaviors for onsubmit apply. Namely that you
- // should cancel form submission using `dojo.stopEvent()` on the
- // passed event object instead of returning a boolean value from
- // the handler itself.
- // node:
- // id or reference to the element to get or set the attribute on
- // name:
- // the name of the attribute to get or set.
- // value:
- // The value to set for the attribute
- // returns:
- // when used as a getter, the value of the requested attribute
- // or null if that attribute does not have a specified or
- // default value;
- //
- // when used as a setter, the DOM node
- //
- // example:
- // | // get the current value of the "foo" attribute on a node
- // | dojo.attr(dojo.byId("nodeId"), "foo");
- // | // or we can just pass the id:
- // | dojo.attr("nodeId", "foo");
- //
- // example:
- // | // use attr() to set the tab index
- // | dojo.attr("nodeId", "tabIndex", 3);
- // |
- //
- // example:
- // Set multiple values at once, including event handlers:
- // | dojo.attr("formId", {
- // | "foo": "bar",
- // | "tabIndex": -1,
- // | "method": "POST",
- // | "onsubmit": function(e){
- // | // stop submitting the form. Note that the IE behavior
- // | // of returning true or false will have no effect here
- // | // since our handler is connect()ed to the built-in
- // | // onsubmit behavior and so we need to use
- // | // dojo.stopEvent() to ensure that the submission
- // | // doesn't proceed.
- // | dojo.stopEvent(e);
- // |
- // | // submit the form with Ajax
- // | dojo.xhrPost({ form: "formId" });
- // | }
- // | });
- //
- // example:
- // Style is s special case: Only set with an object hash of styles
- // | dojo.attr("someNode",{
- // | id:"bar",
- // | style:{
- // | width:"200px", height:"100px", color:"#000"
- // | }
- // | });
- //
- // example:
- // Again, only set style as an object hash of styles:
- // | var obj = { color:"#fff", backgroundColor:"#000" };
- // | dojo.attr("someNode", "style", obj);
- // |
- // | // though shorter to use `dojo.style()` in this case:
- // | dojo.style("someNode", obj);
-
- node = byId(node);
- var args = arguments.length, prop;
- if(args == 2 && typeof name != "string"){ // inline'd type check
- // the object form of setter: the 2nd argument is a dictionary
- for(var x in name){
- d.attr(node, x, name[x]);
- }
- return node; // DomNode
- }
- var lc = name.toLowerCase(),
- propName = _propNames[lc] || name,
- forceProp = _forcePropNames[propName],
- attrName = _attrNames[lc] || name;
- if(args == 3){
- // setter
- do{
- if(propName == "style" && typeof value != "string"){ // inline'd type check
- // special case: setting a style
- d.style(node, value);
- break;
- }
- if(propName == "innerHTML"){
- // special case: assigning HTML
- if(d.isIE && node.tagName.toLowerCase() in _roInnerHtml){
- d.empty(node);
- node.appendChild(d._toDom(value, node.ownerDocument));
- }else{
- node[propName] = value;
- }
- break;
- }
- if(d.isFunction(value)){
- // special case: assigning an event handler
- // clobber if we can
- var attrId = d.attr(node, _attrId);
- if(!attrId){
- attrId = _ctr++;
- d.attr(node, _attrId, attrId);
- }
- if(!_evtHdlrMap[attrId]){
- _evtHdlrMap[attrId] = {};
- }
- var h = _evtHdlrMap[attrId][propName];
- if(h){
- d.disconnect(h);
- }else{
- try{
- delete node[propName];
- }catch(e){}
- }
- // ensure that event objects are normalized, etc.
- _evtHdlrMap[attrId][propName] = d.connect(node, propName, value);
- break;
- }
- if(forceProp || typeof value == "boolean"){
- // special case: forcing assignment to the property
- // special case: setting boolean to a property instead of attribute
- node[propName] = value;
- break;
- }
- // node's attribute
- node.setAttribute(attrName, value);
- }while(false);
- return node; // DomNode
- }
- // getter
- // should we access this attribute via a property or
- // via getAttribute()?
- value = node[propName];
- if(forceProp && typeof value != "undefined"){
- // node's property
- return value; // Anything
- }
- if(propName != "href" && (typeof value == "boolean" || d.isFunction(value))){
- // node's property
- return value; // Anything
- }
- // node's attribute
- // we need _hasAttr() here to guard against IE returning a default value
- return _hasAttr(node, attrName) ? node.getAttribute(attrName) : null; // Anything
- }
-
- dojo.removeAttr = function(/*DomNode|String*/ node, /*String*/ name){
- // summary:
- // Removes an attribute from an HTML element.
- // node:
- // id or reference to the element to remove the attribute from
- // name:
- // the name of the attribute to remove
- byId(node).removeAttribute(_fixAttrName(name));
- }
-
- dojo.getNodeProp = function(/*DomNode|String*/ node, /*String*/ name){
- // summary:
- // Returns an effective value of a property or an attribute.
- // node:
- // id or reference to the element to remove the attribute from
- // name:
- // the name of the attribute
- node = byId(node);
- var lc = name.toLowerCase(),
- propName = _propNames[lc] || name;
- if((propName in node) && propName != "href"){
- // node's property
- return node[propName]; // Anything
- }
- // node's attribute
- var attrName = _attrNames[lc] || name;
- return _hasAttr(node, attrName) ? node.getAttribute(attrName) : null; // Anything
- }
-
- dojo.create = function(tag, attrs, refNode, pos){
- // summary:
- // Create an element, allowing for optional attribute decoration
- // and placement.
- //
- // description:
- // A DOM Element creation function. A shorthand method for creating a node or
- // a fragment, and allowing for a convenient optional attribute setting step,
- // as well as an optional DOM placement reference.
- //|
- // Attributes are set by passing the optional object through `dojo.attr`.
- // See `dojo.attr` for noted caveats and nuances, and API if applicable.
- //|
- // Placement is done via `dojo.place`, assuming the new node to be the action
- // node, passing along the optional reference node and position.
- //
- // tag: String|DomNode
- // A string of the element to create (eg: "div", "a", "p", "li", "script", "br"),
- // or an existing DOM node to process.
- //
- // attrs: Object
- // An object-hash of attributes to set on the newly created node.
- // Can be null, if you don't want to set any attributes/styles.
- // See: `dojo.attr` for a description of available attributes.
- //
- // refNode: String?|DomNode?
- // Optional reference node. Used by `dojo.place` to place the newly created
- // node somewhere in the dom relative to refNode. Can be a DomNode reference
- // or String ID of a node.
- //
- // pos: String?
- // Optional positional reference. Defaults to "last" by way of `dojo.place`,
- // though can be set to "first","after","before","last", "replace" or "only"
- // to further control the placement of the new node relative to the refNode.
- // 'refNode' is required if a 'pos' is specified.
- //
- // returns: DomNode
- //
- // example:
- // Create a DIV:
- // | var n = dojo.create("div");
- //
- // example:
- // Create a DIV with content:
- // | var n = dojo.create("div", { innerHTML:"<p>hi</p>" });
- //
- // example:
- // Place a new DIV in the BODY, with no attributes set
- // | var n = dojo.create("div", null, dojo.body());
- //
- // example:
- // Create an UL, and populate it with LI's. Place the list as the first-child of a
- // node with id="someId":
- // | var ul = dojo.create("ul", null, "someId", "first");
- // | var items = ["one", "two", "three", "four"];
- // | dojo.forEach(items, function(data){
- // | dojo.create("li", { innerHTML: data }, ul);
- // | });
- //
- // example:
- // Create an anchor, with an href. Place in BODY:
- // | dojo.create("a", { href:"foo.html", title:"Goto FOO!" }, dojo.body());
- //
- // example:
- // Create a `dojo.NodeList()` from a new element (for syntatic sugar):
- // | dojo.query(dojo.create('div'))
- // | .addClass("newDiv")
- // | .onclick(function(e){ console.log('clicked', e.target) })
- // | .place("#someNode"); // redundant, but cleaner.
-
- var doc = d.doc;
- if(refNode){
- refNode = byId(refNode);
- doc = refNode.ownerDocument;
- }
- if(typeof tag == "string"){ // inline'd type check
- tag = doc.createElement(tag);
- }
- if(attrs){ d.attr(tag, attrs); }
- if(refNode){ d.place(tag, refNode, pos); }
- return tag; // DomNode
- }
-
- /*=====
- dojo.empty = function(node){
- // summary:
- // safely removes all children of the node.
- // node: DOMNode|String
- // a reference to a DOM node or an id.
- // example:
- // Destroy node's children byId:
- // | dojo.empty("someId");
- //
- // example:
- // Destroy all nodes' children in a list by reference:
- // | dojo.query(".someNode").forEach(dojo.empty);
- }
- =====*/
-
- d.empty =
- d.isIE ? function(node){
- node = byId(node);
- for(var c; c = node.lastChild;){ // intentional assignment
- d.destroy(c);
- }
- } :
- function(node){
- byId(node).innerHTML = "";
- };
-
- /*=====
- dojo._toDom = function(frag, doc){
- // summary:
- // instantiates an HTML fragment returning the corresponding DOM.
- // frag: String
- // the HTML fragment
- // doc: DocumentNode?
- // optional document to use when creating DOM nodes, defaults to
- // dojo.doc if not specified.
- // returns: DocumentFragment
- //
- // example:
- // Create a table row:
- // | var tr = dojo._toDom("<tr><td>First!</td></tr>");
- }
- =====*/
-
- // support stuff for dojo._toDom
- var tagWrap = {
- option: ["select"],
- tbody: ["table"],
- thead: ["table"],
- tfoot: ["table"],
- tr: ["table", "tbody"],
- td: ["table", "tbody", "tr"],
- th: ["table", "thead", "tr"],
- legend: ["fieldset"],
- caption: ["table"],
- colgroup: ["table"],
- col: ["table", "colgroup"],
- li: ["ul"]
- },
- reTag = /<\s*([\w\:]+)/,
- masterNode = {}, masterNum = 0,
- masterName = "__" + d._scopeName + "ToDomId";
-
- // generate start/end tag strings to use
- // for the injection for each special tag wrap case.
- for(var param in tagWrap){
- var tw = tagWrap[param];
- tw.pre = param == "option" ? '<select multiple="multiple">' : "<" + tw.join("><") + ">";
- tw.post = "</" + tw.reverse().join("></") + ">";
- // the last line is destructive: it reverses the array,
- // but we don't care at this point
- }
-
- d._toDom = function(frag, doc){
- // summary:
- // converts HTML string into DOM nodes.
-
- doc = doc || d.doc;
- var masterId = doc[masterName];
- if(!masterId){
- doc[masterName] = masterId = ++masterNum + "";
- masterNode[masterId] = doc.createElement("div");
- }
-
- // make sure the frag is a string.
- frag += "";
-
- // find the starting tag, and get node wrapper
- var match = frag.match(reTag),
- tag = match ? match[1].toLowerCase() : "",
- master = masterNode[masterId],
- wrap, i, fc, df;
- if(match && tagWrap[tag]){
- wrap = tagWrap[tag];
- master.innerHTML = wrap.pre + frag + wrap.post;
- for(i = wrap.length; i; --i){
- master = master.firstChild;
- }
- }else{
- master.innerHTML = frag;
- }
-
- // one node shortcut => return the node itself
- if(master.childNodes.length == 1){
- return master.removeChild(master.firstChild); // DOMNode
- }
-
- // return multiple nodes as a document fragment
- df = doc.createDocumentFragment();
- while(fc = master.firstChild){ // intentional assignment
- df.appendChild(fc);
- }
- return df; // DOMNode
- }
-
- // =============================
- // (CSS) Class Functions
- // =============================
- var _className = "className";
-
- dojo.hasClass = function(/*DomNode|String*/node, /*String*/classStr){
- // summary:
- // Returns whether or not the specified classes are a portion of the
- // class list currently applied to the node.
- //
- // node:
- // String ID or DomNode reference to check the class for.
- //
- // classStr:
- // A string class name to look for.
- //
- // example:
- // Do something if a node with id="someNode" has class="aSillyClassName" present
- // | if(dojo.hasClass("someNode","aSillyClassName")){ ... }
-
- return ((" "+ byId(node)[_className] +" ").indexOf(" " + classStr + " ") >= 0); // Boolean
- };
-
- var spaces = /\s+/, a1 = [""],
- str2array = function(s){
- if(typeof s == "string" || s instanceof String){
- if(s.indexOf(" ") < 0){
- a1[0] = s;
- return a1;
- }else{
- return s.split(spaces);
- }
- }
- // assumed to be an array
- return s;
- };
-
- dojo.addClass = function(/*DomNode|String*/node, /*String|Array*/classStr){
- // summary:
- // Adds the specified classes to the end of the class list on the
- // passed node. Will not re-apply duplicate classes.
- //
- // node:
- // String ID or DomNode reference to add a class string too
- //
- // classStr:
- // A String class name to add, or several space-separated class names,
- // or an array of class names.
- //
- // example:
- // Add a class to some node:
- // | dojo.addClass("someNode", "anewClass");
- //
- // example:
- // Add two classes at once:
- // | dojo.addClass("someNode", "firstClass secondClass");
- //
- // example:
- // Add two classes at once (using array):
- // | dojo.addClass("someNode", ["firstClass", "secondClass"]);
- //
- // example:
- // Available in `dojo.NodeList` for multiple additions
- // | dojo.query("ul > li").addClass("firstLevel");
-
- node = byId(node);
- classStr = str2array(classStr);
- var cls = " " + node[_className] + " ";
- for(var i = 0, len = classStr.length, c; i < len; ++i){
- c = classStr[i];
- if(c && cls.indexOf(" " + c + " ") < 0){
- cls += c + " ";
- }
- }
- node[_className] = d.trim(cls);
- };
-
- dojo.removeClass = function(/*DomNode|String*/node, /*String|Array?*/classStr){
- // summary:
- // Removes the specified classes from node. No `dojo.hasClass`
- // check is required.
- //
- // node:
- // String ID or DomNode reference to remove the class from.
- //
- // classStr:
- // An optional String class name to remove, or several space-separated
- // class names, or an array of class names. If omitted, all class names
- // will be deleted.
- //
- // example:
- // Remove a class from some node:
- // | dojo.removeClass("someNode", "firstClass");
- //
- // example:
- // Remove two classes from some node:
- // | dojo.removeClass("someNode", "firstClass secondClass");
- //
- // example:
- // Remove two classes from some node (using array):
- // | dojo.removeClass("someNode", ["firstClass", "secondClass"]);
- //
- // example:
- // Remove all classes from some node:
- // | dojo.removeClass("someNode");
- //
- // example:
- // Available in `dojo.NodeList()` for multiple removal
- // | dojo.query(".foo").removeClass("foo");
-
- node = byId(node);
- var cls;
- if(classStr !== undefined){
- classStr = str2array(classStr);
- cls = " " + node[_className] + " ";
- for(var i = 0, len = classStr.length; i < len; ++i){
- cls = cls.replace(" " + classStr[i] + " ", " ");
- }
- cls = d.trim(cls);
- }else{
- cls = "";
- }
- if(node[_className] != cls){ node[_className] = cls; }
- };
-
- dojo.toggleClass = function(/*DomNode|String*/node, /*String|Array*/classStr, /*Boolean?*/condition){
- // summary:
- // Adds a class to node if not present, or removes if present.
- // Pass a boolean condition if you want to explicitly add or remove.
- // condition:
- // If passed, true means to add the class, false means to remove.
- //
- // example:
- // | dojo.toggleClass("someNode", "hovered");
- //
- // example:
- // Forcefully add a class
- // | dojo.toggleClass("someNode", "hovered", true);
- //
- // example:
- // Available in `dojo.NodeList()` for multiple toggles
- // | dojo.query(".toggleMe").toggleClass("toggleMe");
-
- if(condition === undefined){
- condition = !d.hasClass(node, classStr);
- }
- d[condition ? "addClass" : "removeClass"](node, classStr);
- };
-
-})();
-
-}
diff --git a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dojo/_base/json.js b/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dojo/_base/json.js
deleted file mode 100644
index 691c704..0000000
--- a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dojo/_base/json.js
+++ /dev/null
@@ -1,153 +0,0 @@
-/*
- Copyright (c) 2004-2009, The Dojo Foundation All Rights Reserved.
- Available via Academic Free License >= 2.1 OR the modified BSD license.
- see: http://dojotoolkit.org/license for details
-*/
-
-
-if(!dojo._hasResource["dojo._base.json"]){ //_hasResource checks added by build. Do not use _hasResource directly in your code.
-dojo._hasResource["dojo._base.json"] = true;
-dojo.provide("dojo._base.json");
-
-dojo.fromJson = function(/*String*/ json){
- // summary:
- // Parses a [JSON](http://json.org) string to return a JavaScript object.
- // description:
- // Throws for invalid JSON strings, but it does not use a strict JSON parser. It
- // delegates to eval().
- // json:
- // a string literal of a JSON item, for instance:
- // `'{ "foo": [ "bar", 1, { "baz": "thud" } ] }'`
-
- return eval("(" + json + ")"); // Object
-}
-
-dojo._escapeString = function(/*String*/str){
- //summary:
- // Adds escape sequences for non-visual characters, double quote and
- // backslash and surrounds with double quotes to form a valid string
- // literal.
- return ('"' + str.replace(/(["\\])/g, '\\$1') + '"').
- replace(/[\f]/g, "\\f").replace(/[\b]/g, "\\b").replace(/[\n]/g, "\\n").
- replace(/[\t]/g, "\\t").replace(/[\r]/g, "\\r"); // string
-}
-
-dojo.toJsonIndentStr = "\t";
-dojo.toJson = function(/*Object*/ it, /*Boolean?*/ prettyPrint, /*String?*/ _indentStr){
- // summary:
- // Returns a [JSON](http://json.org) serialization of an object.
- // description:
- // Returns a [JSON](http://json.org) serialization of an object.
- // Note that this doesn't check for infinite recursion, so don't do that!
- // it:
- // an object to be serialized. Objects may define their own
- // serialization via a special "__json__" or "json" function
- // property. If a specialized serializer has been defined, it will
- // be used as a fallback.
- // prettyPrint:
- // if true, we indent objects and arrays to make the output prettier.
- // The variable `dojo.toJsonIndentStr` is used as the indent string --
- // to use something other than the default (tab), change that variable
- // before calling dojo.toJson().
- // _indentStr:
- // private variable for recursive calls when pretty printing, do not use.
- // example:
- // simple serialization of a trivial object
- // | var jsonStr = dojo.toJson({ howdy: "stranger!", isStrange: true });
- // | doh.is('{"howdy":"stranger!","isStrange":true}', jsonStr);
- // example:
- // a custom serializer for an objects of a particular class:
- // | dojo.declare("Furby", null, {
- // | furbies: "are strange",
- // | furbyCount: 10,
- // | __json__: function(){
- // | },
- // | });
-
- if(it === undefined){
- return "undefined";
- }
- var objtype = typeof it;
- if(objtype == "number" || objtype == "boolean"){
- return it + "";
- }
- if(it === null){
- return "null";
- }
- if(dojo.isString(it)){
- return dojo._escapeString(it);
- }
- // recurse
- var recurse = arguments.callee;
- // short-circuit for objects that support "json" serialization
- // if they return "self" then just pass-through...
- var newObj;
- _indentStr = _indentStr || "";
- var nextIndent = prettyPrint ? _indentStr + dojo.toJsonIndentStr : "";
- var tf = it.__json__||it.json;
- if(dojo.isFunction(tf)){
- newObj = tf.call(it);
- if(it !== newObj){
- return recurse(newObj, prettyPrint, nextIndent);
- }
- }
- if(it.nodeType && it.cloneNode){ // isNode
- // we can't seriailize DOM nodes as regular objects because they have cycles
- // DOM nodes could be serialized with something like outerHTML, but
- // that can be provided by users in the form of .json or .__json__ function.
- throw new Error("Can't serialize DOM nodes");
- }
-
- var sep = prettyPrint ? " " : "";
- var newLine = prettyPrint ? "\n" : "";
-
- // array
- if(dojo.isArray(it)){
- var res = dojo.map(it, function(obj){
- var val = recurse(obj, prettyPrint, nextIndent);
- if(typeof val != "string"){
- val = "undefined";
- }
- return newLine + nextIndent + val;
- });
- return "[" + res.join("," + sep) + newLine + _indentStr + "]";
- }
- /*
- // look in the registry
- try {
- window.o = it;
- newObj = dojo.json.jsonRegistry.match(it);
- return recurse(newObj, prettyPrint, nextIndent);
- }catch(e){
- // console.log(e);
- }
- // it's a function with no adapter, skip it
- */
- if(objtype == "function"){
- return null; // null
- }
- // generic object code path
- var output = [], key;
- for(key in it){
- var keyStr, val;
- if(typeof key == "number"){
- keyStr = '"' + key + '"';
- }else if(typeof key == "string"){
- keyStr = dojo._escapeString(key);
- }else{
- // skip non-string or number keys
- continue;
- }
- val = recurse(it[key], prettyPrint, nextIndent);
- if(typeof val != "string"){
- // skip non-serializable values
- continue;
- }
- // FIXME: use += on Moz!!
- // MOW NOTE: using += is a pain because you have to account for the dangling comma...
- output.push(newLine + nextIndent + keyStr + ":" + sep + val);
- }
- return "{" + output.join("," + sep) + newLine + _indentStr + "}"; // String
-}
-
-}
diff --git a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dojo/_base/lang.js b/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dojo/_base/lang.js
deleted file mode 100644
index e377b75..0000000
--- a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dojo/_base/lang.js
+++ /dev/null
@@ -1,392 +0,0 @@
-/*
- Copyright (c) 2004-2009, The Dojo Foundation All Rights Reserved.
- Available via Academic Free License >= 2.1 OR the modified BSD license.
- see: http://dojotoolkit.org/license for details
-*/
-
-
-if(!dojo._hasResource["dojo._base.lang"]){ //_hasResource checks added by build. Do not use _hasResource directly in your code.
-dojo._hasResource["dojo._base.lang"] = true;
-dojo.provide("dojo._base.lang");
-
-(function(){
- var d = dojo, opts = Object.prototype.toString;
-
- // Crockford (ish) functions
-
- dojo.isString = function(/*anything*/ it){
- // summary:
- // Return true if it is a String
- return (typeof it == "string" || it instanceof String); // Boolean
- }
-
- dojo.isArray = function(/*anything*/ it){
- // summary:
- // Return true if it is an Array.
- // Does not work on Arrays created in other windows.
- return it && (it instanceof Array || typeof it == "array"); // Boolean
- }
-
- dojo.isFunction = function(/*anything*/ it){
- // summary:
- // Return true if it is a Function
- return opts.call(it) === "[object Function]";
- };
-
- dojo.isObject = function(/*anything*/ it){
- // summary:
- // Returns true if it is a JavaScript object (or an Array, a Function
- // or null)
- return it !== undefined &&
- (it === null || typeof it == "object" || d.isArray(it) || d.isFunction(it)); // Boolean
- }
-
- dojo.isArrayLike = function(/*anything*/ it){
- // summary:
- // similar to dojo.isArray() but more permissive
- // description:
- // Doesn't strongly test for "arrayness". Instead, settles for "isn't
- // a string or number and has a length property". Arguments objects
- // and DOM collections will return true when passed to
- // dojo.isArrayLike(), but will return false when passed to
- // dojo.isArray().
- // returns:
- // If it walks like a duck and quacks like a duck, return `true`
- return it && it !== undefined && // Boolean
- // keep out built-in constructors (Number, String, ...) which have length
- // properties
- !d.isString(it) && !d.isFunction(it) &&
- !(it.tagName && it.tagName.toLowerCase() == 'form') &&
- (d.isArray(it) || isFinite(it.length));
- }
-
- dojo.isAlien = function(/*anything*/ it){
- // summary:
- // Returns true if it is a built-in function or some other kind of
- // oddball that *should* report as a function but doesn't
- return it && !d.isFunction(it) && /\{\s*\[native code\]\s*\}/.test(String(it)); // Boolean
- }
-
- dojo.extend = function(/*Object*/ constructor, /*Object...*/ props){
- // summary:
- // Adds all properties and methods of props to constructor's
- // prototype, making them available to all instances created with
- // constructor.
- for(var i=1, l=arguments.length; i<l; i++){
- d._mixin(constructor.prototype, arguments[i]);
- }
- return constructor; // Object
- }
-
- dojo._hitchArgs = function(scope, method /*,...*/){
- var pre = d._toArray(arguments, 2);
- var named = d.isString(method);
- return function(){
- // arrayify arguments
- var args = d._toArray(arguments);
- // locate our method
- var f = named ? (scope||d.global)[method] : method;
- // invoke with collected args
- return f && f.apply(scope || this, pre.concat(args)); // mixed
- } // Function
- }
-
- dojo.hitch = function(/*Object*/scope, /*Function|String*/method /*,...*/){
- // summary:
- // Returns a function that will only ever execute in the a given scope.
- // This allows for easy use of object member functions
- // in callbacks and other places in which the "this" keyword may
- // otherwise not reference the expected scope.
- // Any number of default positional arguments may be passed as parameters
- // beyond "method".
- // Each of these values will be used to "placehold" (similar to curry)
- // for the hitched function.
- // scope:
- // The scope to use when method executes. If method is a string,
- // scope is also the object containing method.
- // method:
- // A function to be hitched to scope, or the name of the method in
- // scope to be hitched.
- // example:
- // | dojo.hitch(foo, "bar")();
- // runs foo.bar() in the scope of foo
- // example:
- // | dojo.hitch(foo, myFunction);
- // returns a function that runs myFunction in the scope of foo
- // example:
- // Expansion on the default positional arguments passed along from
- // hitch. Passed args are mixed first, additional args after.
- // | var foo = { bar: function(a, b, c){ console.log(a, b, c); } };
- // | var fn = dojo.hitch(foo, "bar", 1, 2);
- // | fn(3); // logs "1, 2, 3"
- // example:
- // | var foo = { bar: 2 };
- // | dojo.hitch(foo, function(){ this.bar = 10; })();
- // execute an anonymous function in scope of foo
-
- if(arguments.length > 2){
- return d._hitchArgs.apply(d, arguments); // Function
- }
- if(!method){
- method = scope;
- scope = null;
- }
- if(d.isString(method)){
- scope = scope || d.global;
- if(!scope[method]){ throw(['dojo.hitch: scope["', method, '"] is null (scope="', scope, '")'].join('')); }
- return function(){ return scope[method].apply(scope, arguments || []); }; // Function
- }
- return !scope ? method : function(){ return method.apply(scope, arguments || []); }; // Function
- }
-
- /*=====
- dojo.delegate = function(obj, props){
- // summary:
- // Returns a new object which "looks" to obj for properties which it
- // does not have a value for. Optionally takes a bag of properties to
- // seed the returned object with initially.
- // description:
- // This is a small implementaton of the Boodman/Crockford delegation
- // pattern in JavaScript. An intermediate object constructor mediates
- // the prototype chain for the returned object, using it to delegate
- // down to obj for property lookup when object-local lookup fails.
- // This can be thought of similarly to ES4's "wrap", save that it does
- // not act on types but rather on pure objects.
- // obj:
- // The object to delegate to for properties not found directly on the
- // return object or in props.
- // props:
- // an object containing properties to assign to the returned object
- // returns:
- // an Object of anonymous type
- // example:
- // | var foo = { bar: "baz" };
- // | var thinger = dojo.delegate(foo, { thud: "xyzzy"});
- // | thinger.bar == "baz"; // delegated to foo
- // | foo.thud == undefined; // by definition
- // | thinger.thud == "xyzzy"; // mixed in from props
- // | foo.bar = "thonk";
- // | thinger.bar == "thonk"; // still delegated to foo's bar
- }
- =====*/
-
- dojo.delegate = dojo._delegate = (function(){
- // boodman/crockford delegation w/ cornford optimization
- function TMP(){}
- return function(obj, props){
- TMP.prototype = obj;
- var tmp = new TMP();
- TMP.prototype = null;
- if(props){
- d._mixin(tmp, props);
- }
- return tmp; // Object
- }
- })();
-
- /*=====
- dojo._toArray = function(obj, offset, startWith){
- // summary:
- // Converts an array-like object (i.e. arguments, DOMCollection) to an
- // array. Returns a new Array with the elements of obj.
- // obj: Object
- // the object to "arrayify". We expect the object to have, at a
- // minimum, a length property which corresponds to integer-indexed
- // properties.
- // offset: Number?
- // the location in obj to start iterating from. Defaults to 0.
- // Optional.
- // startWith: Array?
- // An array to pack with the properties of obj. If provided,
- // properties in obj are appended at the end of startWith and
- // startWith is the returned array.
- }
- =====*/
-
- var efficient = function(obj, offset, startWith){
- return (startWith||[]).concat(Array.prototype.slice.call(obj, offset||0));
- };
-
- var slow = function(obj, offset, startWith){
- var arr = startWith||[];
- for(var x = offset || 0; x < obj.length; x++){
- arr.push(obj[x]);
- }
- return arr;
- };
-
- dojo._toArray =
- d.isIE ? function(obj){
- return ((obj.item) ? slow : efficient).apply(this, arguments);
- } :
- efficient;
-
- dojo.partial = function(/*Function|String*/method /*, ...*/){
- // summary:
- // similar to hitch() except that the scope object is left to be
- // whatever the execution context eventually becomes.
- // description:
- // Calling dojo.partial is the functional equivalent of calling:
- // | dojo.hitch(null, funcName, ...);
- var arr = [ null ];
- return d.hitch.apply(d, arr.concat(d._toArray(arguments))); // Function
- }
-
- var extraNames = d._extraNames, extraLen = extraNames.length, empty = {};
-
- dojo.clone = function(/*anything*/ o){
- // summary:
- // Clones objects (including DOM nodes) and all children.
- // Warning: do not clone cyclic structures.
- if(!o || typeof o != "object" || d.isFunction(o)){
- // null, undefined, any non-object, or function
- return o; // anything
- }
- if(o.nodeType && "cloneNode" in o){
- // DOM Node
- return o.cloneNode(true); // Node
- }
- if(o instanceof Date){
- // Date
- return new Date(o.getTime()); // Date
- }
- var r, i, l, s, name;
- if(d.isArray(o)){
- // array
- r = [];
- for(i = 0, l = o.length; i < l; ++i){
- if(i in o){
- r.push(d.clone(o[i]));
- }
- }
-// we don't clone functions for performance reasons
-// }else if(d.isFunction(o)){
-// // function
-// r = function(){ return o.apply(this, arguments); };
- }else{
- // generic objects
- r = o.constructor ? new o.constructor() : {};
- }
- for(name in o){
- // the "tobj" condition avoid copying properties in "source"
- // inherited from Object.prototype. For example, if target has a custom
- // toString() method, don't overwrite it with the toString() method
- // that source inherited from Object.prototype
- s = o[name];
- if(!(name in r) || (r[name] !== s && (!(name in empty) || empty[name] !== s))){
- r[name] = d.clone(s);
- }
- }
- // IE doesn't recognize some custom functions in for..in
- if(extraLen){
- for(i = 0; i < extraLen; ++i){
- name = extraNames[i];
- s = o[name];
- if(!(name in r) || (r[name] !== s && (!(name in empty) || empty[name] !== s))){
- r[name] = s; // functions only, we don't clone them
- }
- }
- }
- return r; // Object
- }
-
- /*=====
- dojo.trim = function(str){
- // summary:
- // Trims whitespace from both sides of the string
- // str: String
- // String to be trimmed
- // returns: String
- // Returns the trimmed string
- // description:
- // This version of trim() was selected for inclusion into the base due
- // to its compact size and relatively good performance
- // (see [Steven Levithan's blog](http://blog.stevenlevithan.com/archives/faster-trim-javascript)
- // Uses String.prototype.trim instead, if available.
- // The fastest but longest version of this function is located at
- // dojo.string.trim()
- return ""; // String
- }
- =====*/
-
- dojo.trim = String.prototype.trim ?
- function(str){ return str.trim(); } :
- function(str){ return str.replace(/^\s\s*/, '').replace(/\s\s*$/, ''); };
-
- /*=====
- dojo.replace = function(tmpl, map, pattern){
- // summary:
- // Performs parameterized substitutions on a string. Throws an
- // exception if any parameter is unmatched.
- // tmpl: String
- // String to be used as a template.
- // map: Object|Function
- // If an object, it is used as a dictionary to look up substitutions.
- // If a function, it is called for every substitution with following
- // parameters: a whole match, a name, an offset, and the whole template
- // string (see https://developer.mozilla.org/en/Core_JavaScript_1.5_Reference/Global_Objects/String/replace
- // for more details).
- // pattern: RegEx?
- // Optional regular expression objects that overrides the default pattern.
- // Must be global and match one item. The default is: /\{([^\}]+)\}/g,
- // which matches patterns like that: "{xxx}", where "xxx" is any sequence
- // of characters, which doesn't include "}".
- // returns: String
- // Returns the substituted string.
- // example:
- // | // uses a dictionary for substitutions:
- // | dojo.replace("Hello, {name.first} {name.last} AKA {nick}!",
- // | {
- // | nick: "Bob",
- // | name: {
- // | first: "Robert",
- // | middle: "X",
- // | last: "Cringely"
- // | }
- // | });
- // | // returns: Hello, Robert Cringely AKA Bob!
- // example:
- // | // uses an array for substitutions:
- // | dojo.replace("Hello, {0} {2}!",
- // | ["Robert", "X", "Cringely"]);
- // | // returns: Hello, Robert Cringely!
- // example:
- // | // uses a function for substitutions:
- // | function sum(a){
- // | var t = 0;
- // | dojo.forEach(a, function(x){ t += x; });
- // | return t;
- // | }
- // | dojo.replace(
- // | "{count} payments averaging {avg} USD per payment.",
- // | dojo.hitch(
- // | { payments: [11, 16, 12] },
- // | function(_, key){
- // | switch(key){
- // | case "count": return this.payments.length;
- // | case "min": return Math.min.apply(Math, this.payments);
- // | case "max": return Math.max.apply(Math, this.payments);
- // | case "sum": return sum(this.payments);
- // | case "avg": return sum(this.payments) / this.payments.length;
- // | }
- // | }
- // | )
- // | );
- // | // prints: 3 payments averaging 13 USD per payment.
- // example:
- // | // uses an alternative PHP-like pattern for substitutions:
- // | dojo.replace("Hello, ${0} ${2}!",
- // | ["Robert", "X", "Cringely"], /\$\{([^\}]+)\}/g);
- // | // returns: Hello, Robert Cringely!
- return ""; // String
- }
- =====*/
-
- var _pattern = /\{([^\}]+)\}/g;
- dojo.replace = function(tmpl, map, pattern){
- return tmpl.replace(pattern || _pattern, d.isFunction(map) ?
- map : function(_, k){ return d.getObject(k, false, map); });
- };
-})();
-
-}
diff --git a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dojo/_base/query-sizzle.js b/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dojo/_base/query-sizzle.js
deleted file mode 100644
index caf6090..0000000
--- a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dojo/_base/query-sizzle.js
+++ /dev/null
@@ -1,869 +0,0 @@
-/*
- Copyright (c) 2004-2009, The Dojo Foundation All Rights Reserved.
- Available via Academic Free License >= 2.1 OR the modified BSD license.
- see: http://dojotoolkit.org/license for details
-*/
-
-
-if(!dojo._hasResource["dojo._base.query"]){ //_hasResource checks added by build. Do not use _hasResource directly in your code.
-dojo._hasResource["dojo._base.query"] = true;
-/*!
- * Sizzle CSS Selector Engine - v0.9
- * Copyright 2009, John Resig
- * Redistributed with the Dojo Toolkit under the terms of the New BSD license.
- * More information: http://sizzlejs.com/
- *
- * This version from github, dated 1/23/2009, commit: e374a73bbffc12ec3b5f252e7f76e593c508dfa5
- * Modified for dojo loader, and to fit into dojo namespace. This was done by passing
- * dojo object to anonymous function, then assigning Sizzle to dojo.Sizzle instead of window.Sizzle.
- * Then an alias for dojo.query and dojo._filterQueryResult(). dojo.psuedos is not mapped.
- * Finally, dojo.provide/require added.
- */
-
-//This file gets copied to dojo/_base/query.js, so set the provide accordingly.
-if(typeof dojo != "undefined"){
- dojo.provide("dojo._base.query");
- dojo.require("dojo._base.NodeList");
-
- //Start Dojo mappings.
- dojo.query = function(/*String*/ query, /*String|DOMNode?*/ root, /*Function?*/listCtor){
- listCtor = listCtor || dojo.NodeList;
-
- if(!query){
- return new listCtor();
- }
-
- if(query.constructor == listCtor){
- return query;
- }
- if(!dojo.isString(query)){
- return new listCtor(query); // dojo.NodeList
- }
- if(dojo.isString(root)){
- root = dojo.byId(root);
- if(!root){ return new listCtor(); }
- }
-
- return dojo.Sizzle(query, root, new listCtor());
- }
-
- dojo._filterQueryResult = function(nodeList, simpleFilter){
- return dojo.Sizzle.filter(simpleFilter, nodeList);
- }
-}
-
-//Main Sizzle code follows...
-//ns argument, added for dojo, used at the end of the file.
-;(function(ns){
-
-var chunker = /((?:\((?:\([^()]+\)|[^()]+)+\)|\[(?:\[[^[\]]*\]|[^[\]]+)+\]|\\.|[^ >+~,(\[]+)+|[>+~])(\s*,\s*)?/g,
- done = 0,
- toString = Object.prototype.toString;
-
-var Sizzle = function(selector, context, results, seed) {
- results = results || [];
- context = context || document;
-
- if ( context.nodeType !== 1 && context.nodeType !== 9 )
- return [];
-
- if ( !selector || typeof selector !== "string" ) {
- return results;
- }
-
- var parts = [], m, set, checkSet, check, mode, extra, prune = true;
-
- // Reset the position of the chunker regexp (start from head)
- chunker.lastIndex = 0;
-
- while ( (m = chunker.exec(selector)) !== null ) {
- parts.push( m[1] );
-
- if ( m[2] ) {
- extra = RegExp.rightContext;
- break;
- }
- }
-
- if ( parts.length > 1 && Expr.match.POS.exec( selector ) ) {
- if ( parts.length === 2 && Expr.relative[ parts[0] ] ) {
- var later = "", match;
-
- // Position selectors must be done after the filter
- while ( (match = Expr.match.POS.exec( selector )) ) {
- later += match[0];
- selector = selector.replace( Expr.match.POS, "" );
- }
-
- set = Sizzle.filter( later, Sizzle( selector, context ) );
- } else {
- set = Expr.relative[ parts[0] ] ?
- [ context ] :
- Sizzle( parts.shift(), context );
-
- while ( parts.length ) {
- var tmpSet = [];
-
- selector = parts.shift();
- if ( Expr.relative[ selector ] )
- selector += parts.shift();
-
- for ( var i = 0, l = set.length; i < l; i++ ) {
- Sizzle( selector, set[i], tmpSet );
- }
-
- set = tmpSet;
- }
- }
- } else {
- var ret = seed ?
- { expr: parts.pop(), set: makeArray(seed) } :
- Sizzle.find( parts.pop(), parts.length === 1 && context.parentNode ? context.parentNode : context );
- set = Sizzle.filter( ret.expr, ret.set );
-
- if ( parts.length > 0 ) {
- checkSet = makeArray(set);
- } else {
- prune = false;
- }
-
- while ( parts.length ) {
- var cur = parts.pop(), pop = cur;
-
- if ( !Expr.relative[ cur ] ) {
- cur = "";
- } else {
- pop = parts.pop();
- }
-
- if ( pop == null ) {
- pop = context;
- }
-
- Expr.relative[ cur ]( checkSet, pop );
- }
- }
-
- if ( !checkSet ) {
- checkSet = set;
- }
-
- if ( !checkSet ) {
- throw "Syntax error, unrecognized expression: " + (cur || selector);
- }
-
- if ( toString.call(checkSet) === "[object Array]" ) {
- if ( !prune ) {
- results.push.apply( results, checkSet );
- } else if ( context.nodeType === 1 ) {
- for ( var i = 0; checkSet[i] != null; i++ ) {
- if ( checkSet[i] && (checkSet[i] === true || checkSet[i].nodeType === 1 && contains(context, checkSet[i])) ) {
- results.push( set[i] );
- }
- }
- } else {
- for ( var i = 0; checkSet[i] != null; i++ ) {
- if ( checkSet[i] && checkSet[i].nodeType === 1 ) {
- results.push( set[i] );
- }
- }
- }
- } else {
- makeArray( checkSet, results );
- }
-
- if ( extra ) {
- Sizzle( extra, context, results, seed );
- }
-
- return results;
-};
-
-Sizzle.matches = function(expr, set){
- return Sizzle(expr, null, null, set);
-};
-
-Sizzle.find = function(expr, context){
- var set, match;
-
- if ( !expr ) {
- return [];
- }
-
- for ( var i = 0, l = Expr.order.length; i < l; i++ ) {
- var type = Expr.order[i], match;
-
- if ( (match = Expr.match[ type ].exec( expr )) ) {
- var left = RegExp.leftContext;
-
- if ( left.substr( left.length - 1 ) !== "\\" ) {
- match[1] = (match[1] || "").replace(/\\/g, "");
- set = Expr.find[ type ]( match, context );
- if ( set != null ) {
- expr = expr.replace( Expr.match[ type ], "" );
- break;
- }
- }
- }
- }
-
- if ( !set ) {
- set = context.getElementsByTagName("*");
- }
-
- return {set: set, expr: expr};
-};
-
-Sizzle.filter = function(expr, set, inplace, not){
- var old = expr, result = [], curLoop = set, match, anyFound;
-
- while ( expr && set.length ) {
- for ( var type in Expr.filter ) {
- if ( (match = Expr.match[ type ].exec( expr )) != null ) {
- var filter = Expr.filter[ type ], goodArray = null, goodPos = 0, found, item;
- anyFound = false;
-
- if ( curLoop == result ) {
- result = [];
- }
-
- if ( Expr.preFilter[ type ] ) {
- match = Expr.preFilter[ type ]( match, curLoop, inplace, result, not );
-
- if ( !match ) {
- anyFound = found = true;
- } else if ( match[0] === true ) {
- goodArray = [];
- var last = null, elem;
- for ( var i = 0; (elem = curLoop[i]) !== undefined; i++ ) {
- if ( elem && last !== elem ) {
- goodArray.push( elem );
- last = elem;
- }
- }
- }
- }
-
- if ( match ) {
- for ( var i = 0; (item = curLoop[i]) !== undefined; i++ ) {
- if ( item ) {
- if ( goodArray && item != goodArray[goodPos] ) {
- goodPos++;
- }
-
- found = filter( item, match, goodPos, goodArray );
- var pass = not ^ !!found;
-
- if ( inplace && found != null ) {
- if ( pass ) {
- anyFound = true;
- } else {
- curLoop[i] = false;
- }
- } else if ( pass ) {
- result.push( item );
- anyFound = true;
- }
- }
- }
- }
-
- if ( found !== undefined ) {
- if ( !inplace ) {
- curLoop = result;
- }
-
- expr = expr.replace( Expr.match[ type ], "" );
-
- if ( !anyFound ) {
- return [];
- }
-
- break;
- }
- }
- }
-
- expr = expr.replace(/\s*,\s*/, "");
-
- // Improper expression
- if ( expr == old ) {
- if ( anyFound == null ) {
- throw "Syntax error, unrecognized expression: " + expr;
- } else {
- break;
- }
- }
-
- old = expr;
- }
-
- return curLoop;
-};
-
-var Expr = Sizzle.selectors = {
- order: [ "ID", "NAME", "TAG" ],
- match: {
- ID: /#((?:[\w\u0128-\uFFFF_-]|\\.)+)/,
- CLASS: /\.((?:[\w\u0128-\uFFFF_-]|\\.)+)/,
- NAME: /\[name=['"]*((?:[\w\u0128-\uFFFF_-]|\\.)+)['"]*\]/,
- ATTR: /\[((?:[\w\u0128-\uFFFF_-]|\\.)+)\s*(?:(\S?=)\s*(['"]*)(.*?)\3|)\]/,
- TAG: /^((?:[\w\u0128-\uFFFF\*_-]|\\.)+)/,
- CHILD: /:(only|nth|last|first)-child\(?(even|odd|[\dn+-]*)\)?/,
- POS: /:(nth|eq|gt|lt|first|last|even|odd)\(?(\d*)\)?(?:[^-]|$)/,
- PSEUDO: /:((?:[\w\u0128-\uFFFF_-]|\\.)+)(?:\((['"]*)((?:\([^\)]+\)|[^\2\(\)]*)+)\2\))?/
- },
- attrMap: {
- "class": "className",
- "for": "htmlFor"
- },
- relative: {
- "+": function(checkSet, part){
- for ( var i = 0, l = checkSet.length; i < l; i++ ) {
- var elem = checkSet[i];
- if ( elem ) {
- var cur = elem.previousSibling;
- while ( cur && cur.nodeType !== 1 ) {
- cur = cur.previousSibling;
- }
- checkSet[i] = typeof part === "string" ?
- cur || false :
- cur === part;
- }
- }
-
- if ( typeof part === "string" ) {
- Sizzle.filter( part, checkSet, true );
- }
- },
- ">": function(checkSet, part){
- if ( typeof part === "string" && !/\W/.test(part) ) {
- part = part.toUpperCase();
-
- for ( var i = 0, l = checkSet.length; i < l; i++ ) {
- var elem = checkSet[i];
- if ( elem ) {
- var parent = elem.parentNode;
- checkSet[i] = parent.nodeName === part ? parent : false;
- }
- }
- } else {
- for ( var i = 0, l = checkSet.length; i < l; i++ ) {
- var elem = checkSet[i];
- if ( elem ) {
- checkSet[i] = typeof part === "string" ?
- elem.parentNode :
- elem.parentNode === part;
- }
- }
-
- if ( typeof part === "string" ) {
- Sizzle.filter( part, checkSet, true );
- }
- }
- },
- "": function(checkSet, part){
- var doneName = "done" + (done++), checkFn = dirCheck;
-
- if ( !part.match(/\W/) ) {
- var nodeCheck = part = part.toUpperCase();
- checkFn = dirNodeCheck;
- }
-
- checkFn("parentNode", part, doneName, checkSet, nodeCheck);
- },
- "~": function(checkSet, part){
- var doneName = "done" + (done++), checkFn = dirCheck;
-
- if ( typeof part === "string" && !part.match(/\W/) ) {
- var nodeCheck = part = part.toUpperCase();
- checkFn = dirNodeCheck;
- }
-
- checkFn("previousSibling", part, doneName, checkSet, nodeCheck);
- }
- },
- find: {
- ID: function(match, context){
- if ( context.getElementById ) {
- var m = context.getElementById(match[1]);
- return m ? [m] : [];
- }
- },
- NAME: function(match, context){
- return context.getElementsByName ? context.getElementsByName(match[1]) : null;
- },
- TAG: function(match, context){
- return context.getElementsByTagName(match[1]);
- }
- },
- preFilter: {
- CLASS: function(match, curLoop, inplace, result, not){
- match = " " + match[1].replace(/\\/g, "") + " ";
-
- for ( var i = 0; curLoop[i]; i++ ) {
- if ( not ^ (" " + curLoop[i].className + " ").indexOf(match) >= 0 ) {
- if ( !inplace )
- result.push( curLoop[i] );
- } else if ( inplace ) {
- curLoop[i] = false;
- }
- }
-
- return false;
- },
- ID: function(match){
- return match[1];
- },
- TAG: function(match){
- return match[1].toUpperCase();
- },
- CHILD: function(match){
- if ( match[1] == "nth" ) {
- // parse equations like 'even', 'odd', '5', '2n', '3n+2', '4n-1', '-n+6'
- var test = /(-?)(\d*)n((?:\+|-)?\d*)/.exec(
- match[2] == "even" && "2n" || match[2] == "odd" && "2n+1" ||
- !/\D/.test( match[2] ) && "0n+" + match[2] || match[2]);
-
- // calculate the numbers (first)n+(last) including if they are negative
- match[2] = (test[1] + (test[2] || 1)) - 0;
- match[3] = test[3] - 0;
- }
-
- // TODO: Move to normal caching system
- match[0] = "done" + (done++);
-
- return match;
- },
- ATTR: function(match){
- var name = match[1];
-
- if ( Expr.attrMap[name] ) {
- match[1] = Expr.attrMap[name];
- }
-
- if ( match[2] === "~=" ) {
- match[4] = " " + match[4] + " ";
- }
-
- return match;
- },
- PSEUDO: function(match, curLoop, inplace, result, not){
- if ( match[1] === "not" ) {
- // If we're dealing with a complex expression, or a simple one
- if ( match[3].match(chunker).length > 1 ) {
- match[3] = Sizzle(match[3], null, null, curLoop);
- } else {
- var ret = Sizzle.filter(match[3], curLoop, inplace, true ^ not);
- if ( !inplace ) {
- result.push.apply( result, ret );
- }
- return false;
- }
- }
-
- return match;
- },
- POS: function(match){
- match.unshift( true );
- return match;
- }
- },
- filters: {
- enabled: function(elem){
- return elem.disabled === false && elem.type !== "hidden";
- },
- disabled: function(elem){
- return elem.disabled === true;
- },
- checked: function(elem){
- return elem.checked === true;
- },
- selected: function(elem){
- // Accessing this property makes selected-by-default
- // options in Safari work properly
- elem.parentNode.selectedIndex;
- return elem.selected === true;
- },
- parent: function(elem){
- return !!elem.firstChild;
- },
- empty: function(elem){
- return !elem.firstChild;
- },
- has: function(elem, i, match){
- return !!Sizzle( match[3], elem ).length;
- },
- header: function(elem){
- return /h\d/i.test( elem.nodeName );
- },
- text: function(elem){
- return "text" === elem.type;
- },
- radio: function(elem){
- return "radio" === elem.type;
- },
- checkbox: function(elem){
- return "checkbox" === elem.type;
- },
- file: function(elem){
- return "file" === elem.type;
- },
- password: function(elem){
- return "password" === elem.type;
- },
- submit: function(elem){
- return "submit" === elem.type;
- },
- image: function(elem){
- return "image" === elem.type;
- },
- reset: function(elem){
- return "reset" === elem.type;
- },
- button: function(elem){
- return "button" === elem.type || elem.nodeName.toUpperCase() === "BUTTON";
- },
- input: function(elem){
- return /input|select|textarea|button/i.test(elem.nodeName);
- }
- },
- setFilters: {
- first: function(elem, i){
- return i === 0;
- },
- last: function(elem, i, match, array){
- return i === array.length - 1;
- },
- even: function(elem, i){
- return i % 2 === 0;
- },
- odd: function(elem, i){
- return i % 2 === 1;
- },
- lt: function(elem, i, match){
- return i < match[3] - 0;
- },
- gt: function(elem, i, match){
- return i > match[3] - 0;
- },
- nth: function(elem, i, match){
- return match[3] - 0 == i;
- },
- eq: function(elem, i, match){
- return match[3] - 0 == i;
- }
- },
- filter: {
- CHILD: function(elem, match){
- var type = match[1], parent = elem.parentNode;
-
- var doneName = match[0];
-
- if ( parent && !parent[ doneName ] ) {
- var count = 1;
-
- for ( var node = parent.firstChild; node; node = node.nextSibling ) {
- if ( node.nodeType == 1 ) {
- node.nodeIndex = count++;
- }
- }
-
- parent[ doneName ] = count - 1;
- }
-
- if ( type == "first" ) {
- return elem.nodeIndex == 1;
- } else if ( type == "last" ) {
- return elem.nodeIndex == parent[ doneName ];
- } else if ( type == "only" ) {
- return parent[ doneName ] == 1;
- } else if ( type == "nth" ) {
- var add = false, first = match[2], last = match[3];
-
- if ( first == 1 && last == 0 ) {
- return true;
- }
-
- if ( first == 0 ) {
- if ( elem.nodeIndex == last ) {
- add = true;
- }
- } else if ( (elem.nodeIndex - last) % first == 0 && (elem.nodeIndex - last) / first >= 0 ) {
- add = true;
- }
-
- return add;
- }
- },
- PSEUDO: function(elem, match, i, array){
- var name = match[1], filter = Expr.filters[ name ];
-
- if ( filter ) {
- return filter( elem, i, match, array );
- } else if ( name === "contains" ) {
- return (elem.textContent || elem.innerText || "").indexOf(match[3]) >= 0;
- } else if ( name === "not" ) {
- var not = match[3];
-
- for ( var i = 0, l = not.length; i < l; i++ ) {
- if ( not[i] === elem ) {
- return false;
- }
- }
-
- return true;
- }
- },
- ID: function(elem, match){
- return elem.nodeType === 1 && elem.getAttribute("id") === match;
- },
- TAG: function(elem, match){
- return (match === "*" && elem.nodeType === 1) || elem.nodeName === match;
- },
- CLASS: function(elem, match){
- return match.test( elem.className );
- },
- ATTR: function(elem, match){
- var result = elem[ match[1] ] || elem.getAttribute( match[1] ), value = result + "", type = match[2], check = match[4];
- return result == null ?
- false :
- type === "=" ?
- value === check :
- type === "*=" ?
- value.indexOf(check) >= 0 :
- type === "~=" ?
- (" " + value + " ").indexOf(check) >= 0 :
- !match[4] ?
- result :
- type === "!=" ?
- value != check :
- type === "^=" ?
- value.indexOf(check) === 0 :
- type === "$=" ?
- value.substr(value.length - check.length) === check :
- type === "|=" ?
- value === check || value.substr(0, check.length + 1) === check + "-" :
- false;
- },
- POS: function(elem, match, i, array){
- var name = match[2], filter = Expr.setFilters[ name ];
-
- if ( filter ) {
- return filter( elem, i, match, array );
- }
- }
- }
-};
-
-for ( var type in Expr.match ) {
- Expr.match[ type ] = RegExp( Expr.match[ type ].source + /(?![^\[]*\])(?![^\(]*\))/.source );
-}
-
-var makeArray = function(array, results) {
- array = Array.prototype.slice.call( array );
-
- if ( results ) {
- results.push.apply( results, array );
- return results;
- }
-
- return array;
-};
-
-// Perform a simple check to determine if the browser is capable of
-// converting a NodeList to an array using builtin methods.
-try {
- Array.prototype.slice.call( document.documentElement.childNodes );
-
-// Provide a fallback method if it does not work
-} catch(e){
- makeArray = function(array, results) {
- var ret = results || [];
-
- if ( toString.call(array) === "[object Array]" ) {
- Array.prototype.push.apply( ret, array );
- } else {
- if ( typeof array.length === "number" ) {
- for ( var i = 0, l = array.length; i < l; i++ ) {
- ret.push( array[i] );
- }
- } else {
- for ( var i = 0; array[i]; i++ ) {
- ret.push( array[i] );
- }
- }
- }
-
- return ret;
- };
-}
-
-// Check to see if the browser returns elements by name when
-// querying by getElementById (and provide a workaround)
-(function(){
- // We're going to inject a fake input element with a specified name
- var form = document.createElement("form"),
- id = "script" + (new Date).getTime();
- form.innerHTML = "<input name='" + id + "'/>";
-
- // Inject it into the root element, check its status, and remove it quickly
- var root = document.documentElement;
- root.insertBefore( form, root.firstChild );
-
- // The workaround has to do additional checks after a getElementById
- // Which slows things down for other browsers (hence the branching)
- if ( !!document.getElementById( id ) ) {
- Expr.find.ID = function(match, context){
- if ( context.getElementById ) {
- var m = context.getElementById(match[1]);
- return m ? m.id === match[1] || m.getAttributeNode && m.getAttributeNode("id").nodeValue === match[1] ? [m] : undefined : [];
- }
- };
-
- Expr.filter.ID = function(elem, match){
- var node = elem.getAttributeNode && elem.getAttributeNode("id");
- return elem.nodeType === 1 && node && node.nodeValue === match;
- };
- }
-
- root.removeChild( form );
-})();
-
-// Check to see if the browser returns only elements
-// when doing getElementsByTagName("*")
-(function(){
- // Create a fake element
- var div = document.createElement("div");
- div.appendChild( document.createComment("") );
-
- // Make sure no comments are found
- if ( div.getElementsByTagName("*").length > 0 ) {
- Expr.find.TAG = function(match, context){
- var results = context.getElementsByTagName(match[1]);
-
- // Filter out possible comments
- if ( match[1] === "*" ) {
- var tmp = [];
-
- for ( var i = 0; results[i]; i++ ) {
- if ( results[i].nodeType === 1 ) {
- tmp.push( results[i] );
- }
- }
-
- results = tmp;
- }
-
- return results;
- };
- }
-})();
-
-if ( document.querySelectorAll ) (function(){
- var oldSizzle = Sizzle;
-
- Sizzle = function(query, context, extra, seed){
- context = context || document;
-
- if ( !seed && context.nodeType === 9 ) {
- try {
- return makeArray( context.querySelectorAll(query), extra );
- } catch(e){}
- }
-
- return oldSizzle(query, context, extra, seed);
- };
-
- Sizzle.find = oldSizzle.find;
- Sizzle.filter = oldSizzle.filter;
- Sizzle.selectors = oldSizzle.selectors;
- Sizzle.matches = oldSizzle.matches;
-})();
-
-if ( document.documentElement.getElementsByClassName ) {
- Expr.order.splice(1, 0, "CLASS");
- Expr.find.CLASS = function(match, context) {
- return context.getElementsByClassName(match[1]);
- };
-}
-
-function dirNodeCheck( dir, cur, doneName, checkSet, nodeCheck ) {
- for ( var i = 0, l = checkSet.length; i < l; i++ ) {
- var elem = checkSet[i];
- if ( elem ) {
- elem = elem[dir];
- var match = false;
-
- while ( elem && elem.nodeType ) {
- var done = elem[doneName];
- if ( done ) {
- match = checkSet[ done ];
- break;
- }
-
- if ( elem.nodeType === 1 )
- elem[doneName] = i;
-
- if ( elem.nodeName === cur ) {
- match = elem;
- break;
- }
-
- elem = elem[dir];
- }
-
- checkSet[i] = match;
- }
- }
-}
-
-function dirCheck( dir, cur, doneName, checkSet, nodeCheck ) {
- for ( var i = 0, l = checkSet.length; i < l; i++ ) {
- var elem = checkSet[i];
- if ( elem ) {
- elem = elem[dir];
- var match = false;
-
- while ( elem && elem.nodeType ) {
- if ( elem[doneName] ) {
- match = checkSet[ elem[doneName] ];
- break;
- }
-
- if ( elem.nodeType === 1 ) {
- elem[doneName] = i;
-
- if ( typeof cur !== "string" ) {
- if ( elem === cur ) {
- match = true;
- break;
- }
-
- } else if ( Sizzle.filter( cur, [elem] ).length > 0 ) {
- match = elem;
- break;
- }
- }
-
- elem = elem[dir];
- }
-
- checkSet[i] = match;
- }
- }
-}
-
-var contains = document.compareDocumentPosition ? function(a, b){
- return a.compareDocumentPosition(b) & 16;
-} : function(a, b){
- return a !== b && (a.contains ? a.contains(b) : true);
-};
-
-// EXPOSE
-
-(ns || window).Sizzle = Sizzle;
-
-})(typeof dojo == "undefined" ? null : dojo);
-
-}
diff --git a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dojo/_base/query.js b/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dojo/_base/query.js
deleted file mode 100644
index 54a9b64..0000000
--- a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dojo/_base/query.js
+++ /dev/null
@@ -1,1524 +0,0 @@
-/*
- Copyright (c) 2004-2009, The Dojo Foundation All Rights Reserved.
- Available via Academic Free License >= 2.1 OR the modified BSD license.
- see: http://dojotoolkit.org/license for details
-*/
-
-
-if(!dojo._hasResource["dojo._base.query"]){ //_hasResource checks added by build. Do not use _hasResource directly in your code.
-dojo._hasResource["dojo._base.query"] = true;
-if(typeof dojo != "undefined"){
- dojo.provide("dojo._base.query");
- dojo.require("dojo._base.NodeList");
- dojo.require("dojo._base.lang");
-
-}
-
-/*
- dojo.query() architectural overview:
-
- dojo.query is a relatively full-featured CSS3 query library. It is
- designed to take any valid CSS3 selector and return the nodes matching
- the selector. To do this quickly, it processes queries in several
- steps, applying caching where profitable.
-
- The steps (roughly in reverse order of the way they appear in the code):
- 1.) check to see if we already have a "query dispatcher"
- - if so, use that with the given parameterization. Skip to step 4.
- 2.) attempt to determine which branch to dispatch the query to:
- - JS (optimized DOM iteration)
- - native (FF3.1+, Safari 3.1+, IE 8+)
- 3.) tokenize and convert to executable "query dispatcher"
- - this is where the lion's share of the complexity in the
- system lies. In the DOM version, the query dispatcher is
- assembled as a chain of "yes/no" test functions pertaining to
- a section of a simple query statement (".blah:nth-child(odd)"
- but not "div div", which is 2 simple statements). Individual
- statement dispatchers are cached (to prevent re-definition)
- as are entire dispatch chains (to make re-execution of the
- same query fast)
- 4.) the resulting query dispatcher is called in the passed scope
- (by default the top-level document)
- - for DOM queries, this results in a recursive, top-down
- evaluation of nodes based on each simple query section
- - for native implementations, this may mean working around spec
- bugs. So be it.
- 5.) matched nodes are pruned to ensure they are unique (if necessary)
-*/
-
-;(function(d){
- // define everything in a closure for compressability reasons. "d" is an
- // alias to "dojo" (or the toolkit alias object, e.g., "acme").
-
- ////////////////////////////////////////////////////////////////////////
- // Toolkit aliases
- ////////////////////////////////////////////////////////////////////////
-
- // if you are extracing dojo.query for use in your own system, you will
- // need to provide these methods and properties. No other porting should be
- // necessary, save for configuring the system to use a class other than
- // dojo.NodeList as the return instance instantiator
- var trim = d.trim;
- var each = d.forEach;
- // d.isIE; // float
- // d.isSafari; // float
- // d.isOpera; // float
- // d.isWebKit; // float
- // d.doc ; // document element
- var qlc = d._NodeListCtor = d.NodeList;
-
- var getDoc = function(){ return d.doc; };
- // NOTE(alex): the spec is idiotic. CSS queries should ALWAYS be case-sensitive, but nooooooo
- var cssCaseBug = ((d.isWebKit||d.isMozilla) && ((getDoc().compatMode) == "BackCompat"));
-
- ////////////////////////////////////////////////////////////////////////
- // Global utilities
- ////////////////////////////////////////////////////////////////////////
-
-
- // on browsers that support the "children" collection we can avoid a lot of
- // iteration on chaff (non-element) nodes.
- // why.
- var childNodesName = !!getDoc().firstChild["children"] ? "children" : "childNodes";
-
- var specials = ">~+";
-
- // global thunk to determine whether we should treat the current query as
- // case sensitive or not. This switch is flipped by the query evaluator
- // based on the document passed as the context to search.
- var caseSensitive = false;
-
- // how high?
- var yesman = function(){ return true; };
-
- ////////////////////////////////////////////////////////////////////////
- // Tokenizer
- ////////////////////////////////////////////////////////////////////////
-
- var getQueryParts = function(query){
- // summary:
- // state machine for query tokenization
- // description:
- // instead of using a brittle and slow regex-based CSS parser,
- // dojo.query implements an AST-style query representation. This
- // representation is only generated once per query. For example,
- // the same query run multiple times or under different root nodes
- // does not re-parse the selector expression but instead uses the
- // cached data structure. The state machine implemented here
- // terminates on the last " " (space) charachter and returns an
- // ordered array of query component structures (or "parts"). Each
- // part represents an operator or a simple CSS filtering
- // expression. The structure for parts is documented in the code
- // below.
-
-
- // NOTE:
- // this code is designed to run fast and compress well. Sacrifices
- // to readibility and maintainability have been made. Your best
- // bet when hacking the tokenizer is to put The Donnas on *really*
- // loud (may we recommend their "Spend The Night" release?) and
- // just assume you're gonna make mistakes. Keep the unit tests
- // open and run them frequently. Knowing is half the battle ;-)
- if(specials.indexOf(query.slice(-1)) >= 0){
- // if we end with a ">", "+", or "~", that means we're implicitly
- // searching all children, so make it explicit
- query += " * "
- }else{
- // if you have not provided a terminator, one will be provided for
- // you...
- query += " ";
- }
-
- var ts = function(/*Integer*/ s, /*Integer*/ e){
- // trim and slice.
-
- // take an index to start a string slice from and an end position
- // and return a trimmed copy of that sub-string
- return trim(query.slice(s, e));
- }
-
- // the overall data graph of the full query, as represented by queryPart objects
- var queryParts = [];
-
-
- // state keeping vars
- var inBrackets = -1, inParens = -1, inMatchFor = -1,
- inPseudo = -1, inClass = -1, inId = -1, inTag = -1,
- lc = "", cc = "", pStart;
-
- // iteration vars
- var x = 0, // index in the query
- ql = query.length,
- currentPart = null, // data structure representing the entire clause
- _cp = null; // the current pseudo or attr matcher
-
- // several temporary variables are assigned to this structure durring a
- // potential sub-expression match:
- // attr:
- // a string representing the current full attribute match in a
- // bracket expression
- // type:
- // if there's an operator in a bracket expression, this is
- // used to keep track of it
- // value:
- // the internals of parenthetical expression for a pseudo. for
- // :nth-child(2n+1), value might be "2n+1"
-
- var endTag = function(){
- // called when the tokenizer hits the end of a particular tag name.
- // Re-sets state variables for tag matching and sets up the matcher
- // to handle the next type of token (tag or operator).
- if(inTag >= 0){
- var tv = (inTag == x) ? null : ts(inTag, x); // .toLowerCase();
- currentPart[ (specials.indexOf(tv) < 0) ? "tag" : "oper" ] = tv;
- inTag = -1;
- }
- }
-
- var endId = function(){
- // called when the tokenizer might be at the end of an ID portion of a match
- if(inId >= 0){
- currentPart.id = ts(inId, x).replace(/\\/g, "");
- inId = -1;
- }
- }
-
- var endClass = function(){
- // called when the tokenizer might be at the end of a class name
- // match. CSS allows for multiple classes, so we augment the
- // current item with another class in its list
- if(inClass >= 0){
- currentPart.classes.push(ts(inClass+1, x).replace(/\\/g, ""));
- inClass = -1;
- }
- }
-
- var endAll = function(){
- // at the end of a simple fragment, so wall off the matches
- endId(); endTag(); endClass();
- }
-
- var endPart = function(){
- endAll();
- if(inPseudo >= 0){
- currentPart.pseudos.push({ name: ts(inPseudo+1, x) });
- }
- // hint to the selector engine to tell it whether or not it
- // needs to do any iteration. Many simple selectors don't, and
- // we can avoid significant construction-time work by advising
- // the system to skip them
- currentPart.loops = (
- currentPart.pseudos.length ||
- currentPart.attrs.length ||
- currentPart.classes.length );
-
- currentPart.oquery = currentPart.query = ts(pStart, x); // save the full expression as a string
-
-
- // otag/tag are hints to suggest to the system whether or not
- // it's an operator or a tag. We save a copy of otag since the
- // tag name is cast to upper-case in regular HTML matches. The
- // system has a global switch to figure out if the current
- // expression needs to be case sensitive or not and it will use
- // otag or tag accordingly
- currentPart.otag = currentPart.tag = (currentPart["oper"]) ? null : (currentPart.tag || "*");
-
- if(currentPart.tag){
- // if we're in a case-insensitive HTML doc, we likely want
- // the toUpperCase when matching on element.tagName. If we
- // do it here, we can skip the string op per node
- // comparison
- currentPart.tag = currentPart.tag.toUpperCase();
- }
-
- // add the part to the list
- if(queryParts.length && (queryParts[queryParts.length-1].oper)){
- // operators are always infix, so we remove them from the
- // list and attach them to the next match. The evaluator is
- // responsible for sorting out how to handle them.
- currentPart.infixOper = queryParts.pop();
- currentPart.query = currentPart.infixOper.query + " " + currentPart.query;
- /*
- console.debug( "swapping out the infix",
- currentPart.infixOper,
- "and attaching it to",
- currentPart);
- */
- }
- queryParts.push(currentPart);
-
- currentPart = null;
- }
-
- // iterate over the query, charachter by charachter, building up a
- // list of query part objects
- for(; lc=cc, cc=query.charAt(x), x < ql; x++){
- // cc: the current character in the match
- // lc: the last charachter (if any)
-
- // someone is trying to escape something, so don't try to match any
- // fragments. We assume we're inside a literal.
- if(lc == "\\"){ continue; }
- if(!currentPart){ // a part was just ended or none has yet been created
- // NOTE: I hate all this alloc, but it's shorter than writing tons of if's
- pStart = x;
- // rules describe full CSS sub-expressions, like:
- // #someId
- // .className:first-child
- // but not:
- // thinger > div.howdy[type=thinger]
- // the indidual components of the previous query would be
- // split into 3 parts that would be represented a structure
- // like:
- // [
- // {
- // query: "thinger",
- // tag: "thinger",
- // },
- // {
- // query: "div.howdy[type=thinger]",
- // classes: ["howdy"],
- // infixOper: {
- // query: ">",
- // oper: ">",
- // }
- // },
- // ]
- currentPart = {
- query: null, // the full text of the part's rule
- pseudos: [], // CSS supports multiple pseud-class matches in a single rule
- attrs: [], // CSS supports multi-attribute match, so we need an array
- classes: [], // class matches may be additive, e.g.: .thinger.blah.howdy
- tag: null, // only one tag...
- oper: null, // ...or operator per component. Note that these wind up being exclusive.
- id: null, // the id component of a rule
- getTag: function(){
- return (caseSensitive) ? this.otag : this.tag;
- }
- };
-
- // if we don't have a part, we assume we're going to start at
- // the beginning of a match, which should be a tag name. This
- // might fault a little later on, but we detect that and this
- // iteration will still be fine.
- inTag = x;
- }
-
- if(inBrackets >= 0){
- // look for a the close first
- if(cc == "]"){ // if we're in a [...] clause and we end, do assignment
- if(!_cp.attr){
- // no attribute match was previously begun, so we
- // assume this is an attribute existance match in the
- // form of [someAttributeName]
- _cp.attr = ts(inBrackets+1, x);
- }else{
- // we had an attribute already, so we know that we're
- // matching some sort of value, as in [attrName=howdy]
- _cp.matchFor = ts((inMatchFor||inBrackets+1), x);
- }
- var cmf = _cp.matchFor;
- if(cmf){
- // try to strip quotes from the matchFor value. We want
- // [attrName=howdy] to match the same
- // as [attrName = 'howdy' ]
- if( (cmf.charAt(0) == '"') || (cmf.charAt(0) == "'") ){
- _cp.matchFor = cmf.slice(1, -1);
- }
- }
- // end the attribute by adding it to the list of attributes.
- currentPart.attrs.push(_cp);
- _cp = null; // necessary?
- inBrackets = inMatchFor = -1;
- }else if(cc == "="){
- // if the last char was an operator prefix, make sure we
- // record it along with the "=" operator.
- var addToCc = ("|~^$*".indexOf(lc) >=0 ) ? lc : "";
- _cp.type = addToCc+cc;
- _cp.attr = ts(inBrackets+1, x-addToCc.length);
- inMatchFor = x+1;
- }
- // now look for other clause parts
- }else if(inParens >= 0){
- // if we're in a parenthetical expression, we need to figure
- // out if it's attached to a pseduo-selector rule like
- // :nth-child(1)
- if(cc == ")"){
- if(inPseudo >= 0){
- _cp.value = ts(inParens+1, x);
- }
- inPseudo = inParens = -1;
- }
- }else if(cc == "#"){
- // start of an ID match
- endAll();
- inId = x+1;
- }else if(cc == "."){
- // start of a class match
- endAll();
- inClass = x;
- }else if(cc == ":"){
- // start of a pseudo-selector match
- endAll();
- inPseudo = x;
- }else if(cc == "["){
- // start of an attribute match.
- endAll();
- inBrackets = x;
- // provide a new structure for the attribute match to fill-in
- _cp = {
- /*=====
- attr: null, type: null, matchFor: null
- =====*/
- };
- }else if(cc == "("){
- // we really only care if we've entered a parenthetical
- // expression if we're already inside a pseudo-selector match
- if(inPseudo >= 0){
- // provide a new structure for the pseudo match to fill-in
- _cp = {
- name: ts(inPseudo+1, x),
- value: null
- }
- currentPart.pseudos.push(_cp);
- }
- inParens = x;
- }else if(
- (cc == " ") &&
- // if it's a space char and the last char is too, consume the
- // current one without doing more work
- (lc != cc)
- ){
- endPart();
- }
- }
- return queryParts;
- };
-
-
- ////////////////////////////////////////////////////////////////////////
- // DOM query infrastructure
- ////////////////////////////////////////////////////////////////////////
-
- var agree = function(first, second){
- // the basic building block of the yes/no chaining system. agree(f1,
- // f2) generates a new function which returns the boolean results of
- // both of the passed functions to a single logical-anded result. If
- // either are not possed, the other is used exclusively.
- if(!first){ return second; }
- if(!second){ return first; }
-
- return function(){
- return first.apply(window, arguments) && second.apply(window, arguments);
- }
- };
-
- var getArr = function(i, arr){
- // helps us avoid array alloc when we don't need it
- var r = arr||[]; // FIXME: should this be 'new d._NodeListCtor()' ?
- if(i){ r.push(i); }
- return r;
- };
-
- var _isElement = function(n){ return (1 == n.nodeType); };
-
- // FIXME: need to coalesce _getAttr with defaultGetter
- var blank = "";
- var _getAttr = function(elem, attr){
- if(!elem){ return blank; }
- if(attr == "class"){
- return elem.className || blank;
- }
- if(attr == "for"){
- return elem.htmlFor || blank;
- }
- if(attr == "style"){
- return elem.style.cssText || blank;
- }
- return (caseSensitive ? elem.getAttribute(attr) : elem.getAttribute(attr, 2)) || blank;
- };
-
- var attrs = {
- "*=": function(attr, value){
- return function(elem){
- // E[foo*="bar"]
- // an E element whose "foo" attribute value contains
- // the substring "bar"
- return (_getAttr(elem, attr).indexOf(value)>=0);
- }
- },
- "^=": function(attr, value){
- // E[foo^="bar"]
- // an E element whose "foo" attribute value begins exactly
- // with the string "bar"
- return function(elem){
- return (_getAttr(elem, attr).indexOf(value)==0);
- }
- },
- "$=": function(attr, value){
- // E[foo$="bar"]
- // an E element whose "foo" attribute value ends exactly
- // with the string "bar"
- var tval = " "+value;
- return function(elem){
- var ea = " "+_getAttr(elem, attr);
- return (ea.lastIndexOf(value)==(ea.length-value.length));
- }
- },
- "~=": function(attr, value){
- // E[foo~="bar"]
- // an E element whose "foo" attribute value is a list of
- // space-separated values, one of which is exactly equal
- // to "bar"
-
- // return "[contains(concat(' ',@"+attr+",' '), ' "+ value +" ')]";
- var tval = " "+value+" ";
- return function(elem){
- var ea = " "+_getAttr(elem, attr)+" ";
- return (ea.indexOf(tval)>=0);
- }
- },
- "|=": function(attr, value){
- // E[hreflang|="en"]
- // an E element whose "hreflang" attribute has a
- // hyphen-separated list of values beginning (from the
- // left) with "en"
- var valueDash = " "+value+"-";
- return function(elem){
- var ea = " "+_getAttr(elem, attr);
- return (
- (ea == value) ||
- (ea.indexOf(valueDash)==0)
- );
- }
- },
- "=": function(attr, value){
- return function(elem){
- return (_getAttr(elem, attr) == value);
- }
- }
- };
-
- // avoid testing for node type if we can. Defining this in the negative
- // here to avoid negation in the fast path.
- var _noNES = (typeof getDoc().firstChild.nextElementSibling == "undefined");
- var _ns = !_noNES ? "nextElementSibling" : "nextSibling";
- var _ps = !_noNES ? "previousElementSibling" : "previousSibling";
- var _simpleNodeTest = (_noNES ? _isElement : yesman);
-
- var _lookLeft = function(node){
- // look left
- while(node = node[_ps]){
- if(_simpleNodeTest(node)){ return false; }
- }
- return true;
- };
-
- var _lookRight = function(node){
- // look right
- while(node = node[_ns]){
- if(_simpleNodeTest(node)){ return false; }
- }
- return true;
- };
-
- var getNodeIndex = function(node){
- var root = node.parentNode;
- var i = 0,
- tret = root[childNodesName],
- ci = (node["_i"]||-1),
- cl = (root["_l"]||-1);
-
- if(!tret){ return -1; }
- var l = tret.length;
-
- // we calcuate the parent length as a cheap way to invalidate the
- // cache. It's not 100% accurate, but it's much more honest than what
- // other libraries do
- if( cl == l && ci >= 0 && cl >= 0 ){
- // if it's legit, tag and release
- return ci;
- }
-
- // else re-key things
- root["_l"] = l;
- ci = -1;
- for(var te = root["firstElementChild"]||root["firstChild"]; te; te = te[_ns]){
- if(_simpleNodeTest(te)){
- te["_i"] = ++i;
- if(node === te){
- // NOTE:
- // shortcuting the return at this step in indexing works
- // very well for benchmarking but we avoid it here since
- // it leads to potential O(n^2) behavior in sequential
- // getNodexIndex operations on a previously un-indexed
- // parent. We may revisit this at a later time, but for
- // now we just want to get the right answer more often
- // than not.
- ci = i;
- }
- }
- }
- return ci;
- };
-
- var isEven = function(elem){
- return !((getNodeIndex(elem)) % 2);
- };
-
- var isOdd = function(elem){
- return ((getNodeIndex(elem)) % 2);
- };
-
- var pseudos = {
- "checked": function(name, condition){
- return function(elem){
- return !!("checked" in elem ? elem.checked : elem.selected);
- }
- },
- "first-child": function(){ return _lookLeft; },
- "last-child": function(){ return _lookRight; },
- "only-child": function(name, condition){
- return function(node){
- if(!_lookLeft(node)){ return false; }
- if(!_lookRight(node)){ return false; }
- return true;
- };
- },
- "empty": function(name, condition){
- return function(elem){
- // DomQuery and jQuery get this wrong, oddly enough.
- // The CSS 3 selectors spec is pretty explicit about it, too.
- var cn = elem.childNodes;
- var cnl = elem.childNodes.length;
- // if(!cnl){ return true; }
- for(var x=cnl-1; x >= 0; x--){
- var nt = cn[x].nodeType;
- if((nt === 1)||(nt == 3)){ return false; }
- }
- return true;
- }
- },
- "contains": function(name, condition){
- var cz = condition.charAt(0);
- if( cz == '"' || cz == "'" ){ //remove quote
- condition = condition.slice(1, -1);
- }
- return function(elem){
- return (elem.innerHTML.indexOf(condition) >= 0);
- }
- },
- "not": function(name, condition){
- var p = getQueryParts(condition)[0];
- var ignores = { el: 1 };
- if(p.tag != "*"){
- ignores.tag = 1;
- }
- if(!p.classes.length){
- ignores.classes = 1;
- }
- var ntf = getSimpleFilterFunc(p, ignores);
- return function(elem){
- return (!ntf(elem));
- }
- },
- "nth-child": function(name, condition){
- var pi = parseInt;
- // avoid re-defining function objects if we can
- if(condition == "odd"){
- return isOdd;
- }else if(condition == "even"){
- return isEven;
- }
- // FIXME: can we shorten this?
- if(condition.indexOf("n") != -1){
- var tparts = condition.split("n", 2);
- var pred = tparts[0] ? ((tparts[0] == '-') ? -1 : pi(tparts[0])) : 1;
- var idx = tparts[1] ? pi(tparts[1]) : 0;
- var lb = 0, ub = -1;
- if(pred > 0){
- if(idx < 0){
- idx = (idx % pred) && (pred + (idx % pred));
- }else if(idx>0){
- if(idx >= pred){
- lb = idx - idx % pred;
- }
- idx = idx % pred;
- }
- }else if(pred<0){
- pred *= -1;
- // idx has to be greater than 0 when pred is negative;
- // shall we throw an error here?
- if(idx > 0){
- ub = idx;
- idx = idx % pred;
- }
- }
- if(pred > 0){
- return function(elem){
- var i = getNodeIndex(elem);
- return (i>=lb) && (ub<0 || i<=ub) && ((i % pred) == idx);
- }
- }else{
- condition = idx;
- }
- }
- var ncount = pi(condition);
- return function(elem){
- return (getNodeIndex(elem) == ncount);
- }
- }
- };
-
- var defaultGetter = (d.isIE) ? function(cond){
- var clc = cond.toLowerCase();
- if(clc == "class"){ cond = "className"; }
- return function(elem){
- return (caseSensitive ? elem.getAttribute(cond) : elem[cond]||elem[clc]);
- }
- } : function(cond){
- return function(elem){
- return (elem && elem.getAttribute && elem.hasAttribute(cond));
- }
- };
-
- var getSimpleFilterFunc = function(query, ignores){
- // generates a node tester function based on the passed query part. The
- // query part is one of the structures generatd by the query parser
- // when it creates the query AST. The "ignores" object specifies which
- // (if any) tests to skip, allowing the system to avoid duplicating
- // work where it may have already been taken into account by other
- // factors such as how the nodes to test were fetched in the first
- // place
- if(!query){ return yesman; }
- ignores = ignores||{};
-
- var ff = null;
-
- if(!("el" in ignores)){
- ff = agree(ff, _isElement);
- }
-
- if(!("tag" in ignores)){
- if(query.tag != "*"){
- ff = agree(ff, function(elem){
- return (elem && (elem.tagName == query.getTag()));
- });
- }
- }
-
- if(!("classes" in ignores)){
- each(query.classes, function(cname, idx, arr){
- // get the class name
- /*
- var isWildcard = cname.charAt(cname.length-1) == "*";
- if(isWildcard){
- cname = cname.substr(0, cname.length-1);
- }
- // I dislike the regex thing, even if memozied in a cache, but it's VERY short
- var re = new RegExp("(?:^|\\s)" + cname + (isWildcard ? ".*" : "") + "(?:\\s|$)");
- */
- var re = new RegExp("(?:^|\\s)" + cname + "(?:\\s|$)");
- ff = agree(ff, function(elem){
- return re.test(elem.className);
- });
- ff.count = idx;
- });
- }
-
- if(!("pseudos" in ignores)){
- each(query.pseudos, function(pseudo){
- var pn = pseudo.name;
- if(pseudos[pn]){
- ff = agree(ff, pseudos[pn](pn, pseudo.value));
- }
- });
- }
-
- if(!("attrs" in ignores)){
- each(query.attrs, function(attr){
- var matcher;
- var a = attr.attr;
- // type, attr, matchFor
- if(attr.type && attrs[attr.type]){
- matcher = attrs[attr.type](a, attr.matchFor);
- }else if(a.length){
- matcher = defaultGetter(a);
- }
- if(matcher){
- ff = agree(ff, matcher);
- }
- });
- }
-
- if(!("id" in ignores)){
- if(query.id){
- ff = agree(ff, function(elem){
- return (!!elem && (elem.id == query.id));
- });
- }
- }
-
- if(!ff){
- if(!("default" in ignores)){
- ff = yesman;
- }
- }
- return ff;
- };
-
- var _nextSibling = function(filterFunc){
- return function(node, ret, bag){
- while(node = node[_ns]){
- if(_noNES && (!_isElement(node))){ continue; }
- if(
- (!bag || _isUnique(node, bag)) &&
- filterFunc(node)
- ){
- ret.push(node);
- }
- break;
- }
- return ret;
- }
- };
-
- var _nextSiblings = function(filterFunc){
- return function(root, ret, bag){
- var te = root[_ns];
- while(te){
- if(_simpleNodeTest(te)){
- if(bag && !_isUnique(te, bag)){
- break;
- }
- if(filterFunc(te)){
- ret.push(te);
- }
- }
- te = te[_ns];
- }
- return ret;
- }
- };
-
- // get an array of child *elements*, skipping text and comment nodes
- var _childElements = function(filterFunc){
- filterFunc = filterFunc||yesman;
- return function(root, ret, bag){
- // get an array of child elements, skipping text and comment nodes
- var te, x = 0, tret = root[childNodesName];
- while(te = tret[x++]){
- if(
- _simpleNodeTest(te) &&
- (!bag || _isUnique(te, bag)) &&
- (filterFunc(te, x))
- ){
- ret.push(te);
- }
- }
- return ret;
- };
- };
-
- /*
- // thanks, Dean!
- var itemIsAfterRoot = d.isIE ? function(item, root){
- return (item.sourceIndex > root.sourceIndex);
- } : function(item, root){
- return (item.compareDocumentPosition(root) == 2);
- };
- */
-
- // test to see if node is below root
- var _isDescendant = function(node, root){
- var pn = node.parentNode;
- while(pn){
- if(pn == root){
- break;
- }
- pn = pn.parentNode;
- }
- return !!pn;
- };
-
- var _getElementsFuncCache = {};
-
- var getElementsFunc = function(query){
- var retFunc = _getElementsFuncCache[query.query];
- // if we've got a cached dispatcher, just use that
- if(retFunc){ return retFunc; }
- // else, generate a new on
-
- // NOTE:
- // this function returns a function that searches for nodes and
- // filters them. The search may be specialized by infix operators
- // (">", "~", or "+") else it will default to searching all
- // descendants (the " " selector). Once a group of children is
- // founde, a test function is applied to weed out the ones we
- // don't want. Many common cases can be fast-pathed. We spend a
- // lot of cycles to create a dispatcher that doesn't do more work
- // than necessary at any point since, unlike this function, the
- // dispatchers will be called every time. The logic of generating
- // efficient dispatchers looks like this in pseudo code:
- //
- // # if it's a purely descendant query (no ">", "+", or "~" modifiers)
- // if infixOperator == " ":
- // if only(id):
- // return def(root):
- // return d.byId(id, root);
- //
- // elif id:
- // return def(root):
- // return filter(d.byId(id, root));
- //
- // elif cssClass && getElementsByClassName:
- // return def(root):
- // return filter(root.getElementsByClassName(cssClass));
- //
- // elif only(tag):
- // return def(root):
- // return root.getElementsByTagName(tagName);
- //
- // else:
- // # search by tag name, then filter
- // return def(root):
- // return filter(root.getElementsByTagName(tagName||"*"));
- //
- // elif infixOperator == ">":
- // # search direct children
- // return def(root):
- // return filter(root.children);
- //
- // elif infixOperator == "+":
- // # search next sibling
- // return def(root):
- // return filter(root.nextElementSibling);
- //
- // elif infixOperator == "~":
- // # search rightward siblings
- // return def(root):
- // return filter(nextSiblings(root));
-
- var io = query.infixOper;
- var oper = (io ? io.oper : "");
- // the default filter func which tests for all conditions in the query
- // part. This is potentially inefficient, so some optimized paths may
- // re-define it to test fewer things.
- var filterFunc = getSimpleFilterFunc(query, { el: 1 });
- var qt = query.tag;
- var wildcardTag = ("*" == qt);
- var ecs = getDoc()["getElementsByClassName"];
-
- if(!oper){
- // if there's no infix operator, then it's a descendant query. ID
- // and "elements by class name" variants can be accelerated so we
- // call them out explicitly:
- if(query.id){
- // testing shows that the overhead of yesman() is acceptable
- // and can save us some bytes vs. re-defining the function
- // everywhere.
- filterFunc = (!query.loops && wildcardTag) ?
- yesman :
- getSimpleFilterFunc(query, { el: 1, id: 1 });
-
- retFunc = function(root, arr){
- var te = d.byId(query.id, (root.ownerDocument||root));
- if(!te || !filterFunc(te)){ return; }
- if(9 == root.nodeType){ // if root's a doc, we just return directly
- return getArr(te, arr);
- }else{ // otherwise check ancestry
- if(_isDescendant(te, root)){
- return getArr(te, arr);
- }
- }
- }
- }else if(
- ecs &&
- // isAlien check. Workaround for Prototype.js being totally evil/dumb.
- /\{\s*\[native code\]\s*\}/.test(String(ecs)) &&
- query.classes.length &&
- !cssCaseBug
- ){
- // it's a class-based query and we've got a fast way to run it.
-
- // ignore class and ID filters since we will have handled both
- filterFunc = getSimpleFilterFunc(query, { el: 1, classes: 1, id: 1 });
- var classesString = query.classes.join(" ");
- retFunc = function(root, arr, bag){
- var ret = getArr(0, arr), te, x=0;
- var tret = root.getElementsByClassName(classesString);
- while((te = tret[x++])){
- if(filterFunc(te, root) && _isUnique(te, bag)){
- ret.push(te);
- }
- }
- return ret;
- };
-
- }else if(!wildcardTag && !query.loops){
- // it's tag only. Fast-path it.
- retFunc = function(root, arr, bag){
- var ret = getArr(0, arr), te, x=0;
- var tret = root.getElementsByTagName(query.getTag());
- while((te = tret[x++])){
- if(_isUnique(te, bag)){
- ret.push(te);
- }
- }
- return ret;
- };
- }else{
- // the common case:
- // a descendant selector without a fast path. By now it's got
- // to have a tag selector, even if it's just "*" so we query
- // by that and filter
- filterFunc = getSimpleFilterFunc(query, { el: 1, tag: 1, id: 1 });
- retFunc = function(root, arr, bag){
- var ret = getArr(0, arr), te, x=0;
- // we use getTag() to avoid case sensitivity issues
- var tret = root.getElementsByTagName(query.getTag());
- while((te = tret[x++])){
- if(filterFunc(te, root) && _isUnique(te, bag)){
- ret.push(te);
- }
- }
- return ret;
- };
- }
- }else{
- // the query is scoped in some way. Instead of querying by tag we
- // use some other collection to find candidate nodes
- var skipFilters = { el: 1 };
- if(wildcardTag){
- skipFilters.tag = 1;
- }
- filterFunc = getSimpleFilterFunc(query, skipFilters);
- if("+" == oper){
- retFunc = _nextSibling(filterFunc);
- }else if("~" == oper){
- retFunc = _nextSiblings(filterFunc);
- }else if(">" == oper){
- retFunc = _childElements(filterFunc);
- }
- }
- // cache it and return
- return _getElementsFuncCache[query.query] = retFunc;
- };
-
- var filterDown = function(root, queryParts){
- // NOTE:
- // this is the guts of the DOM query system. It takes a list of
- // parsed query parts and a root and finds children which match
- // the selector represented by the parts
- var candidates = getArr(root), qp, x, te, qpl = queryParts.length, bag, ret;
-
- for(var i = 0; i < qpl; i++){
- ret = [];
- qp = queryParts[i];
- x = candidates.length - 1;
- if(x > 0){
- // if we have more than one root at this level, provide a new
- // hash to use for checking group membership but tell the
- // system not to post-filter us since we will already have been
- // gauranteed to be unique
- bag = {};
- ret.nozip = true;
- }
- var gef = getElementsFunc(qp);
- for(var j = 0; (te = candidates[j]); j++){
- // for every root, get the elements that match the descendant
- // selector, adding them to the "ret" array and filtering them
- // via membership in this level's bag. If there are more query
- // parts, then this level's return will be used as the next
- // level's candidates
- gef(te, ret, bag);
- }
- if(!ret.length){ break; }
- candidates = ret;
- }
- return ret;
- };
-
- ////////////////////////////////////////////////////////////////////////
- // the query runner
- ////////////////////////////////////////////////////////////////////////
-
- // these are the primary caches for full-query results. The query
- // dispatcher functions are generated then stored here for hash lookup in
- // the future
- var _queryFuncCacheDOM = {},
- _queryFuncCacheQSA = {};
-
- // this is the second level of spliting, from full-length queries (e.g.,
- // "div.foo .bar") into simple query expressions (e.g., ["div.foo",
- // ".bar"])
- var getStepQueryFunc = function(query){
- var qparts = getQueryParts(trim(query));
-
- // if it's trivial, avoid iteration and zipping costs
- if(qparts.length == 1){
- // we optimize this case here to prevent dispatch further down the
- // chain, potentially slowing things down. We could more elegantly
- // handle this in filterDown(), but it's slower for simple things
- // that need to be fast (e.g., "#someId").
- var tef = getElementsFunc(qparts[0]);
- return function(root){
- var r = tef(root, new qlc());
- if(r){ r.nozip = true; }
- return r;
- }
- }
-
- // otherwise, break it up and return a runner that iterates over the parts recursively
- return function(root){
- return filterDown(root, qparts);
- }
- };
-
- // NOTES:
- // * we can't trust QSA for anything but document-rooted queries, so
- // caching is split into DOM query evaluators and QSA query evaluators
- // * caching query results is dirty and leak-prone (or, at a minimum,
- // prone to unbounded growth). Other toolkits may go this route, but
- // they totally destroy their own ability to manage their memory
- // footprint. If we implement it, it should only ever be with a fixed
- // total element reference # limit and an LRU-style algorithm since JS
- // has no weakref support. Caching compiled query evaluators is also
- // potentially problematic, but even on large documents the size of the
- // query evaluators is often < 100 function objects per evaluator (and
- // LRU can be applied if it's ever shown to be an issue).
- // * since IE's QSA support is currently only for HTML documents and even
- // then only in IE 8's "standards mode", we have to detect our dispatch
- // route at query time and keep 2 separate caches. Ugg.
-
- // we need to determine if we think we can run a given query via
- // querySelectorAll or if we'll need to fall back on DOM queries to get
- // there. We need a lot of information about the environment and the query
- // to make the determiniation (e.g. does it support QSA, does the query in
- // question work in the native QSA impl, etc.).
- var nua = navigator.userAgent;
- // some versions of Safari provided QSA, but it was buggy and crash-prone.
- // We need te detect the right "internal" webkit version to make this work.
- var wk = "WebKit/";
- var is525 = (
- d.isWebKit &&
- (nua.indexOf(wk) > 0) &&
- (parseFloat(nua.split(wk)[1]) > 528)
- );
-
- // IE QSA queries may incorrectly include comment nodes, so we throw the
- // zipping function into "remove" comments mode instead of the normal "skip
- // it" which every other QSA-clued browser enjoys
- var noZip = d.isIE ? "commentStrip" : "nozip";
-
- var qsa = "querySelectorAll";
- var qsaAvail = (
- !!getDoc()[qsa] &&
- // see #5832
- (!d.isSafari || (d.isSafari > 3.1) || is525 )
- );
-
- //Don't bother with n+3 type of matches, IE complains if we modify those.
- var infixSpaceRe = /n\+\d|([^ ])?([>~+])([^ =])?/g;
- var infixSpaceFunc = function(match, pre, ch, post) {
- return ch ? (pre ? pre + " " : "") + ch + (post ? " " + post : "") : /*n+3*/ match;
- };
-
- var getQueryFunc = function(query, forceDOM){
- //Normalize query. The CSS3 selectors spec allows for omitting spaces around
- //infix operators, >, ~ and +
- //Do the work here since detection for spaces is used as a simple "not use QSA"
- //test below.
- query = query.replace(infixSpaceRe, infixSpaceFunc);
-
- if(qsaAvail){
- // if we've got a cached variant and we think we can do it, run it!
- var qsaCached = _queryFuncCacheQSA[query];
- if(qsaCached && !forceDOM){ return qsaCached; }
- }
-
- // else if we've got a DOM cached variant, assume that we already know
- // all we need to and use it
- var domCached = _queryFuncCacheDOM[query];
- if(domCached){ return domCached; }
-
- // TODO:
- // today we're caching DOM and QSA branches separately so we
- // recalc useQSA every time. If we had a way to tag root+query
- // efficiently, we'd be in good shape to do a global cache.
-
- var qcz = query.charAt(0);
- var nospace = (-1 == query.indexOf(" "));
-
- // byId searches are wicked fast compared to QSA, even when filtering
- // is required
- if( (query.indexOf("#") >= 0) && (nospace) ){
- forceDOM = true;
- }
-
- var useQSA = (
- qsaAvail && (!forceDOM) &&
- // as per CSS 3, we can't currently start w/ combinator:
- // http://www.w3.org/TR/css3-selectors/#w3cselgrammar
- (specials.indexOf(qcz) == -1) &&
- // IE's QSA impl sucks on pseudos
- (!d.isIE || (query.indexOf(":") == -1)) &&
-
- (!(cssCaseBug && (query.indexOf(".") >= 0))) &&
-
- // FIXME:
- // need to tighten up browser rules on ":contains" and "|=" to
- // figure out which aren't good
- // Latest webkit (around 531.21.8) does not seem to do well with :checked on option
- // elements, even though according to spec, selected options should
- // match :checked. So go nonQSA for it:
- // http://bugs.dojotoolkit.org/ticket/5179
- (query.indexOf(":contains") == -1) && (query.indexOf(":checked") == -1) &&
- (query.indexOf("|=") == -1) // some browsers don't grok it
- );
-
- // TODO:
- // if we've got a descendant query (e.g., "> .thinger" instead of
- // just ".thinger") in a QSA-able doc, but are passed a child as a
- // root, it should be possible to give the item a synthetic ID and
- // trivially rewrite the query to the form "#synid > .thinger" to
- // use the QSA branch
-
-
- if(useQSA){
- var tq = (specials.indexOf(query.charAt(query.length-1)) >= 0) ?
- (query + " *") : query;
- return _queryFuncCacheQSA[query] = function(root){
- try{
- // the QSA system contains an egregious spec bug which
- // limits us, effectively, to only running QSA queries over
- // entire documents. See:
- // http://ejohn.org/blog/thoughts-on-queryselectorall/
- // despite this, we can also handle QSA runs on simple
- // selectors, but we don't want detection to be expensive
- // so we're just checking for the presence of a space char
- // right now. Not elegant, but it's cheaper than running
- // the query parser when we might not need to
- if(!((9 == root.nodeType) || nospace)){ throw ""; }
- var r = root[qsa](tq);
- // skip expensive duplication checks and just wrap in a NodeList
- r[noZip] = true;
- return r;
- }catch(e){
- // else run the DOM branch on this query, ensuring that we
- // default that way in the future
- return getQueryFunc(query, true)(root);
- }
- }
- }else{
- // DOM branch
- var parts = query.split(/\s*,\s*/);
- return _queryFuncCacheDOM[query] = ((parts.length < 2) ?
- // if not a compound query (e.g., ".foo, .bar"), cache and return a dispatcher
- getStepQueryFunc(query) :
- // if it *is* a complex query, break it up into its
- // constituent parts and return a dispatcher that will
- // merge the parts when run
- function(root){
- var pindex = 0, // avoid array alloc for every invocation
- ret = [],
- tp;
- while((tp = parts[pindex++])){
- ret = ret.concat(getStepQueryFunc(tp)(root));
- }
- return ret;
- }
- );
- }
- };
-
- var _zipIdx = 0;
-
- // NOTE:
- // this function is Moo inspired, but our own impl to deal correctly
- // with XML in IE
- var _nodeUID = d.isIE ? function(node){
- if(caseSensitive){
- // XML docs don't have uniqueID on their nodes
- return (node.getAttribute("_uid") || node.setAttribute("_uid", ++_zipIdx) || _zipIdx);
-
- }else{
- return node.uniqueID;
- }
- } :
- function(node){
- return (node._uid || (node._uid = ++_zipIdx));
- };
-
- // determine if a node in is unique in a "bag". In this case we don't want
- // to flatten a list of unique items, but rather just tell if the item in
- // question is already in the bag. Normally we'd just use hash lookup to do
- // this for us but IE's DOM is busted so we can't really count on that. On
- // the upside, it gives us a built in unique ID function.
- var _isUnique = function(node, bag){
- if(!bag){ return 1; }
- var id = _nodeUID(node);
- if(!bag[id]){ return bag[id] = 1; }
- return 0;
- };
-
- // attempt to efficiently determine if an item in a list is a dupe,
- // returning a list of "uniques", hopefully in doucment order
- var _zipIdxName = "_zipIdx";
- var _zip = function(arr){
- if(arr && arr.nozip){
- return (qlc._wrap) ? qlc._wrap(arr) : arr;
- }
- // var ret = new d._NodeListCtor();
- var ret = new qlc();
- if(!arr || !arr.length){ return ret; }
- if(arr[0]){
- ret.push(arr[0]);
- }
- if(arr.length < 2){ return ret; }
-
- _zipIdx++;
-
- // we have to fork here for IE and XML docs because we can't set
- // expandos on their nodes (apparently). *sigh*
- if(d.isIE && caseSensitive){
- var szidx = _zipIdx+"";
- arr[0].setAttribute(_zipIdxName, szidx);
- for(var x = 1, te; te = arr[x]; x++){
- if(arr[x].getAttribute(_zipIdxName) != szidx){
- ret.push(te);
- }
- te.setAttribute(_zipIdxName, szidx);
- }
- }else if(d.isIE && arr.commentStrip){
- try{
- for(var x = 1, te; te = arr[x]; x++){
- if(_isElement(te)){
- ret.push(te);
- }
- }
- }catch(e){ /* squelch */ }
- }else{
- if(arr[0]){ arr[0][_zipIdxName] = _zipIdx; }
- for(var x = 1, te; te = arr[x]; x++){
- if(arr[x][_zipIdxName] != _zipIdx){
- ret.push(te);
- }
- te[_zipIdxName] = _zipIdx;
- }
- }
- return ret;
- };
-
- // the main executor
- d.query = function(/*String*/ query, /*String|DOMNode?*/ root){
- // summary:
- // Returns nodes which match the given CSS3 selector, searching the
- // entire document by default but optionally taking a node to scope
- // the search by. Returns an instance of dojo.NodeList.
- // description:
- // dojo.query() is the swiss army knife of DOM node manipulation in
- // Dojo. Much like Prototype's "$$" (bling-bling) function or JQuery's
- // "$" function, dojo.query provides robust, high-performance
- // CSS-based node selector support with the option of scoping searches
- // to a particular sub-tree of a document.
- //
- // Supported Selectors:
- // --------------------
- //
- // dojo.query() supports a rich set of CSS3 selectors, including:
- //
- // * class selectors (e.g., `.foo`)
- // * node type selectors like `span`
- // * ` ` descendant selectors
- // * `>` child element selectors
- // * `#foo` style ID selectors
- // * `*` universal selector
- // * `~`, the immediately preceeded-by sibling selector
- // * `+`, the preceeded-by sibling selector
- // * attribute queries:
- // | * `[foo]` attribute presence selector
- // | * `[foo='bar']` attribute value exact match
- // | * `[foo~='bar']` attribute value list item match
- // | * `[foo^='bar']` attribute start match
- // | * `[foo$='bar']` attribute end match
- // | * `[foo*='bar']` attribute substring match
- // * `:first-child`, `:last-child`, and `:only-child` positional selectors
- // * `:empty` content emtpy selector
- // * `:checked` pseudo selector
- // * `:nth-child(n)`, `:nth-child(2n+1)` style positional calculations
- // * `:nth-child(even)`, `:nth-child(odd)` positional selectors
- // * `:not(...)` negation pseudo selectors
- //
- // Any legal combination of these selectors will work with
- // `dojo.query()`, including compound selectors ("," delimited).
- // Very complex and useful searches can be constructed with this
- // palette of selectors and when combined with functions for
- // manipulation presented by dojo.NodeList, many types of DOM
- // manipulation operations become very straightforward.
- //
- // Unsupported Selectors:
- // ----------------------
- //
- // While dojo.query handles many CSS3 selectors, some fall outside of
- // what's resaonable for a programmatic node querying engine to
- // handle. Currently unsupported selectors include:
- //
- // * namespace-differentiated selectors of any form
- // * all `::` pseduo-element selectors
- // * certain pseduo-selectors which don't get a lot of day-to-day use:
- // | * `:root`, `:lang()`, `:target`, `:focus`
- // * all visual and state selectors:
- // | * `:root`, `:active`, `:hover`, `:visisted`, `:link`,
- // `:enabled`, `:disabled`
- // * `:*-of-type` pseudo selectors
- //
- // dojo.query and XML Documents:
- // -----------------------------
- //
- // `dojo.query` (as of dojo 1.2) supports searching XML documents
- // in a case-sensitive manner. If an HTML document is served with
- // a doctype that forces case-sensitivity (e.g., XHTML 1.1
- // Strict), dojo.query() will detect this and "do the right
- // thing". Case sensitivity is dependent upon the document being
- // searched and not the query used. It is therefore possible to
- // use case-sensitive queries on strict sub-documents (iframes,
- // etc.) or XML documents while still assuming case-insensitivity
- // for a host/root document.
- //
- // Non-selector Queries:
- // ---------------------
- //
- // If something other than a String is passed for the query,
- // `dojo.query` will return a new `dojo.NodeList` instance
- // constructed from that parameter alone and all further
- // processing will stop. This means that if you have a reference
- // to a node or NodeList, you can quickly construct a new NodeList
- // from the original by calling `dojo.query(node)` or
- // `dojo.query(list)`.
- //
- // query:
- // The CSS3 expression to match against. For details on the syntax of
- // CSS3 selectors, see <http://www.w3.org/TR/css3-selectors/#selectors>
- // root:
- // A DOMNode (or node id) to scope the search from. Optional.
- // returns: dojo.NodeList
- // An instance of `dojo.NodeList`. Many methods are available on
- // NodeLists for searching, iterating, manipulating, and handling
- // events on the matched nodes in the returned list.
- // example:
- // search the entire document for elements with the class "foo":
- // | dojo.query(".foo");
- // these elements will match:
- // | <span class="foo"></span>
- // | <span class="foo bar"></span>
- // | <p class="thud foo"></p>
- // example:
- // search the entire document for elements with the classes "foo" *and* "bar":
- // | dojo.query(".foo.bar");
- // these elements will match:
- // | <span class="foo bar"></span>
- // while these will not:
- // | <span class="foo"></span>
- // | <p class="thud foo"></p>
- // example:
- // find `<span>` elements which are descendants of paragraphs and
- // which have a "highlighted" class:
- // | dojo.query("p span.highlighted");
- // the innermost span in this fragment matches:
- // | <p class="foo">
- // | <span>...
- // | <span class="highlighted foo bar">...</span>
- // | </span>
- // | </p>
- // example:
- // set an "odd" class on all odd table rows inside of the table
- // `#tabular_data`, using the `>` (direct child) selector to avoid
- // affecting any nested tables:
- // | dojo.query("#tabular_data > tbody > tr:nth-child(odd)").addClass("odd");
- // example:
- // remove all elements with the class "error" from the document
- // and store them in a list:
- // | var errors = dojo.query(".error").orphan();
- // example:
- // add an onclick handler to every submit button in the document
- // which causes the form to be sent via Ajax instead:
- // | dojo.query("input[type='submit']").onclick(function(e){
- // | dojo.stopEvent(e); // prevent sending the form
- // | var btn = e.target;
- // | dojo.xhrPost({
- // | form: btn.form,
- // | load: function(data){
- // | // replace the form with the response
- // | var div = dojo.doc.createElement("div");
- // | dojo.place(div, btn.form, "after");
- // | div.innerHTML = data;
- // | dojo.style(btn.form, "display", "none");
- // | }
- // | });
- // | });
-
- //Set list constructor to desired value. This can change
- //between calls, so always re-assign here.
- qlc = d._NodeListCtor;
-
- if(!query){
- return new qlc();
- }
-
- if(query.constructor == qlc){
- return query;
- }
- if(typeof query != "string"){ // inline'd type check
- return new qlc(query); // dojo.NodeList
- }
- if(typeof root == "string"){ // inline'd type check
- root = d.byId(root);
- if(!root){ return new qlc(); }
- }
-
- root = root||getDoc();
- var od = root.ownerDocument||root.documentElement;
-
- // throw the big case sensitivity switch
-
- // NOTE:
- // Opera in XHTML mode doesn't detect case-sensitivity correctly
- // and it's not clear that there's any way to test for it
- caseSensitive = (root.contentType && root.contentType=="application/xml") ||
- (d.isOpera && (root.doctype || od.toString() == "[object XMLDocument]")) ||
- (!!od) &&
- (d.isIE ? od.xml : (root.xmlVersion||od.xmlVersion));
-
- // NOTE:
- // adding "true" as the 2nd argument to getQueryFunc is useful for
- // testing the DOM branch without worrying about the
- // behavior/performance of the QSA branch.
- var r = getQueryFunc(query)(root);
-
- // FIXME:
- // need to investigate this branch WRT #8074 and #8075
- if(r && r.nozip && !qlc._wrap){
- return r;
- }
- return _zip(r); // dojo.NodeList
- }
-
- // FIXME: need to add infrastructure for post-filtering pseudos, ala :last
- d.query.pseudos = pseudos;
-
- // one-off function for filtering a NodeList based on a simple selector
- d._filterQueryResult = function(nodeList, simpleFilter){
- var tmpNodeList = new d._NodeListCtor();
- var filterFunc = getSimpleFilterFunc(getQueryParts(simpleFilter)[0]);
- for(var x = 0, te; te = nodeList[x]; x++){
- if(filterFunc(te)){ tmpNodeList.push(te); }
- }
- return tmpNodeList;
- }
-})(this["queryPortability"]||this["acme"]||dojo);
-
-/*
-*/
-
-}
diff --git a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dojo/_base/window.js b/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dojo/_base/window.js
deleted file mode 100644
index d9cc283..0000000
--- a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dojo/_base/window.js
+++ /dev/null
@@ -1,108 +0,0 @@
-/*
- Copyright (c) 2004-2009, The Dojo Foundation All Rights Reserved.
- Available via Academic Free License >= 2.1 OR the modified BSD license.
- see: http://dojotoolkit.org/license for details
-*/
-
-
-if(!dojo._hasResource["dojo._base.window"]){ //_hasResource checks added by build. Do not use _hasResource directly in your code.
-dojo._hasResource["dojo._base.window"] = true;
-dojo.provide("dojo._base.window");
-
-/*=====
-dojo.doc = {
- // summary:
- // Alias for the current document. 'dojo.doc' can be modified
- // for temporary context shifting. Also see dojo.withDoc().
- // description:
- // Refer to dojo.doc rather
- // than referring to 'window.document' to ensure your code runs
- // correctly in managed contexts.
- // example:
- // | n.appendChild(dojo.doc.createElement('div'));
-}
-=====*/
-dojo.doc = window["document"] || null;
-
-dojo.body = function(){
- // summary:
- // Return the body element of the document
- // return the body object associated with dojo.doc
- // example:
- // | dojo.body().appendChild(dojo.doc.createElement('div'));
-
- // Note: document.body is not defined for a strict xhtml document
- // Would like to memoize this, but dojo.doc can change vi dojo.withDoc().
- return dojo.doc.body || dojo.doc.getElementsByTagName("body")[0]; // Node
-}
-
-dojo.setContext = function(/*Object*/globalObject, /*DocumentElement*/globalDocument){
- // summary:
- // changes the behavior of many core Dojo functions that deal with
- // namespace and DOM lookup, changing them to work in a new global
- // context (e.g., an iframe). The varibles dojo.global and dojo.doc
- // are modified as a result of calling this function and the result of
- // `dojo.body()` likewise differs.
- dojo.global = globalObject;
- dojo.doc = globalDocument;
-};
-
-dojo.withGlobal = function( /*Object*/globalObject,
- /*Function*/callback,
- /*Object?*/thisObject,
- /*Array?*/cbArguments){
- // summary:
- // Invoke callback with globalObject as dojo.global and
- // globalObject.document as dojo.doc.
- // description:
- // Invoke callback with globalObject as dojo.global and
- // globalObject.document as dojo.doc. If provided, globalObject
- // will be executed in the context of object thisObject
- // When callback() returns or throws an error, the dojo.global
- // and dojo.doc will be restored to its previous state.
-
- var oldGlob = dojo.global;
- try{
- dojo.global = globalObject;
- return dojo.withDoc.call(null, globalObject.document, callback, thisObject, cbArguments);
- }finally{
- dojo.global = oldGlob;
- }
-}
-
-dojo.withDoc = function( /*DocumentElement*/documentObject,
- /*Function*/callback,
- /*Object?*/thisObject,
- /*Array?*/cbArguments){
- // summary:
- // Invoke callback with documentObject as dojo.doc.
- // description:
- // Invoke callback with documentObject as dojo.doc. If provided,
- // callback will be executed in the context of object thisObject
- // When callback() returns or throws an error, the dojo.doc will
- // be restored to its previous state.
-
- var oldDoc = dojo.doc,
- oldLtr = dojo._bodyLtr,
- oldQ = dojo.isQuirks;
-
- try{
- dojo.doc = documentObject;
- delete dojo._bodyLtr; // uncache
- dojo.isQuirks = dojo.doc.compatMode == "BackCompat"; // no need to check for QuirksMode which was Opera 7 only
-
- if(thisObject && typeof callback == "string"){
- callback = thisObject[callback];
- }
-
- return callback.apply(thisObject, cbArguments || []);
- }finally{
- dojo.doc = oldDoc;
- delete dojo._bodyLtr; // in case it was undefined originally, and set to true/false by the alternate document
- if(oldLtr !== undefined){ dojo._bodyLtr = oldLtr; }
- dojo.isQuirks = oldQ;
- }
-};
-
-
-}
diff --git a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dojo/_base/xhr.js b/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dojo/_base/xhr.js
deleted file mode 100644
index d95d767..0000000
--- a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dojo/_base/xhr.js
+++ /dev/null
@@ -1,941 +0,0 @@
-/*
- Copyright (c) 2004-2009, The Dojo Foundation All Rights Reserved.
- Available via Academic Free License >= 2.1 OR the modified BSD license.
- see: http://dojotoolkit.org/license for details
-*/
-
-
-if(!dojo._hasResource["dojo._base.xhr"]){ //_hasResource checks added by build. Do not use _hasResource directly in your code.
-dojo._hasResource["dojo._base.xhr"] = true;
-dojo.provide("dojo._base.xhr");
-dojo.require("dojo._base.Deferred");
-dojo.require("dojo._base.json");
-dojo.require("dojo._base.lang");
-dojo.require("dojo._base.query");
-
-(function(){
- var _d = dojo, cfg = _d.config;
-
- function setValue(/*Object*/obj, /*String*/name, /*String*/value){
- //summary:
- // For the named property in object, set the value. If a value
- // already exists and it is a string, convert the value to be an
- // array of values.
-
- //Skip it if there is no value
- if(value === null){
- return;
- }
-
- var val = obj[name];
- if(typeof val == "string"){ // inline'd type check
- obj[name] = [val, value];
- }else if(_d.isArray(val)){
- val.push(value);
- }else{
- obj[name] = value;
- }
- }
-
- dojo.fieldToObject = function(/*DOMNode||String*/ inputNode){
- // summary:
- // Serialize a form field to a JavaScript object.
- //
- // description:
- // Returns the value encoded in a form field as
- // as a string or an array of strings. Disabled form elements
- // and unchecked radio and checkboxes are skipped. Multi-select
- // elements are returned as an array of string values.
- var ret = null;
- var item = _d.byId(inputNode);
- if(item){
- var _in = item.name;
- var type = (item.type||"").toLowerCase();
- if(_in && type && !item.disabled){
- if(type == "radio" || type == "checkbox"){
- if(item.checked){ ret = item.value }
- }else if(item.multiple){
- ret = [];
- _d.query("option", item).forEach(function(opt){
- if(opt.selected){
- ret.push(opt.value);
- }
- });
- }else{
- ret = item.value;
- }
- }
- }
- return ret; // Object
- }
-
- dojo.formToObject = function(/*DOMNode||String*/ formNode){
- // summary:
- // Serialize a form node to a JavaScript object.
- // description:
- // Returns the values encoded in an HTML form as
- // string properties in an object which it then returns. Disabled form
- // elements, buttons, and other non-value form elements are skipped.
- // Multi-select elements are returned as an array of string values.
- //
- // example:
- // This form:
- // | <form id="test_form">
- // | <input type="text" name="blah" value="blah">
- // | <input type="text" name="no_value" value="blah" disabled>
- // | <input type="button" name="no_value2" value="blah">
- // | <select type="select" multiple name="multi" size="5">
- // | <option value="blah">blah</option>
- // | <option value="thud" selected>thud</option>
- // | <option value="thonk" selected>thonk</option>
- // | </select>
- // | </form>
- //
- // yields this object structure as the result of a call to
- // formToObject():
- //
- // | {
- // | blah: "blah",
- // | multi: [
- // | "thud",
- // | "thonk"
- // | ]
- // | };
-
- var ret = {};
- var exclude = "file|submit|image|reset|button|";
- _d.forEach(dojo.byId(formNode).elements, function(item){
- var _in = item.name;
- var type = (item.type||"").toLowerCase();
- if(_in && type && exclude.indexOf(type) == -1 && !item.disabled){
- setValue(ret, _in, _d.fieldToObject(item));
- if(type == "image"){
- ret[_in+".x"] = ret[_in+".y"] = ret[_in].x = ret[_in].y = 0;
- }
- }
- });
- return ret; // Object
- }
-
- dojo.objectToQuery = function(/*Object*/ map){
- // summary:
- // takes a name/value mapping object and returns a string representing
- // a URL-encoded version of that object.
- // example:
- // this object:
- //
- // | {
- // | blah: "blah",
- // | multi: [
- // | "thud",
- // | "thonk"
- // | ]
- // | };
- //
- // yields the following query string:
- //
- // | "blah=blah&multi=thud&multi=thonk"
-
- // FIXME: need to implement encodeAscii!!
- var enc = encodeURIComponent;
- var pairs = [];
- var backstop = {};
- for(var name in map){
- var value = map[name];
- if(value != backstop[name]){
- var assign = enc(name) + "=";
- if(_d.isArray(value)){
- for(var i=0; i < value.length; i++){
- pairs.push(assign + enc(value[i]));
- }
- }else{
- pairs.push(assign + enc(value));
- }
- }
- }
- return pairs.join("&"); // String
- }
-
- dojo.formToQuery = function(/*DOMNode||String*/ formNode){
- // summary:
- // Returns a URL-encoded string representing the form passed as either a
- // node or string ID identifying the form to serialize
- return _d.objectToQuery(_d.formToObject(formNode)); // String
- }
-
- dojo.formToJson = function(/*DOMNode||String*/ formNode, /*Boolean?*/prettyPrint){
- // summary:
- // Create a serialized JSON string from a form node or string
- // ID identifying the form to serialize
- return _d.toJson(_d.formToObject(formNode), prettyPrint); // String
- }
-
- dojo.queryToObject = function(/*String*/ str){
- // summary:
- // Create an object representing a de-serialized query section of a
- // URL. Query keys with multiple values are returned in an array.
- //
- // example:
- // This string:
- //
- // | "foo=bar&foo=baz&thinger=%20spaces%20=blah&zonk=blarg&"
- //
- // results in this object structure:
- //
- // | {
- // | foo: [ "bar", "baz" ],
- // | thinger: " spaces =blah",
- // | zonk: "blarg"
- // | }
- //
- // Note that spaces and other urlencoded entities are correctly
- // handled.
-
- // FIXME: should we grab the URL string if we're not passed one?
- var ret = {};
- var qp = str.split("&");
- var dec = decodeURIComponent;
- _d.forEach(qp, function(item){
- if(item.length){
- var parts = item.split("=");
- var name = dec(parts.shift());
- var val = dec(parts.join("="));
- if(typeof ret[name] == "string"){ // inline'd type check
- ret[name] = [ret[name]];
- }
-
- if(_d.isArray(ret[name])){
- ret[name].push(val);
- }else{
- ret[name] = val;
- }
- }
- });
- return ret; // Object
- }
-
- // need to block async callbacks from snatching this thread as the result
- // of an async callback might call another sync XHR, this hangs khtml forever
- // must checked by watchInFlight()
-
- dojo._blockAsync = false;
-
- // MOW: remove dojo._contentHandlers alias in 2.0
- var handlers = _d._contentHandlers = dojo.contentHandlers = {
- // summary:
- // A map of availble XHR transport handle types. Name matches the
- // `handleAs` attribute passed to XHR calls.
- //
- // description:
- // A map of availble XHR transport handle types. Name matches the
- // `handleAs` attribute passed to XHR calls. Each contentHandler is
- // called, passing the xhr object for manipulation. The return value
- // from the contentHandler will be passed to the `load` or `handle`
- // functions defined in the original xhr call.
- //
- // example:
- // Creating a custom content-handler:
- // | dojo.contentHandlers.makeCaps = function(xhr){
- // | return xhr.responseText.toUpperCase();
- // | }
- // | // and later:
- // | dojo.xhrGet({
- // | url:"foo.txt",
- // | handleAs:"makeCaps",
- // | load: function(data){ /* data is a toUpper version of foo.txt */ }
- // | });
-
- text: function(xhr){
- // summary: A contentHandler which simply returns the plaintext response data
- return xhr.responseText;
- },
- json: function(xhr){
- // summary: A contentHandler which returns a JavaScript object created from the response data
- return _d.fromJson(xhr.responseText || null);
- },
- "json-comment-filtered": function(xhr){
- // summary: A contentHandler which expects comment-filtered JSON.
- // description:
- // A contentHandler which expects comment-filtered JSON.
- // the json-comment-filtered option was implemented to prevent
- // "JavaScript Hijacking", but it is less secure than standard JSON. Use
- // standard JSON instead. JSON prefixing can be used to subvert hijacking.
- //
- // Will throw a notice suggesting to use application/json mimetype, as
- // json-commenting can introduce security issues. To decrease the chances of hijacking,
- // use the standard `json` contentHandler, and prefix your "JSON" with: {}&&
- //
- // use djConfig.useCommentedJson = true to turn off the notice
- if(!dojo.config.useCommentedJson){
- console.warn("Consider using the standard mimetype:application/json."
- + " json-commenting can introduce security issues. To"
- + " decrease the chances of hijacking, use the standard the 'json' handler and"
- + " prefix your json with: {}&&\n"
- + "Use djConfig.useCommentedJson=true to turn off this message.");
- }
-
- var value = xhr.responseText;
- var cStartIdx = value.indexOf("\/*");
- var cEndIdx = value.lastIndexOf("*\/");
- if(cStartIdx == -1 || cEndIdx == -1){
- throw new Error("JSON was not comment filtered");
- }
- return _d.fromJson(value.substring(cStartIdx+2, cEndIdx));
- },
- javascript: function(xhr){
- // summary: A contentHandler which evaluates the response data, expecting it to be valid JavaScript
-
- // FIXME: try Moz and IE specific eval variants?
- return _d.eval(xhr.responseText);
- },
- xml: function(xhr){
- // summary: A contentHandler returning an XML Document parsed from the response data
- var result = xhr.responseXML;
- if(_d.isIE && (!result || !result.documentElement)){
- //WARNING: this branch used by the xml handling in dojo.io.iframe,
- //so be sure to test dojo.io.iframe if making changes below.
- var ms = function(n){ return "MSXML" + n + ".DOMDocument"; }
- var dp = ["Microsoft.XMLDOM", ms(6), ms(4), ms(3), ms(2)];
- _d.some(dp, function(p){
- try{
- var dom = new ActiveXObject(p);
- dom.async = false;
- dom.loadXML(xhr.responseText);
- result = dom;
- }catch(e){ return false; }
- return true;
- });
- }
- return result; // DOMDocument
- },
- "json-comment-optional": function(xhr){
- // summary: A contentHandler which checks the presence of comment-filtered JSON and
- // alternates between the `json` and `json-comment-filtered` contentHandlers.
- if(xhr.responseText && /^[^{\[]*\/\*/.test(xhr.responseText)){
- return handlers["json-comment-filtered"](xhr);
- }else{
- return handlers["json"](xhr);
- }
- }
- };
-
- /*=====
- dojo.__IoArgs = function(){
- // url: String
- // URL to server endpoint.
- // content: Object?
- // Contains properties with string values. These
- // properties will be serialized as name1=value2 and
- // passed in the request.
- // timeout: Integer?
- // Milliseconds to wait for the response. If this time
- // passes, the then error callbacks are called.
- // form: DOMNode?
- // DOM node for a form. Used to extract the form values
- // and send to the server.
- // preventCache: Boolean?
- // Default is false. If true, then a
- // "dojo.preventCache" parameter is sent in the request
- // with a value that changes with each request
- // (timestamp). Useful only with GET-type requests.
- // handleAs: String?
- // Acceptable values depend on the type of IO
- // transport (see specific IO calls for more information).
- // rawBody: String?
- // Sets the raw body for an HTTP request. If this is used, then the content
- // property is ignored. This is mostly useful for HTTP methods that have
- // a body to their requests, like PUT or POST. This property can be used instead
- // of postData and putData for dojo.rawXhrPost and dojo.rawXhrPut respectively.
- // ioPublish: Boolean?
- // Set this explicitly to false to prevent publishing of topics related to
- // IO operations. Otherwise, if djConfig.ioPublish is set to true, topics
- // will be published via dojo.publish for different phases of an IO operation.
- // See dojo.__IoPublish for a list of topics that are published.
- // load: Function?
- // This function will be
- // called on a successful HTTP response code.
- // error: Function?
- // This function will
- // be called when the request fails due to a network or server error, the url
- // is invalid, etc. It will also be called if the load or handle callback throws an
- // exception, unless djConfig.debugAtAllCosts is true. This allows deployed applications
- // to continue to run even when a logic error happens in the callback, while making
- // it easier to troubleshoot while in debug mode.
- // handle: Function?
- // This function will
- // be called at the end of every request, whether or not an error occurs.
- this.url = url;
- this.content = content;
- this.timeout = timeout;
- this.form = form;
- this.preventCache = preventCache;
- this.handleAs = handleAs;
- this.ioPublish = ioPublish;
- this.load = function(response, ioArgs){
- // ioArgs: dojo.__IoCallbackArgs
- // Provides additional information about the request.
- // response: Object
- // The response in the format as defined with handleAs.
- }
- this.error = function(response, ioArgs){
- // ioArgs: dojo.__IoCallbackArgs
- // Provides additional information about the request.
- // response: Object
- // The response in the format as defined with handleAs.
- }
- this.handle = function(loadOrError, response, ioArgs){
- // loadOrError: String
- // Provides a string that tells you whether this function
- // was called because of success (load) or failure (error).
- // response: Object
- // The response in the format as defined with handleAs.
- // ioArgs: dojo.__IoCallbackArgs
- // Provides additional information about the request.
- }
- }
- =====*/
-
- /*=====
- dojo.__IoCallbackArgs = function(args, xhr, url, query, handleAs, id, canDelete, json){
- // args: Object
- // the original object argument to the IO call.
- // xhr: XMLHttpRequest
- // For XMLHttpRequest calls only, the
- // XMLHttpRequest object that was used for the
- // request.
- // url: String
- // The final URL used for the call. Many times it
- // will be different than the original args.url
- // value.
- // query: String
- // For non-GET requests, the
- // name1=value1&name2=value2 parameters sent up in
- // the request.
- // handleAs: String
- // The final indicator on how the response will be
- // handled.
- // id: String
- // For dojo.io.script calls only, the internal
- // script ID used for the request.
- // canDelete: Boolean
- // For dojo.io.script calls only, indicates
- // whether the script tag that represents the
- // request can be deleted after callbacks have
- // been called. Used internally to know when
- // cleanup can happen on JSONP-type requests.
- // json: Object
- // For dojo.io.script calls only: holds the JSON
- // response for JSONP-type requests. Used
- // internally to hold on to the JSON responses.
- // You should not need to access it directly --
- // the same object should be passed to the success
- // callbacks directly.
- this.args = args;
- this.xhr = xhr;
- this.url = url;
- this.query = query;
- this.handleAs = handleAs;
- this.id = id;
- this.canDelete = canDelete;
- this.json = json;
- }
- =====*/
-
-
- /*=====
- dojo.__IoPublish = function(){
- // summary:
- // This is a list of IO topics that can be published
- // if djConfig.ioPublish is set to true. IO topics can be
- // published for any Input/Output, network operation. So,
- // dojo.xhr, dojo.io.script and dojo.io.iframe can all
- // trigger these topics to be published.
- // start: String
- // "/dojo/io/start" is sent when there are no outstanding IO
- // requests, and a new IO request is started. No arguments
- // are passed with this topic.
- // send: String
- // "/dojo/io/send" is sent whenever a new IO request is started.
- // It passes the dojo.Deferred for the request with the topic.
- // load: String
- // "/dojo/io/load" is sent whenever an IO request has loaded
- // successfully. It passes the response and the dojo.Deferred
- // for the request with the topic.
- // error: String
- // "/dojo/io/error" is sent whenever an IO request has errored.
- // It passes the error and the dojo.Deferred
- // for the request with the topic.
- // done: String
- // "/dojo/io/done" is sent whenever an IO request has completed,
- // either by loading or by erroring. It passes the error and
- // the dojo.Deferred for the request with the topic.
- // stop: String
- // "/dojo/io/stop" is sent when all outstanding IO requests have
- // finished. No arguments are passed with this topic.
- this.start = "/dojo/io/start";
- this.send = "/dojo/io/send";
- this.load = "/dojo/io/load";
- this.error = "/dojo/io/error";
- this.done = "/dojo/io/done";
- this.stop = "/dojo/io/stop";
- }
- =====*/
-
-
- dojo._ioSetArgs = function(/*dojo.__IoArgs*/args,
- /*Function*/canceller,
- /*Function*/okHandler,
- /*Function*/errHandler){
- // summary:
- // sets up the Deferred and ioArgs property on the Deferred so it
- // can be used in an io call.
- // args:
- // The args object passed into the public io call. Recognized properties on
- // the args object are:
- // canceller:
- // The canceller function used for the Deferred object. The function
- // will receive one argument, the Deferred object that is related to the
- // canceller.
- // okHandler:
- // The first OK callback to be registered with Deferred. It has the opportunity
- // to transform the OK response. It will receive one argument -- the Deferred
- // object returned from this function.
- // errHandler:
- // The first error callback to be registered with Deferred. It has the opportunity
- // to do cleanup on an error. It will receive two arguments: error (the
- // Error object) and dfd, the Deferred object returned from this function.
-
- var ioArgs = {args: args, url: args.url};
-
- //Get values from form if requestd.
- var formObject = null;
- if(args.form){
- var form = _d.byId(args.form);
- //IE requires going through getAttributeNode instead of just getAttribute in some form cases,
- //so use it for all. See #2844
- var actnNode = form.getAttributeNode("action");
- ioArgs.url = ioArgs.url || (actnNode ? actnNode.value : null);
- formObject = _d.formToObject(form);
- }
-
- // set up the query params
- var miArgs = [{}];
-
- if(formObject){
- // potentially over-ride url-provided params w/ form values
- miArgs.push(formObject);
- }
- if(args.content){
- // stuff in content over-rides what's set by form
- miArgs.push(args.content);
- }
- if(args.preventCache){
- miArgs.push({"dojo.preventCache": new Date().valueOf()});
- }
- ioArgs.query = _d.objectToQuery(_d.mixin.apply(null, miArgs));
-
- // .. and the real work of getting the deferred in order, etc.
- ioArgs.handleAs = args.handleAs || "text";
- var d = new _d.Deferred(canceller);
- d.addCallbacks(okHandler, function(error){
- return errHandler(error, d);
- });
-
- //Support specifying load, error and handle callback functions from the args.
- //For those callbacks, the "this" object will be the args object.
- //The callbacks will get the deferred result value as the
- //first argument and the ioArgs object as the second argument.
- var ld = args.load;
- if(ld && _d.isFunction(ld)){
- d.addCallback(function(value){
- return ld.call(args, value, ioArgs);
- });
- }
- var err = args.error;
- if(err && _d.isFunction(err)){
- d.addErrback(function(value){
- return err.call(args, value, ioArgs);
- });
- }
- var handle = args.handle;
- if(handle && _d.isFunction(handle)){
- d.addBoth(function(value){
- return handle.call(args, value, ioArgs);
- });
- }
-
- //Plug in topic publishing, if dojo.publish is loaded.
- if(cfg.ioPublish && _d.publish && ioArgs.args.ioPublish !== false){
- d.addCallbacks(
- function(res){
- _d.publish("/dojo/io/load", [d, res]);
- return res;
- },
- function(res){
- _d.publish("/dojo/io/error", [d, res]);
- return res;
- }
- );
- d.addBoth(function(res){
- _d.publish("/dojo/io/done", [d, res]);
- return res;
- });
- }
-
- d.ioArgs = ioArgs;
-
- // FIXME: need to wire up the xhr object's abort method to something
- // analagous in the Deferred
- return d;
- }
-
- var _deferredCancel = function(/*Deferred*/dfd){
- // summary: canceller function for dojo._ioSetArgs call.
-
- dfd.canceled = true;
- var xhr = dfd.ioArgs.xhr;
- var _at = typeof xhr.abort;
- if(_at == "function" || _at == "object" || _at == "unknown"){
- xhr.abort();
- }
- var err = dfd.ioArgs.error;
- if(!err){
- err = new Error("xhr cancelled");
- err.dojoType="cancel";
- }
- return err;
- }
- var _deferredOk = function(/*Deferred*/dfd){
- // summary: okHandler function for dojo._ioSetArgs call.
-
- var ret = handlers[dfd.ioArgs.handleAs](dfd.ioArgs.xhr);
- return ret === undefined ? null : ret;
- }
- var _deferError = function(/*Error*/error, /*Deferred*/dfd){
- // summary: errHandler function for dojo._ioSetArgs call.
-
- if(!dfd.ioArgs.args.failOk){
- console.error(error);
- }
- return error;
- }
-
- // avoid setting a timer per request. It degrades performance on IE
- // something fierece if we don't use unified loops.
- var _inFlightIntvl = null;
- var _inFlight = [];
-
-
- //Use a separate count for knowing if we are starting/stopping io calls.
- //Cannot use _inFlight.length since it can change at a different time than
- //when we want to do this kind of test. We only want to decrement the count
- //after a callback/errback has finished, since the callback/errback should be
- //considered as part of finishing a request.
- var _pubCount = 0;
- var _checkPubCount = function(dfd){
- if(_pubCount <= 0){
- _pubCount = 0;
- if(cfg.ioPublish && _d.publish && (!dfd || dfd && dfd.ioArgs.args.ioPublish !== false)){
- _d.publish("/dojo/io/stop");
- }
- }
- };
-
- var _watchInFlight = function(){
- //summary:
- // internal method that checks each inflight XMLHttpRequest to see
- // if it has completed or if the timeout situation applies.
-
- var now = (new Date()).getTime();
- // make sure sync calls stay thread safe, if this callback is called
- // during a sync call and this results in another sync call before the
- // first sync call ends the browser hangs
- if(!_d._blockAsync){
- // we need manual loop because we often modify _inFlight (and therefore 'i') while iterating
- // note: the second clause is an assigment on purpose, lint may complain
- for(var i = 0, tif; i < _inFlight.length && (tif = _inFlight[i]); i++){
- var dfd = tif.dfd;
- var func = function(){
- if(!dfd || dfd.canceled || !tif.validCheck(dfd)){
- _inFlight.splice(i--, 1);
- _pubCount -= 1;
- }else if(tif.ioCheck(dfd)){
- _inFlight.splice(i--, 1);
- tif.resHandle(dfd);
- _pubCount -= 1;
- }else if(dfd.startTime){
- //did we timeout?
- if(dfd.startTime + (dfd.ioArgs.args.timeout || 0) < now){
- _inFlight.splice(i--, 1);
- var err = new Error("timeout exceeded");
- err.dojoType = "timeout";
- dfd.errback(err);
- //Cancel the request so the io module can do appropriate cleanup.
- dfd.cancel();
- _pubCount -= 1;
- }
- }
- };
- if(dojo.config.debugAtAllCosts){
- func.call(this);
- }else{
- try{
- func.call(this);
- }catch(e){
- dfd.errback(e);
- }
- }
- }
- }
-
- _checkPubCount(dfd);
-
- if(!_inFlight.length){
- clearInterval(_inFlightIntvl);
- _inFlightIntvl = null;
- return;
- }
- }
-
- dojo._ioCancelAll = function(){
- //summary: Cancels all pending IO requests, regardless of IO type
- //(xhr, script, iframe).
- try{
- _d.forEach(_inFlight, function(i){
- try{
- i.dfd.cancel();
- }catch(e){/*squelch*/}
- });
- }catch(e){/*squelch*/}
- }
-
- //Automatically call cancel all io calls on unload
- //in IE for trac issue #2357.
- if(_d.isIE){
- _d.addOnWindowUnload(_d._ioCancelAll);
- }
-
- _d._ioNotifyStart = function(/*Deferred*/dfd){
- // summary:
- // If dojo.publish is available, publish topics
- // about the start of a request queue and/or the
- // the beginning of request.
- // description:
- // Used by IO transports. An IO transport should
- // call this method before making the network connection.
- if(cfg.ioPublish && _d.publish && dfd.ioArgs.args.ioPublish !== false){
- if(!_pubCount){
- _d.publish("/dojo/io/start");
- }
- _pubCount += 1;
- _d.publish("/dojo/io/send", [dfd]);
- }
- }
-
- _d._ioWatch = function(dfd, validCheck, ioCheck, resHandle){
- // summary:
- // Watches the io request represented by dfd to see if it completes.
- // dfd: Deferred
- // The Deferred object to watch.
- // validCheck: Function
- // Function used to check if the IO request is still valid. Gets the dfd
- // object as its only argument.
- // ioCheck: Function
- // Function used to check if basic IO call worked. Gets the dfd
- // object as its only argument.
- // resHandle: Function
- // Function used to process response. Gets the dfd
- // object as its only argument.
- var args = dfd.ioArgs.args;
- if(args.timeout){
- dfd.startTime = (new Date()).getTime();
- }
-
- _inFlight.push({dfd: dfd, validCheck: validCheck, ioCheck: ioCheck, resHandle: resHandle});
- if(!_inFlightIntvl){
- _inFlightIntvl = setInterval(_watchInFlight, 50);
- }
- // handle sync requests
- //A weakness: async calls in flight
- //could have their handlers called as part of the
- //_watchInFlight call, before the sync's callbacks
- // are called.
- if(args.sync){
- _watchInFlight();
- }
- }
-
- var _defaultContentType = "application/x-www-form-urlencoded";
-
- var _validCheck = function(/*Deferred*/dfd){
- return dfd.ioArgs.xhr.readyState; //boolean
- }
- var _ioCheck = function(/*Deferred*/dfd){
- return 4 == dfd.ioArgs.xhr.readyState; //boolean
- }
- var _resHandle = function(/*Deferred*/dfd){
- var xhr = dfd.ioArgs.xhr;
- if(_d._isDocumentOk(xhr)){
- dfd.callback(dfd);
- }else{
- var err = new Error("Unable to load " + dfd.ioArgs.url + " status:" + xhr.status);
- err.status = xhr.status;
- err.responseText = xhr.responseText;
- dfd.errback(err);
- }
- }
-
- dojo._ioAddQueryToUrl = function(/*dojo.__IoCallbackArgs*/ioArgs){
- //summary: Adds query params discovered by the io deferred construction to the URL.
- //Only use this for operations which are fundamentally GET-type operations.
- if(ioArgs.query.length){
- ioArgs.url += (ioArgs.url.indexOf("?") == -1 ? "?" : "&") + ioArgs.query;
- ioArgs.query = null;
- }
- }
-
- /*=====
- dojo.declare("dojo.__XhrArgs", dojo.__IoArgs, {
- constructor: function(){
- // summary:
- // In addition to the properties listed for the dojo._IoArgs type,
- // the following properties are allowed for dojo.xhr* methods.
- // handleAs: String?
- // Acceptable values are: text (default), json, json-comment-optional,
- // json-comment-filtered, javascript, xml. See `dojo.contentHandlers`
- // sync: Boolean?
- // false is default. Indicates whether the request should
- // be a synchronous (blocking) request.
- // headers: Object?
- // Additional HTTP headers to send in the request.
- // failOk: Boolean?
- // false is default. Indicates whether a request should be
- // allowed to fail (and therefore no console error message in
- // the event of a failure)
- this.handleAs = handleAs;
- this.sync = sync;
- this.headers = headers;
- this.failOk = failOk;
- }
- });
- =====*/
-
- dojo.xhr = function(/*String*/ method, /*dojo.__XhrArgs*/ args, /*Boolean?*/ hasBody){
- // summary:
- // Sends an HTTP request with the given method.
- // description:
- // Sends an HTTP request with the given method.
- // See also dojo.xhrGet(), xhrPost(), xhrPut() and dojo.xhrDelete() for shortcuts
- // for those HTTP methods. There are also methods for "raw" PUT and POST methods
- // via dojo.rawXhrPut() and dojo.rawXhrPost() respectively.
- // method:
- // HTTP method to be used, such as GET, POST, PUT, DELETE. Should be uppercase.
- // hasBody:
- // If the request has an HTTP body, then pass true for hasBody.
-
- //Make the Deferred object for this xhr request.
- var dfd = _d._ioSetArgs(args, _deferredCancel, _deferredOk, _deferError);
- var ioArgs = dfd.ioArgs;
-
- //Pass the args to _xhrObj, to allow alternate XHR calls based specific calls, like
- //the one used for iframe proxies.
- var xhr = ioArgs.xhr = _d._xhrObj(ioArgs.args);
- //If XHR factory fails, cancel the deferred.
- if(!xhr){
- dfd.cancel();
- return dfd;
- }
-
- //Allow for specifying the HTTP body completely.
- if("postData" in args){
- ioArgs.query = args.postData;
- }else if("putData" in args){
- ioArgs.query = args.putData;
- }else if("rawBody" in args){
- ioArgs.query = args.rawBody;
- }else if((arguments.length > 2 && !hasBody) || "POST|PUT".indexOf(method.toUpperCase()) == -1){
- //Check for hasBody being passed. If no hasBody,
- //then only append query string if not a POST or PUT request.
- _d._ioAddQueryToUrl(ioArgs);
- }
-
- // IE 6 is a steaming pile. It won't let you call apply() on the native function (xhr.open).
- // workaround for IE6's apply() "issues"
- xhr.open(method, ioArgs.url, args.sync !== true, args.user || undefined, args.password || undefined);
- if(args.headers){
- for(var hdr in args.headers){
- if(hdr.toLowerCase() === "content-type" && !args.contentType){
- args.contentType = args.headers[hdr];
- }else if(args.headers[hdr]){
- //Only add header if it has a value. This allows for instnace, skipping
- //insertion of X-Requested-With by specifying empty value.
- xhr.setRequestHeader(hdr, args.headers[hdr]);
- }
- }
- }
- // FIXME: is this appropriate for all content types?
- xhr.setRequestHeader("Content-Type", args.contentType || _defaultContentType);
- if(!args.headers || !("X-Requested-With" in args.headers)){
- xhr.setRequestHeader("X-Requested-With", "XMLHttpRequest");
- }
- // FIXME: set other headers here!
- _d._ioNotifyStart(dfd);
- if(dojo.config.debugAtAllCosts){
- xhr.send(ioArgs.query);
- }else{
- try{
- xhr.send(ioArgs.query);
- }catch(e){
- ioArgs.error = e;
- dfd.cancel();
- }
- }
- _d._ioWatch(dfd, _validCheck, _ioCheck, _resHandle);
- xhr = null;
- return dfd; // dojo.Deferred
- }
-
- dojo.xhrGet = function(/*dojo.__XhrArgs*/ args){
- // summary:
- // Sends an HTTP GET request to the server.
- return _d.xhr("GET", args); // dojo.Deferred
- }
-
- dojo.rawXhrPost = dojo.xhrPost = function(/*dojo.__XhrArgs*/ args){
- // summary:
- // Sends an HTTP POST request to the server. In addtion to the properties
- // listed for the dojo.__XhrArgs type, the following property is allowed:
- // postData:
- // String. Send raw data in the body of the POST request.
- return _d.xhr("POST", args, true); // dojo.Deferred
- }
-
- dojo.rawXhrPut = dojo.xhrPut = function(/*dojo.__XhrArgs*/ args){
- // summary:
- // Sends an HTTP PUT request to the server. In addtion to the properties
- // listed for the dojo.__XhrArgs type, the following property is allowed:
- // putData:
- // String. Send raw data in the body of the PUT request.
- return _d.xhr("PUT", args, true); // dojo.Deferred
- }
-
- dojo.xhrDelete = function(/*dojo.__XhrArgs*/ args){
- // summary:
- // Sends an HTTP DELETE request to the server.
- return _d.xhr("DELETE", args); //dojo.Deferred
- }
-
- /*
- dojo.wrapForm = function(formNode){
- //summary:
- // A replacement for FormBind, but not implemented yet.
-
- // FIXME: need to think harder about what extensions to this we might
- // want. What should we allow folks to do w/ this? What events to
- // set/send?
- throw new Error("dojo.wrapForm not yet implemented");
- }
- */
-})();
-
-}
diff --git a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dojo/_firebug/LICENSE b/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dojo/_firebug/LICENSE
deleted file mode 100644
index 8c777a2..0000000
--- a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dojo/_firebug/LICENSE
+++ /dev/null
@@ -1,37 +0,0 @@
-License Disclaimer:
-
-All contents of this directory are Copyright (c) the Dojo Foundation, with the
-following exceptions:
--------------------------------------------------------------------------------
-
-firebug.html, firebug.js, errIcon.png, infoIcon.png, warningIcon.png:
- * Copyright (c) 2006-2007, Joe Hewitt, All rights reserved.
- Distributed under the terms of the BSD License (see below)
-
--------------------------------------------------------------------------------
-
-Copyright (c) 2006-2007, Joe Hewitt
-All rights reserved.
-
-Redistribution and use in source and binary forms, with or without
-modification, are permitted provided that the following conditions are met:
-
- * Redistributions of source code must retain the above copyright notice, this
- list of conditions and the following disclaimer.
- * Redistributions in binary form must reproduce the above copyright notice,
- this list of conditions and the following disclaimer in the documentation
- and/or other materials provided with the distribution.
- * Neither the name of the Dojo Foundation nor the names of its contributors
- may be used to endorse or promote products derived from this software
- without specific prior written permission.
-
-THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
-ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
-WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
-DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE
-FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
-DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
-SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
-CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
-OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
-OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
diff --git a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dojo/_firebug/errorIcon.png b/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dojo/_firebug/errorIcon.png
deleted file mode 100644
index 2d75261..0000000
--- a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dojo/_firebug/errorIcon.png
+++ /dev/null
Binary files differ
diff --git a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dojo/_firebug/firebug.css b/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dojo/_firebug/firebug.css
deleted file mode 100644
index 27657ef..0000000
--- a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dojo/_firebug/firebug.css
+++ /dev/null
@@ -1,211 +0,0 @@
-.firebug {
- margin: 0;
- background:#fff;
- font-family: Lucida Grande, Tahoma, sans-serif;
- font-size: 11px;
- overflow: hidden;
- border: 1px solid black;
- position: relative;
-}
-.firebug a {
- text-decoration: none;
-}
-.firebug a:hover {
- text-decoration: underline;
-}
-.firebug a:visited{
- color:#0000FF;
-}
-.firebug #firebugToolbar {
- height: 18px;
- line-height:18px;
- border-top: 1px solid ThreeDHighlight;
- border-bottom: 1px solid ThreeDShadow;
- padding: 2px 6px;
-
- background:#f0f0f0;
-}
-
-.firebug #firebugLog, .firebug #objectLog {
- overflow: auto;
- position: absolute;
- left: 0;
- width: 100%;
-}
-#objectLog{
- overflow:scroll;
- height:258px;
-}
-.firebug #firebugCommandLine {
- position: absolute;
- bottom: 0;
- left: 0;
- width: 100%;
- height: 18px;
- border: none;
- border-top: 1px solid ThreeDShadow;
-}
-.firebug .logRow {
- position: relative;
- border-bottom: 1px solid #D7D7D7;
- padding: 2px 4px 1px 6px;
- background-color: #FFFFFF;
-}
-.firebug .logRow-command {
- font-family: Monaco, monospace;
- color: blue;
-}
-.firebug .objectBox-null {
- padding: 0 2px;
- border: 1px solid #666666;
- background-color: #888888;
- color: #FFFFFF;
-}
-.firebug .objectBox-string {
- font-family: Monaco, monospace;
- color: red;
- white-space: pre;
-}
-.firebug .objectBox-number {
- color: #000088;
-}
-.firebug .objectBox-function {
- font-family: Monaco, monospace;
- color: DarkGreen;
-}
-.firebug .objectBox-object {
- color: DarkGreen;
- font-weight: bold;
-}
-.firebug .logRow-info,
-.firebug .logRow-error,
-.firebug .logRow-warning
- {
- background: #00FFFF no-repeat 2px 2px;
- padding-left: 20px;
- padding-bottom: 3px;
-}
-.firebug .logRow-info {
- background: #FFF url(infoIcon.png) no-repeat 2px 2px;
- padding-left: 20px;
- padding-bottom: 3px;
-}
-.firebug .logRow-warning {
-
- background: #00FFFF url(warningIcon.png) no-repeat 2px 2px;
- padding-left: 20px;
- padding-bottom: 3px;
-}
-.firebug .logRow-error {
- background: LightYellow url(errorIcon.png) no-repeat 2px 2px;
- padding-left: 20px;
- padding-bottom: 3px;
-}
-.firebug .errorMessage {
- vertical-align: top;
- color: #FF0000;
-}
-.firebug .objectBox-sourceLink {
- position: absolute;
- right: 4px;
- top: 2px;
- padding-left: 8px;
- font-family: Lucida Grande, sans-serif;
- font-weight: bold;
- color: #0000FF;
-}
-.firebug .logRow-group {
- background: #EEEEEE;
- border-bottom: none;
-}
-.firebug .logGroup {
- background: #EEEEEE;
-}
-.firebug .logGroupBox {
- margin-left: 24px;
- border-top: 1px solid #D7D7D7;
- border-left: 1px solid #D7D7D7;
-}
-.firebug .selectorTag,
-.firebug .selectorId,
-.firebug .selectorClass {
- font-family: Monaco, monospace;
- font-weight: normal;
-}
-.firebug .selectorTag {
- color: #0000FF;
-}
-.firebug .selectorId {
- color: DarkBlue;
-}
-.firebug .selectorClass {
- color: red;
-}
-.firebug .objectBox-element {
- font-family: Monaco, monospace;
- color: #000088;
-}
-.firebug .nodeChildren {
- margin-left: 16px;
-}
-.firebug .nodeTag {
- color: blue;
-}
-.firebug .nodeValue {
- color: #FF0000;
- font-weight: normal;
-}
-.firebug .nodeText,
-.firebug .nodeComment {
- margin: 0 2px;
- vertical-align: top;
-}
-.firebug .nodeText {
- color: #333333;
-}
-.firebug .nodeComment {
- color: DarkGreen;
-}
-.firebug .propertyNameCell {
- vertical-align: top;
-}
-.firebug .propertyName {
- font-weight: bold;
-}
-
-/* tabs */
-#firebugToolbar ul.tabs{
- margin:0 !important;
- padding:0;
-}
-#firebugToolbar ul.tabs li{
- list-style:none;
- background:transparent url(tab_lft_norm.png) no-repeat left;
- line-height:18px;
- float:left;
- margin-left:5px;
-}
-#firebugToolbar ul.tabs li.right{
- float:right;
- margin-right:5px;
- margin-left:0;
-}
-#firebugToolbar ul.tabs li.gap{
- margin-left:20px;
-}
-#firebugToolbar .tabs a{
- text-decoration:none;
- background:transparent url(tab_rgt_norm.png) no-repeat right;
- line-height:18px;
- padding:3px 9px 4px 0px;
- margin-left:9px;
- color:#333333;
-}
-#firebugToolbar .tabs li:hover{
- background:transparent url(tab_lft_over.png) no-repeat left;
-}
-#firebugToolbar .tabs a:hover{
- text-decoration:none;
- background:transparent url(tab_rgt_over.png) no-repeat right;
- color:#FFFFFF;
-}
\ No newline at end of file
diff --git a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dojo/_firebug/firebug.js b/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dojo/_firebug/firebug.js
deleted file mode 100644
index 04a455e..0000000
--- a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dojo/_firebug/firebug.js
+++ /dev/null
@@ -1,1226 +0,0 @@
-/*
- Copyright (c) 2004-2009, The Dojo Foundation All Rights Reserved.
- Available via Academic Free License >= 2.1 OR the modified BSD license.
- see: http://dojotoolkit.org/license for details
-*/
-
-
-if(!dojo._hasResource["dojo._firebug.firebug"]){ //_hasResource checks added by build. Do not use _hasResource directly in your code.
-dojo._hasResource["dojo._firebug.firebug"] = true;
-dojo.provide("dojo._firebug.firebug");
-
-dojo.deprecated = function(/*String*/ behaviour, /*String?*/ extra, /*String?*/ removal){
- // summary:
- // Log a debug message to indicate that a behavior has been
- // deprecated.
- // extra: Text to append to the message.
- // removal:
- // Text to indicate when in the future the behavior will be removed.
- var message = "DEPRECATED: " + behaviour;
- if(extra){ message += " " + extra; }
- if(removal){ message += " -- will be removed in version: " + removal; }
- console.warn(message);
-};
-
-dojo.experimental = function(/* String */ moduleName, /* String? */ extra){
- // summary: Marks code as experimental.
- // description:
- // This can be used to mark a function, file, or module as
- // experimental. Experimental code is not ready to be used, and the
- // APIs are subject to change without notice. Experimental code may be
- // completed deleted without going through the normal deprecation
- // process.
- // moduleName:
- // The name of a module, or the name of a module file or a specific
- // function
- // extra:
- // some additional message for the user
- // example:
- // | dojo.experimental("dojo.data.Result");
- // example:
- // | dojo.experimental("dojo.weather.toKelvin()", "PENDING approval from NOAA");
- var message = "EXPERIMENTAL: " + moduleName + " -- APIs subject to change without notice.";
- if(extra){ message += " " + extra; }
- console.warn(message);
-};
-
-// FIREBUG LITE
- // summary: Firebug Lite, the baby brother to Joe Hewitt's Firebug for Mozilla Firefox
- // description:
- // Opens a console for logging, debugging, and error messages.
- // Contains partial functionality to Firebug. See function list below.
- // NOTE:
- // Firebug is a Firefox extension created by Joe Hewitt (see license). You do not need Dojo to run Firebug.
- // Firebug Lite is included in Dojo by permission from Joe Hewitt
- // If you are new to Firebug, or used to the Dojo 0.4 dojo.debug, you can learn Firebug
- // functionality by reading the function comments below or visiting http://www.getfirebug.com/docs.html
- // NOTE:
- // To test Firebug Lite in Firefox:
- // FF2: set "console = null" before loading dojo and set djConfig.isDebug=true
- // FF3: disable Firebug and set djConfig.isDebug=true
- //
- // example:
- // Supports inline objects in object inspector window (only simple trace of dom nodes, however)
- // | console.log("my object", {foo:"bar"})
- // example:
- // Option for console to open in popup window
- // | var djConfig = {isDebug: true, popup:true };
- // example:
- // Option for console height (ignored for popup)
- // | var djConfig = {isDebug: true, debugHeight:100 }
-
-
-
-(function(){
-
- var isNewIE = (/Trident/.test(window.navigator.userAgent));
- if(isNewIE){
- // Fixing IE's console
- // IE doesn't insert space between arguments. How annoying.
- var calls = ["log", "info", "debug", "warn", "error"];
- for(var i=0;i<calls.length;i++){
- var m = calls[i];
- var n = "_"+calls[i]
- console[n] = console[m];
- console[m] = (function(){
- var type = n;
- return function(){
- console[type](Array.prototype.slice.call(arguments).join(" "));
- }
- })();
- }
- // clear the console on load. This is more than a convenience - too many logs crashes it.
- // If closed it throws an error
- try{ console.clear(); }catch(e){}
- }
-
- if(
- !dojo.isFF && // Firefox has Firebug
- (!dojo.isChrome || dojo.isChrome < 3) &&
- (!dojo.isSafari || dojo.isSafari < 4) && // Safari 4 has a console
- !isNewIE && // Has the new IE console
- !window.firebug && // Testing for mozilla firebug lite
- (typeof console != "undefined" && !console.firebug) && //A console that is not firebug's
- !dojo.config.useCustomLogger && // Allow custom loggers
- !dojo.isAIR // isDebug triggers AIRInsector, not Firebug
- ){
-
-
- // don't build firebug in iframes
- try{
- if(window != window.parent){
- // but if we've got a parent logger, connect to it
- if(window.parent["console"]){
- window.console = window.parent.console;
- }
- return;
- }
- }catch(e){/*squelch*/}
-
- // ***************************************************************************
- // Placing these variables before the functions that use them to avoid a
- // shrinksafe bug where variable renaming does not happen correctly otherwise.
-
- // most of the objects in this script are run anonomously
- var _firebugDoc = document;
- var _firebugWin = window;
- var __consoleAnchorId__ = 0;
-
- var consoleFrame = null;
- var consoleBody = null;
- var consoleObjectInspector = null;
- var fireBugTabs = null;
- var commandLine = null;
- var consoleToolbar = null;
-
- var frameVisible = false;
- var messageQueue = [];
- var groupStack = [];
- var timeMap = {};
- var countMap = {};
-
- var consoleDomInspector = null;
- var _inspectionMoveConnection;
- var _inspectionClickConnection;
- var _inspectionEnabled = false;
- var _inspectionTimer = null;
- var _inspectTempNode = document.createElement("div");
-
-
- var _inspectCurrentNode;
- var _restoreBorderStyle;
-
- // ***************************************************************************
-
- window.console = {
- _connects: [],
- log: function(){
- // summary:
- // Sends arguments to console.
- logFormatted(arguments, "");
- },
-
- debug: function(){
- // summary:
- // Sends arguments to console. Missing finctionality to show script line of trace.
- logFormatted(arguments, "debug");
- },
-
- info: function(){
- // summary:
- // Sends arguments to console, highlighted with (I) icon.
- logFormatted(arguments, "info");
- },
-
- warn: function(){
- // summary:
- // Sends warning arguments to console, highlighted with (!) icon and blue style.
- logFormatted(arguments, "warning");
- },
-
- error: function(){
- // summary:
- // Sends error arguments (object) to console, highlighted with (X) icon and yellow style
- // NEW: error object now displays in object inspector
- logFormatted(arguments, "error");
- },
-
- assert: function(truth, message){
- // summary:
- // Tests for true. Throws exception if false.
- if(!truth){
- var args = [];
- for(var i = 1; i < arguments.length; ++i){
- args.push(arguments[i]);
- }
-
- logFormatted(args.length ? args : ["Assertion Failure"], "error");
- throw message ? message : "Assertion Failure";
- }
- },
-
- dir: function(obj){
- var str = printObject( obj );
- str = str.replace(/\n/g, "<br />");
- str = str.replace(/\t/g, " ");
- logRow([str], "dir");
- },
-
- dirxml: function(node){
- // summary:
- //
- var html = [];
- appendNode(node, html);
- logRow(html, "dirxml");
- },
-
- group: function(){
- // summary:
- // collects log messages into a group, starting with this call and ending with
- // groupEnd(). Missing collapse functionality
- logRow(arguments, "group", pushGroup);
- },
-
- groupEnd: function(){
- // summary:
- // Closes group. See above
- logRow(arguments, "", popGroup);
- },
-
- time: function(name){
- // summary:
- // Starts timers assigned to name given in argument. Timer stops and displays on timeEnd(title);
- // example:
- // | console.time("load");
- // | console.time("myFunction");
- // | console.timeEnd("load");
- // | console.timeEnd("myFunction");
- timeMap[name] = new Date().getTime();
- },
-
- timeEnd: function(name){
- // summary:
- // See above.
- if(name in timeMap){
- var delta = (new Date()).getTime() - timeMap[name];
- logFormatted([name+ ":", delta+"ms"]);
- delete timeMap[name];
- }
- },
-
- count: function(name){
- // summary:
- // Not supported
- if(!countMap[name]) countMap[name] = 0;
- countMap[name]++;
- logFormatted([name+": "+countMap[name]]);
- },
-
- trace: function(_value){
- var stackAmt = _value || 3;
- var f = console.trace.caller; //function that called trace
- console.log(">>> console.trace(stack)");
- for(var i=0;i<stackAmt;i++){
- var func = f.toString();
- var args=[];
- for (var a = 0; a < f.arguments.length; a++) {
- args.push(f.arguments[a])
- }
- if(f.arguments.length){
- console.dir({"function":func, "arguments":args});
- }else{
- console.dir({"function":func});
- }
-
- f = f.caller;
- }
- },
-
- profile: function(){
- // summary:
- // Not supported
- this.warn(["profile() not supported."]);
- },
-
- profileEnd: function(){ },
-
- clear: function(){
- // summary:
- // Clears message console. Do not call this directly
- if(consoleBody){
- while(consoleBody.childNodes.length){
- dojo.destroy(consoleBody.firstChild);
- }
- }
- dojo.forEach(this._connects,dojo.disconnect);
- },
-
- open: function(){
- // summary:
- // Opens message console. Do not call this directly
- toggleConsole(true);
- },
-
- close: function(){
- // summary:
- // Closes message console. Do not call this directly
- if(frameVisible){
- toggleConsole();
- }
- },
- _restoreBorder: function(){
- if(_inspectCurrentNode){
- _inspectCurrentNode.style.border = _restoreBorderStyle;
- }
- },
- openDomInspector: function(){
- _inspectionEnabled = true;
- consoleBody.style.display = "none";
- consoleDomInspector.style.display = "block";
- consoleObjectInspector.style.display = "none";
- document.body.style.cursor = "pointer";
- _inspectionMoveConnection = dojo.connect(document, "mousemove", function(evt){
- if(!_inspectionEnabled){ return; }
- if(!_inspectionTimer){
- _inspectionTimer = setTimeout(function(){ _inspectionTimer = null; }, 50);
- }else{
- return;
- }
- var node = evt.target;
- if(node && (_inspectCurrentNode !== node)){
- var parent = true;
-
- console._restoreBorder();
- var html = [];
- appendNode(node, html);
- consoleDomInspector.innerHTML = html.join("");
-
- _inspectCurrentNode = node;
- _restoreBorderStyle = _inspectCurrentNode.style.border;
- _inspectCurrentNode.style.border = "#0000FF 1px solid";
- }
- });
- setTimeout(function(){
- _inspectionClickConnection = dojo.connect(document, "click", function(evt){
- document.body.style.cursor = "";
- _inspectionEnabled = !_inspectionEnabled;
- dojo.disconnect(_inspectionClickConnection);
- // console._restoreBorder();
- });
- }, 30);
- },
- _closeDomInspector: function(){
- document.body.style.cursor = "";
- dojo.disconnect(_inspectionMoveConnection);
- dojo.disconnect(_inspectionClickConnection);
- _inspectionEnabled = false;
- console._restoreBorder();
- },
- openConsole:function(){
- // summary:
- // Closes object inspector and opens message console. Do not call this directly
- consoleBody.style.display = "block";
- consoleDomInspector.style.display = "none";
- consoleObjectInspector.style.display = "none";
- console._closeDomInspector();
- },
- openObjectInspector:function(){
- consoleBody.style.display = "none";
- consoleDomInspector.style.display = "none";
- consoleObjectInspector.style.display = "block";
- console._closeDomInspector();
- },
- recss: function(){
- // http://turtle.dojotoolkit.org/~david/recss.html
- // this is placed in dojo since the console is most likely
- // in another window and dojo is easilly accessible
- var i,a,s;a=document.getElementsByTagName('link');
- for(i=0;i<a.length;i++){
- s=a[i];
- if(s.rel.toLowerCase().indexOf('stylesheet')>=0&&s.href) {
- var h=s.href.replace(/(&|%5C?)forceReload=\d+/,'');
- s.href=h+(h.indexOf('?')>=0?'&':'?')+'forceReload='+new Date().valueOf();
- }
- }
- }
- }
-
- // ***************************************************************************
-
- function toggleConsole(forceOpen){
- frameVisible = forceOpen || !frameVisible;
- if(consoleFrame){
- consoleFrame.style.display = frameVisible ? "block" : "none";
- }
- }
-
- function focusCommandLine(){
- toggleConsole(true);
- if(commandLine){
- commandLine.focus();
- }
- }
-
- function openWin(x,y,w,h){
- var win = window.open("","_firebug","status=0,menubar=0,resizable=1,top="+y+",left="+x+",width="+w+",height="+h+",scrollbars=1,addressbar=0");
- if(!win){
- var msg = "Firebug Lite could not open a pop-up window, most likely because of a blocker.\n" +
- "Either enable pop-ups for this domain, or change the djConfig to popup=false.";
- alert(msg);
- }
- createResizeHandler(win);
- var newDoc=win.document;
- //Safari needs an HTML height
- var HTMLstring= '<html style="height:100%;"><head><title>Firebug Lite</title></head>\n' +
- '<body bgColor="#ccc" style="height:97%;" onresize="opener.onFirebugResize()">\n' +
- '<div id="fb"></div>' +
- '</body></html>';
-
- newDoc.write(HTMLstring);
- newDoc.close();
- return win;
- }
-
- function createResizeHandler(wn){
- // summary
- // Creates handle for onresize window. Called from script in popup's body tag (so that it will work with IE).
- //
-
- var d = new Date();
- d.setTime(d.getTime()+(60*24*60*60*1000)); // 60 days
- d = d.toUTCString();
-
- var dc = wn.document,
- getViewport;
-
- if (wn.innerWidth){
- getViewport = function(){
- return{w:wn.innerWidth, h:wn.innerHeight};
- };
- }else if (dc.documentElement && dc.documentElement.clientWidth){
- getViewport = function(){
- return{w:dc.documentElement.clientWidth, h:dc.documentElement.clientHeight};
- };
- }else if (dc.body){
- getViewport = function(){
- return{w:dc.body.clientWidth, h:dc.body.clientHeight};
- };
- }
-
-
- window.onFirebugResize = function(){
-
- //resize the height of the console log body
- layout(getViewport().h);
-
- clearInterval(wn._firebugWin_resize);
- wn._firebugWin_resize = setTimeout(function(){
- var x = wn.screenLeft,
- y = wn.screenTop,
- w = wn.outerWidth || wn.document.body.offsetWidth,
- h = wn.outerHeight || wn.document.body.offsetHeight;
-
- document.cookie = "_firebugPosition=" + [x,y,w,h].join(",") + "; expires="+d+"; path=/";
-
- }, 5000); //can't capture window.onMove - long timeout gives better chance of capturing a resize, then the move
-
- };
- }
-
-
- /*****************************************************************************/
-
-
- function createFrame(){
- if(consoleFrame){
- return;
- }
-
- if(dojo.config.popup){
- var containerHeight = "100%";
- var cookieMatch = document.cookie.match(/(?:^|; )_firebugPosition=([^;]*)/);
- var p = cookieMatch ? cookieMatch[1].split(",") : [2,2,320,480];
-
- _firebugWin = openWin(p[0],p[1],p[2],p[3]); // global
- _firebugDoc = _firebugWin.document; // global
-
- dojo.config.debugContainerId = 'fb';
-
- // connecting popup
- _firebugWin.console = window.console;
- _firebugWin.dojo = window.dojo;
- }else{
- _firebugDoc = document;
- containerHeight = (dojo.config.debugHeight || 300) + "px";
- }
-
- var styleElement = _firebugDoc.createElement("link");
- styleElement.href = dojo.moduleUrl("dojo._firebug", "firebug.css");
- styleElement.rel = "stylesheet";
- styleElement.type = "text/css";
- var styleParent = _firebugDoc.getElementsByTagName("head");
- if(styleParent){
- styleParent = styleParent[0];
- }
- if(!styleParent){
- styleParent = _firebugDoc.getElementsByTagName("html")[0];
- }
- if(dojo.isIE){
- window.setTimeout(function(){ styleParent.appendChild(styleElement); }, 0);
- }else{
- styleParent.appendChild(styleElement);
- }
-
- if(dojo.config.debugContainerId){
- consoleFrame = _firebugDoc.getElementById(dojo.config.debugContainerId);
- }
- if(!consoleFrame){
- consoleFrame = _firebugDoc.createElement("div");
- _firebugDoc.body.appendChild(consoleFrame);
- }
- consoleFrame.className += " firebug";
- consoleFrame.style.height = containerHeight;
- consoleFrame.style.display = (frameVisible ? "block" : "none");
-
- var buildLink = function(label, title, method, _class){
- return '<li class="'+_class+'"><a href="javascript:void(0);" onclick="console.'+ method +'(); return false;" title="'+title+'">'+label+'</a></li>';
- };
- consoleFrame.innerHTML =
- '<div id="firebugToolbar">'
- + ' <ul id="fireBugTabs" class="tabs">'
-
- + buildLink("Clear", "Remove All Console Logs", "clear", "")
- + buildLink("ReCSS", "Refresh CSS without reloading page", "recss", "")
-
- + buildLink("Console", "Show Console Logs", "openConsole", "gap")
- + buildLink("DOM", "Show DOM Inspector", "openDomInspector", "")
- + buildLink("Object", "Show Object Inspector", "openObjectInspector", "")
- + ((dojo.config.popup) ? "" : buildLink("Close", "Close the console", "close", "gap"))
-
- + ' </ul>'
- + '</div>'
- + '<input type="text" id="firebugCommandLine" />'
- + '<div id="firebugLog"></div>'
- + '<div id="objectLog" style="display:none;">Click on an object in the Log display</div>'
- + '<div id="domInspect" style="display:none;">Hover over HTML elements in the main page. Click to hold selection.</div>';
-
-
- consoleToolbar = _firebugDoc.getElementById("firebugToolbar");
-
- commandLine = _firebugDoc.getElementById("firebugCommandLine");
- addEvent(commandLine, "keydown", onCommandLineKeyDown);
-
- addEvent(_firebugDoc, dojo.isIE || dojo.isSafari ? "keydown" : "keypress", onKeyDown);
-
- consoleBody = _firebugDoc.getElementById("firebugLog");
- consoleObjectInspector = _firebugDoc.getElementById("objectLog");
- consoleDomInspector = _firebugDoc.getElementById("domInspect");
- fireBugTabs = _firebugDoc.getElementById("fireBugTabs");
- layout();
- flush();
- }
-
- dojo.addOnLoad(createFrame);
-
- function clearFrame(){
- _firebugDoc = null;
-
- if(_firebugWin.console){
- _firebugWin.console.clear();
- }
- _firebugWin = null;
- consoleFrame = null;
- consoleBody = null;
- consoleObjectInspector = null;
- consoleDomInspector = null;
- commandLine = null;
- messageQueue = [];
- groupStack = [];
- timeMap = {};
- }
-
-
- function evalCommandLine(){
- var text = commandLine.value;
- commandLine.value = "";
-
- logRow(["> ", text], "command");
-
- var value;
- try{
- value = eval(text);
- }catch(e){
- console.debug(e); // put exception on the console
- }
-
- console.log(value);
- }
-
- function layout(h){
- var tHeight = 25; //consoleToolbar.offsetHeight; // tab style not ready on load - throws off layout
- var height = h ?
- h - (tHeight + commandLine.offsetHeight +25 + (h*.01)) + "px" :
- (consoleFrame.offsetHeight - tHeight - commandLine.offsetHeight) + "px";
-
- consoleBody.style.top = tHeight + "px";
- consoleBody.style.height = height;
- consoleObjectInspector.style.height = height;
- consoleObjectInspector.style.top = tHeight + "px";
- consoleDomInspector.style.height = height;
- consoleDomInspector.style.top = tHeight + "px";
- commandLine.style.bottom = 0;
-
- dojo.addOnWindowUnload(clearFrame)
- }
-
- function logRow(message, className, handler){
- if(consoleBody){
- writeMessage(message, className, handler);
- }else{
- messageQueue.push([message, className, handler]);
- }
- }
-
- function flush(){
- var queue = messageQueue;
- messageQueue = [];
-
- for(var i = 0; i < queue.length; ++i){
- writeMessage(queue[i][0], queue[i][1], queue[i][2]);
- }
- }
-
- function writeMessage(message, className, handler){
- var isScrolledToBottom =
- consoleBody.scrollTop + consoleBody.offsetHeight >= consoleBody.scrollHeight;
-
- handler = handler||writeRow;
-
- handler(message, className);
-
- if(isScrolledToBottom){
- consoleBody.scrollTop = consoleBody.scrollHeight - consoleBody.offsetHeight;
- }
- }
-
- function appendRow(row){
- var container = groupStack.length ? groupStack[groupStack.length-1] : consoleBody;
- container.appendChild(row);
- }
-
- function writeRow(message, className){
- var row = consoleBody.ownerDocument.createElement("div");
- row.className = "logRow" + (className ? " logRow-"+className : "");
- row.innerHTML = message.join("");
- appendRow(row);
- }
-
- function pushGroup(message, className){
- logFormatted(message, className);
-
- //var groupRow = consoleBody.ownerDocument.createElement("div");
- //groupRow.className = "logGroup";
- var groupRowBox = consoleBody.ownerDocument.createElement("div");
- groupRowBox.className = "logGroupBox";
- //groupRow.appendChild(groupRowBox);
- appendRow(groupRowBox);
- groupStack.push(groupRowBox);
- }
-
- function popGroup(){
- groupStack.pop();
- }
-
- // ***************************************************************************
-
- function logFormatted(objects, className){
- var html = [];
-
- var format = objects[0];
- var objIndex = 0;
-
- if(typeof(format) != "string"){
- format = "";
- objIndex = -1;
- }
-
- var parts = parseFormat(format);
-
- for(var i = 0; i < parts.length; ++i){
- var part = parts[i];
- if(part && typeof part == "object"){
- part.appender(objects[++objIndex], html);
- }else{
- appendText(part, html);
- }
- }
-
-
- var ids = [];
- var obs = [];
- for(i = objIndex+1; i < objects.length; ++i){
- appendText(" ", html);
-
- var object = objects[i];
- if(object === undefined || object === null ){
- appendNull(object, html);
-
- }else if(typeof(object) == "string"){
- appendText(object, html);
-
- }else if(object instanceof Date){
- appendText(object.toString(), html);
-
- }else if(object.nodeType == 9){
- appendText("[ XmlDoc ]", html);
-
- }else{
- // Create link for object inspector
- // need to create an ID for this link, since it is currently text
- var id = "_a" + __consoleAnchorId__++;
- ids.push(id);
- // need to save the object, so the arrays line up
- obs.push(object);
- var str = '<a id="'+id+'" href="javascript:void(0);">'+getObjectAbbr(object)+'</a>';
-
- appendLink( str , html);
- }
- }
-
- logRow(html, className);
-
- // Now that the row is inserted in the DOM, loop through all of the links that were just created
- for(i=0; i<ids.length; i++){
- var btn = _firebugDoc.getElementById(ids[i]);
- if(!btn){ continue; }
-
- // store the object in the dom btn for reference later
- // avoid parsing these objects unless necessary
- btn.obj = obs[i];
-
- _firebugWin.console._connects.push(dojo.connect(btn, "onclick", function(){
-
- console.openObjectInspector();
-
- try{
- printObject(this.obj);
- }catch(e){
- this.obj = e;
- }
- consoleObjectInspector.innerHTML = "<pre>" + printObject( this.obj ) + "</pre>";
- }));
- }
- }
-
- function parseFormat(format){
- var parts = [];
-
- var reg = /((^%|[^\\]%)(\d+)?(\.)([a-zA-Z]))|((^%|[^\\]%)([a-zA-Z]))/;
- var appenderMap = {s: appendText, d: appendInteger, i: appendInteger, f: appendFloat};
-
- for(var m = reg.exec(format); m; m = reg.exec(format)){
- var type = m[8] ? m[8] : m[5];
- var appender = type in appenderMap ? appenderMap[type] : appendObject;
- var precision = m[3] ? parseInt(m[3]) : (m[4] == "." ? -1 : 0);
-
- parts.push(format.substr(0, m[0][0] == "%" ? m.index : m.index+1));
- parts.push({appender: appender, precision: precision});
-
- format = format.substr(m.index+m[0].length);
- }
-
- parts.push(format);
-
- return parts;
- }
-
- function escapeHTML(value){
- function replaceChars(ch){
- switch(ch){
- case "<":
- return "<";
- case ">":
- return ">";
- case "&":
- return "&";
- case "'":
- return "'";
- case '"':
- return """;
- }
- return "?";
- }
- return String(value).replace(/[<>&"']/g, replaceChars);
- }
-
- function objectToString(object){
- try{
- return object+"";
- }catch(e){
- return null;
- }
- }
-
- // ***************************************************************************
- function appendLink(object, html){
- // needed for object links - no HTML escaping
- html.push( objectToString(object) );
- }
-
- function appendText(object, html){
- html.push(escapeHTML(objectToString(object)));
- }
-
- function appendNull(object, html){
- html.push('<span class="objectBox-null">', escapeHTML(objectToString(object)), '</span>');
- }
-
- function appendString(object, html){
- html.push('<span class="objectBox-string">"', escapeHTML(objectToString(object)),
- '"</span>');
- }
-
- function appendInteger(object, html){
- html.push('<span class="objectBox-number">', escapeHTML(objectToString(object)), '</span>');
- }
-
- function appendFloat(object, html){
- html.push('<span class="objectBox-number">', escapeHTML(objectToString(object)), '</span>');
- }
-
- function appendFunction(object, html){
- html.push('<span class="objectBox-function">', getObjectAbbr(object), '</span>');
- }
-
- function appendObject(object, html){
- try{
- if(object === undefined){
- appendNull("undefined", html);
- }else if(object === null){
- appendNull("null", html);
- }else if(typeof object == "string"){
- appendString(object, html);
- }else if(typeof object == "number"){
- appendInteger(object, html);
- }else if(typeof object == "function"){
- appendFunction(object, html);
- }else if(object.nodeType == 1){
- appendSelector(object, html);
- }else if(typeof object == "object"){
- appendObjectFormatted(object, html);
- }else{
- appendText(object, html);
- }
- }catch(e){
- /* squelch */
- }
- }
-
- function appendObjectFormatted(object, html){
- var text = objectToString(object);
- var reObject = /\[object (.*?)\]/;
-
- var m = reObject.exec(text);
- html.push('<span class="objectBox-object">', m ? m[1] : text, '</span>');
- }
-
- function appendSelector(object, html){
- html.push('<span class="objectBox-selector">');
-
- html.push('<span class="selectorTag">', escapeHTML(object.nodeName.toLowerCase()), '</span>');
- if(object.id){
- html.push('<span class="selectorId">#', escapeHTML(object.id), '</span>');
- }
- if(object.className){
- html.push('<span class="selectorClass">.', escapeHTML(object.className), '</span>');
- }
-
- html.push('</span>');
- }
-
- function appendNode(node, html){
- if(node.nodeType == 1){
- html.push(
- '<div class="objectBox-element">',
- '<<span class="nodeTag">', node.nodeName.toLowerCase(), '</span>');
-
- for(var i = 0; i < node.attributes.length; ++i){
- var attr = node.attributes[i];
- if(!attr.specified){ continue; }
-
- html.push(' <span class="nodeName">', attr.nodeName.toLowerCase(),
- '</span>="<span class="nodeValue">', escapeHTML(attr.nodeValue),
- '</span>"');
- }
-
- if(node.firstChild){
- html.push('></div><div class="nodeChildren">');
-
- for(var child = node.firstChild; child; child = child.nextSibling){
- appendNode(child, html);
- }
-
- html.push('</div><div class="objectBox-element"></<span class="nodeTag">',
- node.nodeName.toLowerCase(), '></span></div>');
- }else{
- html.push('/></div>');
- }
- }else if (node.nodeType == 3){
- html.push('<div class="nodeText">', escapeHTML(node.nodeValue),
- '</div>');
- }
- }
-
- // ***************************************************************************
-
- function addEvent(object, name, handler){
- if(document.all){
- object.attachEvent("on"+name, handler);
- }else{
- object.addEventListener(name, handler, false);
- }
- }
-
- function removeEvent(object, name, handler){
- if(document.all){
- object.detachEvent("on"+name, handler);
- }else{
- object.removeEventListener(name, handler, false);
- }
- }
-
- function cancelEvent(event){
- if(document.all){
- event.cancelBubble = true;
- }else{
- event.stopPropagation();
- }
- }
-
- function onError(msg, href, lineNo){
- var lastSlash = href.lastIndexOf("/");
- var fileName = lastSlash == -1 ? href : href.substr(lastSlash+1);
-
- var html = [
- '<span class="errorMessage">', msg, '</span>',
- '<div class="objectBox-sourceLink">', fileName, ' (line ', lineNo, ')</div>'
- ];
-
- logRow(html, "error");
- }
-
-
- //After converting to div instead of iframe, now getting two keydowns right away in IE 6.
- //Make sure there is a little bit of delay.
- var onKeyDownTime = new Date().getTime();
-
- function onKeyDown(event){
- var timestamp = (new Date()).getTime();
- if(timestamp > onKeyDownTime + 200){
- event = dojo.fixEvent(event);
- var keys = dojo.keys;
- var ekc = event.keyCode;
- onKeyDownTime = timestamp;
- if(ekc == keys.F12){
- toggleConsole();
- }else if(
- (ekc == keys.NUMPAD_ENTER || ekc == 76) &&
- event.shiftKey &&
- (event.metaKey || event.ctrlKey)
- ){
- focusCommandLine();
- }else{
- return;
- }
- cancelEvent(event);
- }
- }
-
- function onCommandLineKeyDown(e){
- var dk = dojo.keys;
- if(e.keyCode == 13 && commandLine.value){
- addToHistory(commandLine.value);
- evalCommandLine();
- }else if(e.keyCode == 27){
- commandLine.value = "";
- }else if(e.keyCode == dk.UP_ARROW || e.charCode == dk.UP_ARROW){
- navigateHistory("older");
- }else if(e.keyCode == dk.DOWN_ARROW || e.charCode == dk.DOWN_ARROW){
- navigateHistory("newer");
- }else if(e.keyCode == dk.HOME || e.charCode == dk.HOME){
- historyPosition = 1;
- navigateHistory("older");
- }else if(e.keyCode == dk.END || e.charCode == dk.END){
- historyPosition = 999999;
- navigateHistory("newer");
- }
- }
-
- var historyPosition = -1;
- var historyCommandLine = null;
-
- function addToHistory(value){
- var history = cookie("firebug_history");
- history = (history) ? dojo.fromJson(history) : [];
- var pos = dojo.indexOf(history, value);
- if (pos != -1){
- history.splice(pos, 1);
- }
- history.push(value);
- cookie("firebug_history", dojo.toJson(history), 30);
- while(history.length && !cookie("firebug_history")){
- history.shift();
- cookie("firebug_history", dojo.toJson(history), 30);
- }
- historyCommandLine = null;
- historyPosition = -1;
- }
-
- function navigateHistory(direction){
- var history = cookie("firebug_history");
- history = (history) ? dojo.fromJson(history) : [];
- if(!history.length){
- return;
- }
-
- if(historyCommandLine === null){
- historyCommandLine = commandLine.value;
- }
-
- if(historyPosition == -1){
- historyPosition = history.length;
- }
-
- if(direction == "older"){
- --historyPosition;
- if(historyPosition < 0){
- historyPosition = 0;
- }
- }else if(direction == "newer"){
- ++historyPosition;
- if(historyPosition > history.length){
- historyPosition = history.length;
- }
- }
-
- if(historyPosition == history.length){
- commandLine.value = historyCommandLine;
- historyCommandLine = null;
- }else{
- commandLine.value = history[historyPosition];
- }
- }
-
- function cookie(name, value){
- var c = document.cookie;
- if(arguments.length == 1){
- var matches = c.match(new RegExp("(?:^|; )" + name + "=([^;]*)"));
- return matches ? decodeURIComponent(matches[1]) : undefined; // String or undefined
- }else{
- var d = new Date();
- d.setMonth(d.getMonth()+1);
- document.cookie = name + "=" + encodeURIComponent(value) + ((d.toUtcString) ? "; expires=" + d.toUTCString() : "");
- }
- };
-
- function isArray(it){
- return it && it instanceof Array || typeof it == "array";
- }
-
- //***************************************************************************************************
- // Print Object Helpers
- function objectLength(o){
- var cnt = 0;
- for(var nm in o){
- cnt++
- }
- return cnt;
- }
-
- function printObject(o, i, txt, used){
- // Recursively trace object, indenting to represent depth for display in object inspector
- var ind = " \t";
- txt = txt || "";
- i = i || ind;
- used = used || [];
- var opnCls;
-
- if(o && o.nodeType == 1){
- var html = [];
- appendNode(o, html);
- return html.join("");
- }
-
- var br=",\n", cnt = 0, length = objectLength(o);
-
- if(o instanceof Date){
- return i + o.toString() + br;
- }
- looking:
- for(var nm in o){
- cnt++;
- if(cnt==length){br = "\n";}
- if(o[nm] === window || o[nm] === document){
- continue;
- }else if(o[nm] === null){
- txt += i+nm + " : NULL" + br;
- }else if(o[nm] && o[nm].nodeType){
- if(o[nm].nodeType == 1){
- //txt += i+nm + " : < "+o[nm].tagName+" id=\""+ o[nm].id+"\" />" + br;
- }else if(o[nm].nodeType == 3){
- txt += i+nm + " : [ TextNode "+o[nm].data + " ]" + br;
- }
-
- }else if(typeof o[nm] == "object" && (o[nm] instanceof String || o[nm] instanceof Number || o[nm] instanceof Boolean)){
- txt += i+nm + " : " + o[nm] + "," + br;
-
- }else if(o[nm] instanceof Date){
- txt += i+nm + " : " + o[nm].toString() + br;
-
- }else if(typeof(o[nm]) == "object" && o[nm]){
- for(var j = 0, seen; seen = used[j]; j++){
- if(o[nm] === seen){
- txt += i+nm + " : RECURSION" + br;
- continue looking;
- }
- }
- used.push(o[nm]);
-
- opnCls = (isArray(o[nm]))?["[","]"]:["{","}"];
- txt += i+nm +" : " + opnCls[0] + "\n";//non-standard break, (no comma)
- txt += printObject(o[nm], i+ind, "", used);
- txt += i + opnCls[1] + br;
-
- }else if(typeof o[nm] == "undefined"){
- txt += i+nm + " : undefined" + br;
- }else if(nm == "toString" && typeof o[nm] == "function"){
- var toString = o[nm]();
- if(typeof toString == "string" && toString.match(/function ?(.*?)\(/)){
- toString = escapeHTML(getObjectAbbr(o[nm]));
- }
- txt += i+nm +" : " + toString + br;
- }else{
- txt += i+nm +" : "+ escapeHTML(getObjectAbbr(o[nm])) + br;
- }
- }
- return txt;
- }
-
- function getObjectAbbr(obj){
- // Gets an abbreviation of an object for display in log
- // X items in object, including id
- // X items in an array
- // TODO: Firebug Sr. actually goes by char count
- var isError = (obj instanceof Error);
- if(obj.nodeType == 1){
- return escapeHTML('< '+obj.tagName.toLowerCase()+' id=\"'+ obj.id+ '\" />');
- }
- if(obj.nodeType == 3){
- return escapeHTML('[TextNode: "'+obj.nodeValue+'"]');
- }
- var nm = (obj && (obj.id || obj.name || obj.ObjectID || obj.widgetId));
- if(!isError && nm){ return "{"+nm+"}"; }
-
- var obCnt = 2;
- var arCnt = 4;
- var cnt = 0;
-
- if(isError){
- nm = "[ Error: "+(obj.message || obj.description || obj)+" ]";
- }else if(isArray(obj)){
- nm = "[" + obj.slice(0,arCnt).join(",");
- if(obj.length > arCnt){
- nm += " ... ("+obj.length+" items)";
- }
- nm += "]";
- }else if(typeof obj == "function"){
- nm = obj + "";
- var reg = /function\s*([^\(]*)(\([^\)]*\))[^\{]*\{/;
- var m = reg.exec(nm);
- if(m){
- if(!m[1]){
- m[1] = "function";
- }
- nm = m[1] + m[2];
- }else{
- nm = "function()";
- }
- }else if(typeof obj != "object" || typeof obj == "string"){
- nm = obj + "";
- }else{
- nm = "{";
- for(var i in obj){
- cnt++;
- if(cnt > obCnt){ break; }
- nm += i+":"+escapeHTML(obj[i])+" ";
- }
- nm+="}";
- }
-
- return nm;
- }
-
- //*************************************************************************************
-
- //window.onerror = onError;
-
- addEvent(document, dojo.isIE || dojo.isSafari ? "keydown" : "keypress", onKeyDown);
-
- if( (document.documentElement.getAttribute("debug") == "true")||
- (dojo.config.isDebug)
- ){
- toggleConsole(true);
- }
-
- dojo.addOnWindowUnload(function(){
- // Erase the globals and event handlers I created, to prevent spurious leak warnings
- removeEvent(document, dojo.isIE || dojo.isSafari ? "keydown" : "keypress", onKeyDown);
- window.onFirebugResize = null;
- window.console = null;
- });
-}
-
-})();
-
-
-}
diff --git a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dojo/_firebug/infoIcon.png b/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dojo/_firebug/infoIcon.png
deleted file mode 100644
index da1e533..0000000
--- a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dojo/_firebug/infoIcon.png
+++ /dev/null
Binary files differ
diff --git a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dojo/_firebug/tab_lft_norm.png b/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dojo/_firebug/tab_lft_norm.png
deleted file mode 100644
index f0479a2..0000000
--- a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dojo/_firebug/tab_lft_norm.png
+++ /dev/null
Binary files differ
diff --git a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dojo/_firebug/tab_lft_over.png b/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dojo/_firebug/tab_lft_over.png
deleted file mode 100644
index 2f36cca..0000000
--- a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dojo/_firebug/tab_lft_over.png
+++ /dev/null
Binary files differ
diff --git a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dojo/_firebug/tab_rgt_norm.png b/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dojo/_firebug/tab_rgt_norm.png
deleted file mode 100644
index 464af3e..0000000
--- a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dojo/_firebug/tab_rgt_norm.png
+++ /dev/null
Binary files differ
diff --git a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dojo/_firebug/tab_rgt_over.png b/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dojo/_firebug/tab_rgt_over.png
deleted file mode 100644
index 2bc2cd0..0000000
--- a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dojo/_firebug/tab_rgt_over.png
+++ /dev/null
Binary files differ
diff --git a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dojo/_firebug/warningIcon.png b/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dojo/_firebug/warningIcon.png
deleted file mode 100644
index de51084..0000000
--- a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dojo/_firebug/warningIcon.png
+++ /dev/null
Binary files differ
diff --git a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dojo/back.js b/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dojo/back.js
deleted file mode 100644
index 9f3d1a7..0000000
--- a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dojo/back.js
+++ /dev/null
@@ -1,403 +0,0 @@
-/*
- Copyright (c) 2004-2009, The Dojo Foundation All Rights Reserved.
- Available via Academic Free License >= 2.1 OR the modified BSD license.
- see: http://dojotoolkit.org/license for details
-*/
-
-
-if(!dojo._hasResource["dojo.back"]){ //_hasResource checks added by build. Do not use _hasResource directly in your code.
-dojo._hasResource["dojo.back"] = true;
-dojo.provide("dojo.back");
-
-/*=====
-dojo.back = {
- // summary: Browser history management resources
-}
-=====*/
-
-
-(function(){
- var back = dojo.back;
-
- // everyone deals with encoding the hash slightly differently
-
- function getHash(){
- var h = window.location.hash;
- if(h.charAt(0) == "#"){ h = h.substring(1); }
- return dojo.isMozilla ? h : decodeURIComponent(h);
- }
-
- function setHash(h){
- if(!h){ h = ""; }
- window.location.hash = encodeURIComponent(h);
- historyCounter = history.length;
- }
-
- // if we're in the test for these methods, expose them on dojo.back. ok'd with alex.
- if(dojo.exists("tests.back-hash")){
- back.getHash = getHash;
- back.setHash = setHash;
- }
-
- var initialHref = (typeof(window) !== "undefined") ? window.location.href : "";
- var initialHash = (typeof(window) !== "undefined") ? getHash() : "";
- var initialState = null;
-
- var locationTimer = null;
- var bookmarkAnchor = null;
- var historyIframe = null;
- var forwardStack = [];
- var historyStack = [];
- var moveForward = false;
- var changingUrl = false;
- var historyCounter;
-
- function handleBackButton(){
- //summary: private method. Do not call this directly.
-
- //The "current" page is always at the top of the history stack.
- var current = historyStack.pop();
- if(!current){ return; }
- var last = historyStack[historyStack.length-1];
- if(!last && historyStack.length == 0){
- last = initialState;
- }
- if(last){
- if(last.kwArgs["back"]){
- last.kwArgs["back"]();
- }else if(last.kwArgs["backButton"]){
- last.kwArgs["backButton"]();
- }else if(last.kwArgs["handle"]){
- last.kwArgs.handle("back");
- }
- }
- forwardStack.push(current);
- }
-
- back.goBack = handleBackButton;
-
- function handleForwardButton(){
- //summary: private method. Do not call this directly.
- var last = forwardStack.pop();
- if(!last){ return; }
- if(last.kwArgs["forward"]){
- last.kwArgs.forward();
- }else if(last.kwArgs["forwardButton"]){
- last.kwArgs.forwardButton();
- }else if(last.kwArgs["handle"]){
- last.kwArgs.handle("forward");
- }
- historyStack.push(last);
- }
-
- back.goForward = handleForwardButton;
-
- function createState(url, args, hash){
- //summary: private method. Do not call this directly.
- return {"url": url, "kwArgs": args, "urlHash": hash}; //Object
- }
-
- function getUrlQuery(url){
- //summary: private method. Do not call this directly.
- var segments = url.split("?");
- if(segments.length < 2){
- return null; //null
- }
- else{
- return segments[1]; //String
- }
- }
-
- function loadIframeHistory(){
- //summary: private method. Do not call this directly.
- var url = (dojo.config["dojoIframeHistoryUrl"] || dojo.moduleUrl("dojo", "resources/iframe_history.html")) + "?" + (new Date()).getTime();
- moveForward = true;
- if(historyIframe){
- dojo.isWebKit ? historyIframe.location = url : window.frames[historyIframe.name].location = url;
- }else{
- //console.warn("dojo.back: Not initialised. You need to call dojo.back.init() from a <script> block that lives inside the <body> tag.");
- }
- return url; //String
- }
-
- function checkLocation(){
- if(!changingUrl){
- var hsl = historyStack.length;
-
- var hash = getHash();
-
- if((hash === initialHash||window.location.href == initialHref)&&(hsl == 1)){
- // FIXME: could this ever be a forward button?
- // we can't clear it because we still need to check for forwards. Ugg.
- // clearInterval(this.locationTimer);
- handleBackButton();
- return;
- }
-
- // first check to see if we could have gone forward. We always halt on
- // a no-hash item.
- if(forwardStack.length > 0){
- if(forwardStack[forwardStack.length-1].urlHash === hash){
- handleForwardButton();
- return;
- }
- }
-
- // ok, that didn't work, try someplace back in the history stack
- if((hsl >= 2)&&(historyStack[hsl-2])){
- if(historyStack[hsl-2].urlHash === hash){
- handleBackButton();
- return;
- }
- }
-
- if(dojo.isSafari && dojo.isSafari < 3){
- var hisLen = history.length;
- if(hisLen > historyCounter) handleForwardButton();
- else if(hisLen < historyCounter) handleBackButton();
- historyCounter = hisLen;
- }
- }
- };
-
- back.init = function(){
- //summary: Initializes the undo stack. This must be called from a <script>
- // block that lives inside the <body> tag to prevent bugs on IE.
- // description:
- // Only call this method before the page's DOM is finished loading. Otherwise
- // it will not work. Be careful with xdomain loading or djConfig.debugAtAllCosts scenarios,
- // in order for this method to work, dojo.back will need to be part of a build layer.
- if(dojo.byId("dj_history")){ return; } // prevent reinit
- var src = dojo.config["dojoIframeHistoryUrl"] || dojo.moduleUrl("dojo", "resources/iframe_history.html");
- if (dojo._postLoad) {
- console.error("dojo.back.init() must be called before the DOM has loaded. "
- + "If using xdomain loading or djConfig.debugAtAllCosts, include dojo.back "
- + "in a build layer.");
- } else {
- document.write('<iframe style="border:0;width:1px;height:1px;position:absolute;visibility:hidden;bottom:0;right:0;" name="dj_history" id="dj_history" src="' + src + '"></iframe>');
- }
- };
-
- back.setInitialState = function(/*Object*/args){
- //summary:
- // Sets the state object and back callback for the very first page
- // that is loaded.
- //description:
- // It is recommended that you call this method as part of an event
- // listener that is registered via dojo.addOnLoad().
- //args: Object
- // See the addToHistory() function for the list of valid args properties.
- initialState = createState(initialHref, args, initialHash);
- };
-
- //FIXME: Make these doc comments not be awful. At least they're not wrong.
- //FIXME: Would like to support arbitrary back/forward jumps. Have to rework iframeLoaded among other things.
- //FIXME: is there a slight race condition in moz using change URL with the timer check and when
- // the hash gets set? I think I have seen a back/forward call in quick succession, but not consistent.
-
-
- /*=====
- dojo.__backArgs = function(kwArgs){
- // back: Function?
- // A function to be called when this state is reached via the user
- // clicking the back button.
- // forward: Function?
- // Upon return to this state from the "back, forward" combination
- // of navigation steps, this function will be called. Somewhat
- // analgous to the semantic of an "onRedo" event handler.
- // changeUrl: Boolean?|String?
- // Boolean indicating whether or not to create a unique hash for
- // this state. If a string is passed instead, it is used as the
- // hash.
- }
- =====*/
-
- back.addToHistory = function(/*dojo.__backArgs*/ args){
- // summary:
- // adds a state object (args) to the history list.
- // description:
- // To support getting back button notifications, the object
- // argument should implement a function called either "back",
- // "backButton", or "handle". The string "back" will be passed as
- // the first and only argument to this callback.
- //
- // To support getting forward button notifications, the object
- // argument should implement a function called either "forward",
- // "forwardButton", or "handle". The string "forward" will be
- // passed as the first and only argument to this callback.
- //
- // If you want the browser location string to change, define "changeUrl" on the object. If the
- // value of "changeUrl" is true, then a unique number will be appended to the URL as a fragment
- // identifier (http://some.domain.com/path#uniquenumber). If it is any other value that does
- // not evaluate to false, that value will be used as the fragment identifier. For example,
- // if changeUrl: 'page1', then the URL will look like: http://some.domain.com/path#page1
- //
- // example:
- // | dojo.back.addToHistory({
- // | back: function(){ console.log('back pressed'); },
- // | forward: function(){ console.log('forward pressed'); },
- // | changeUrl: true
- // | });
-
- // BROWSER NOTES:
- // Safari 1.2:
- // back button "works" fine, however it's not possible to actually
- // DETECT that you've moved backwards by inspecting window.location.
- // Unless there is some other means of locating.
- // FIXME: perhaps we can poll on history.length?
- // Safari 2.0.3+ (and probably 1.3.2+):
- // works fine, except when changeUrl is used. When changeUrl is used,
- // Safari jumps all the way back to whatever page was shown before
- // the page that uses dojo.undo.browser support.
- // IE 5.5 SP2:
- // back button behavior is macro. It does not move back to the
- // previous hash value, but to the last full page load. This suggests
- // that the iframe is the correct way to capture the back button in
- // these cases.
- // Don't test this page using local disk for MSIE. MSIE will not create
- // a history list for iframe_history.html if served from a file: URL.
- // The XML served back from the XHR tests will also not be properly
- // created if served from local disk. Serve the test pages from a web
- // server to test in that browser.
- // IE 6.0:
- // same behavior as IE 5.5 SP2
- // Firefox 1.0+:
- // the back button will return us to the previous hash on the same
- // page, thereby not requiring an iframe hack, although we do then
- // need to run a timer to detect inter-page movement.
-
- //If addToHistory is called, then that means we prune the
- //forward stack -- the user went back, then wanted to
- //start a new forward path.
- forwardStack = [];
-
- var hash = null;
- var url = null;
- if(!historyIframe){
- if(dojo.config["useXDomain"] && !dojo.config["dojoIframeHistoryUrl"]){
- console.warn("dojo.back: When using cross-domain Dojo builds,"
- + " please save iframe_history.html to your domain and set djConfig.dojoIframeHistoryUrl"
- + " to the path on your domain to iframe_history.html");
- }
- historyIframe = window.frames["dj_history"];
- }
- if(!bookmarkAnchor){
- bookmarkAnchor = dojo.create("a", {style: {display: "none"}}, dojo.body());
- }
- if(args["changeUrl"]){
- hash = ""+ ((args["changeUrl"]!==true) ? args["changeUrl"] : (new Date()).getTime());
-
- //If the current hash matches the new one, just replace the history object with
- //this new one. It doesn't make sense to track different state objects for the same
- //logical URL. This matches the browser behavior of only putting in one history
- //item no matter how many times you click on the same #hash link, at least in Firefox
- //and Safari, and there is no reliable way in those browsers to know if a #hash link
- //has been clicked on multiple times. So making this the standard behavior in all browsers
- //so that dojo.back's behavior is the same in all browsers.
- if(historyStack.length == 0 && initialState.urlHash == hash){
- initialState = createState(url, args, hash);
- return;
- }else if(historyStack.length > 0 && historyStack[historyStack.length - 1].urlHash == hash){
- historyStack[historyStack.length - 1] = createState(url, args, hash);
- return;
- }
-
- changingUrl = true;
- setTimeout(function() {
- setHash(hash);
- changingUrl = false;
- }, 1);
- bookmarkAnchor.href = hash;
-
- if(dojo.isIE){
- url = loadIframeHistory();
-
- var oldCB = args["back"]||args["backButton"]||args["handle"];
-
- //The function takes handleName as a parameter, in case the
- //callback we are overriding was "handle". In that case,
- //we will need to pass the handle name to handle.
- var tcb = function(handleName){
- if(getHash() != ""){
- setTimeout(function() { setHash(hash); }, 1);
- }
- //Use apply to set "this" to args, and to try to avoid memory leaks.
- oldCB.apply(this, [handleName]);
- };
-
- //Set interceptor function in the right place.
- if(args["back"]){
- args.back = tcb;
- }else if(args["backButton"]){
- args.backButton = tcb;
- }else if(args["handle"]){
- args.handle = tcb;
- }
-
- var oldFW = args["forward"]||args["forwardButton"]||args["handle"];
-
- //The function takes handleName as a parameter, in case the
- //callback we are overriding was "handle". In that case,
- //we will need to pass the handle name to handle.
- var tfw = function(handleName){
- if(getHash() != ""){
- setHash(hash);
- }
- if(oldFW){ // we might not actually have one
- //Use apply to set "this" to args, and to try to avoid memory leaks.
- oldFW.apply(this, [handleName]);
- }
- };
-
- //Set interceptor function in the right place.
- if(args["forward"]){
- args.forward = tfw;
- }else if(args["forwardButton"]){
- args.forwardButton = tfw;
- }else if(args["handle"]){
- args.handle = tfw;
- }
-
- }else if(!dojo.isIE){
- // start the timer
- if(!locationTimer){
- locationTimer = setInterval(checkLocation, 200);
- }
-
- }
- }else{
- url = loadIframeHistory();
- }
-
- historyStack.push(createState(url, args, hash));
- };
-
- back._iframeLoaded = function(evt, ifrLoc){
- //summary:
- // private method. Do not call this directly.
- var query = getUrlQuery(ifrLoc.href);
- if(query == null){
- // alert("iframeLoaded");
- // we hit the end of the history, so we should go back
- if(historyStack.length == 1){
- handleBackButton();
- }
- return;
- }
- if(moveForward){
- // we were expecting it, so it's not either a forward or backward movement
- moveForward = false;
- return;
- }
-
- //Check the back stack first, since it is more likely.
- //Note that only one step back or forward is supported.
- if(historyStack.length >= 2 && query == getUrlQuery(historyStack[historyStack.length-2].url)){
- handleBackButton();
- }else if(forwardStack.length > 0 && query == getUrlQuery(forwardStack[forwardStack.length-1].url)){
- handleForwardButton();
- }
- };
- })();
-
-}
diff --git a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dojo/behavior.js b/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dojo/behavior.js
deleted file mode 100644
index 1278d8e..0000000
--- a/org.eclipse.virgo.apps.admin.web/src/main/webapp/js/dojo/behavior.js
+++ /dev/null
@@ -1,250 +0,0 @@
-/*
- Copyright (c) 2004-2009, The D