aboutsummaryrefslogtreecommitdiff
path: root/vo/java/topcat
diff options
context:
space:
mode:
Diffstat (limited to 'vo/java/topcat')
-rwxr-xr-xvo/java/topcat124
1 files changed, 124 insertions, 0 deletions
diff --git a/vo/java/topcat b/vo/java/topcat
new file mode 100755
index 00000000..0c5909a9
--- /dev/null
+++ b/vo/java/topcat
@@ -0,0 +1,124 @@
+#!/bin/sh
+
+#+
+# Name:
+# topcat
+
+# Purpose:
+# Invokes the TOPCAT application on unix
+
+# Description:
+# This shell script invokes the TOPCAT application.
+# It's not very complicated, but performs some argument manipulation
+# prior to invoking java with the right classpath and classname.
+#
+# 1. if a class path is specified using either the CLASSPATH
+# environment variable or the -classpath flag to this script,
+# it will be added to the application classpath
+#
+# 2. any command-line arguments which look like they are destined
+# for java itself (starting with -D or -X, or prefixed with -J) will
+# be sent to java, and the others will be sent to the application
+
+# Requisites:
+# - java should be on the path.
+#
+# - relative to the directory in which this script is installed,
+# one of the following jar files should exist and contain the
+# TOPCAT classes:
+# ./topcat-full.jar
+# ./topcat-lite.jar
+# ../../lib/topcat/topcat.jar
+
+# Authors:
+# MBT: Mark Taylor (Starlink)
+#-
+
+# Set locations of acceptable jar files (relative to this script).
+topcat_jars="\
+ ../lib/topcat/topcat.jar\
+ topcat-full.jar\
+ topcat-lite.jar\
+"
+
+# Find where this script is located.
+bindir="`dirname $0`"
+
+# Mac-specific items.
+javaArgs0=""
+if test -x /usr/bin/sw_vers && /usr/bin/sw_vers | grep -q 'OS.X'; then
+
+ # Look for the jar in the resource bundle, since we may have been
+ # installed that way.
+ topcat_jars="$topcat_jars ../Contents/Resources/Java/topcat-full.jar ../TOPCAT.app/Contents/Resources/Java/topcat-full.jar"
+
+ # Look for an icon file and prepare to start java in such a way that
+ # it gets used for the dock icon (rather than the generic java one).
+ icns_files="../TOPCAT.app/Contents/Resources/Topcat.icns ../lib/topcat/MacOS/Topcat.icns"
+ icns_file=""
+ for f in $icns_files; do
+ if test -r "$bindir/$f"; then
+ icns_file="$bindir/$f"
+ fi
+ done
+ if test -r "$icns_file" && java -X | grep -q -- -Xdock:icon; then
+ javaArgs0="$javaArgs0 "\'-Xdock:icon=$icns_file\'
+ fi
+
+ # Set Mac application name.
+ javaArgs0="$javaArgs0 -Dcom.apple.mrj.application.apple.menu.about.name=TOPCAT"
+fi
+
+# Locate the application jar file.
+for j in $topcat_jars; do
+ if test -z "$appjar" -a -f "$bindir/$j"; then
+ appjar="$bindir/$j"
+ fi
+done
+if test ! -f "$appjar"
+then
+ echo 1>&2 "Can't find topcat classes in ${bindir} - looked for:$topcat_jars"
+ exit 1
+fi
+
+# Divide the arguments into two parts: those destined as flags for
+# the java binary, and the rest.
+javaArgs=""
+appArgs=""
+while test "$1"
+do
+ if echo $1 | grep -- '^-[XD]' >/dev/null; then
+ javaArgs="$javaArgs "\'$1\'
+ elif echo $1 | grep -- '^-J' >/dev/null; then
+ javaArgs="$javaArgs "\'`echo $1 | sed s/^-J//`\'
+ elif [ "$1" = "-classpath" -a -n "$2" ]; then
+ shift
+ export CLASSPATH="$1"
+ else
+ appArgs="$appArgs "\'$1\'
+ fi
+ shift
+done
+
+# Check for Cygwin and transform paths.
+case "`uname`" in
+ CYGWIN*)
+ if test -n "$CLASSPATH"; then
+ CLASSPATH=`cygpath --path --windows "${appjar}:$CLASSPATH"`
+ else
+ CLASSPATH=`cygpath --windows "${appjar}"`
+ fi
+ ;;
+ *)
+ CLASSPATH="${appjar}:${CLASSPATH}"
+ ;;
+esac
+
+# Run topcat.
+cmd="java \
+ $javaArgs0 \
+ $javaArgs \
+ -Duk.ac.starlink.topcat.cmdname=topcat \
+ -classpath \${CLASSPATH} uk.ac.starlink.topcat.Driver \
+ $appArgs"
+eval "$cmd"