void show() throws ScriptException {
		if (statementLength == 1)
			badArgumentCount();
		switch (statement[1].tok) {
		case Token.state:
			checkLength23();
			if (statementLength == 2) {
				showString(viewer.getStateInfo());
				return;
			}
			showString(viewer.getSavedState(parameterAsString(2)));
			return;
		case Token.save:
			showString(viewer.listSavedStates());
			return;
		case Token.data:
			String type = (statementLength == 3 ? stringParameter(2) : null);
			String[] data = (type == null ? dataLabelString : viewer.getData(type));
			showString(data == null ? "no data" : "data \"" + data[0] + "\"\n" + data[1]);
			return;
		case Token.unitcell:
			showString(viewer.getUnitCellInfoText());
			return;
		case Token.spacegroup:
			if (statementLength == 2) {
				showString(viewer.getSpaceGroupInfoText(null));
				return;
			}
			if (statementLength == 3 && statement[2].tok == Token.string) {
				String sg = viewer.simpleReplace((String) statement[2].value, "''", "\"");
				showString(viewer.getSpaceGroupInfoText(sg));
				return;
			}
			invalidArgument();
		case Token.dollarsign:
			int shapeType = setShapeByNameParameter(2);
			showString((String) viewer.getShapeProperty(shapeType,
					(shapeType == JmolConstants.SHAPE_ISOSURFACE ? "jvxlFileData" : "command")));
			return;
		case Token.boundbox:
			showString("boundbox: " + viewer.getBoundBoxCenter() + " " + viewer.getBoundBoxCornerVector());
			return;
		case Token.center:
			Point3f pt = viewer.getRotationCenter();
			showString("center {" + pt.x + " " + pt.y + " " + pt.z + "}");
			return;
		case Token.draw:
			showString((String) viewer.getShapeProperty(JmolConstants.SHAPE_DRAW, "command"));
			return;
		case Token.file:
			// as as string
			if (statementLength == 2) {
				showString(viewer.getCurrentFileAsString());
				return;
			}
			if (statementLength == 3 && statement[2].tok == Token.string) {
				String fileName = (String) statement[2].value;
				showString(viewer.getFileAsString(fileName));
				return;
			}
			invalidArgument();
		case Token.history:
			int n = (statementLength == 2 ? Integer.MAX_VALUE : intParameter(2));
			if (n < 1)
				invalidArgument();
			viewer.removeCommand();
			showString(viewer.getSetHistory(n));
			return;
		case Token.isosurface:
			showString((String) viewer.getShapeProperty(JmolConstants.SHAPE_ISOSURFACE, "jvxlFileData"));
			return;
		case Token.mo:
			// 0: all; Integer.MAX_VALUE: current;
			viewer.loadShape(JmolConstants.SHAPE_MO);
			int modelIndex = viewer.getDisplayModelIndex();
			if (modelIndex < 0)
				evalError(GT._("MO isosurfaces require that only one model be displayed"));
			Hashtable moData = (Hashtable) viewer.getModelAuxiliaryInfo(modelIndex, "moData");
			if (moData == null)
				evalError(GT._("no MO basis/coefficient data available for this frame"));
			viewer.setShapeProperty(JmolConstants.SHAPE_MO, "moData", moData);
			showString((String) viewer.getShapeProperty(JmolConstants.SHAPE_MO, "showMO",
					statementLength > 2 ? intParameter(2) : Integer.MAX_VALUE));
			return;
		case Token.model:
			showString(viewer.getModelInfoAsString());
			return;
		case Token.monitor:
			showString(viewer.getMeasurementInfoAsString());
			return;
		case Token.orientation:
			showString(viewer.getOrientationText());
			return;
		case Token.pdbheader:
			showString(viewer.getPDBHeader());
			return;
		case Token.symmetry:
			showString(viewer.getSymmetryInfoAsString());
			return;
		case Token.transform:
			showString("transform:\n" + viewer.getTransformText());
			return;
		case Token.url:
			// in a new window
			if (statementLength == 2) {
				viewer.showUrl(viewer.getFullPathName());
				return;
			}
			if (statementLength == 3 && statement[2].tok == Token.string) {
				String fileName = (String) statement[2].value;
				viewer.showUrl(fileName);
				return;
			}
			invalidArgument();
		case Token.zoom:
			showString("zoom " + (viewer.getZoomEnabled() ? ("" + viewer.getZoomPercentSetting()) : "off"));
			return;
			// not implemented
		case Token.translation:
		case Token.rotation:
			evalError(GT._("use {0}") + "\"show ORIENTATION\"");
		case Token.chain:
		case Token.group:
		case Token.sequence:
		case Token.residue:
			evalError(GT._("unrecognized {0} parameter --  use {1}",
					new Object[] { "SHOW", "\"getProperty CHAININFO\"" }));
		case Token.selected:
			evalError(GT._("unrecognized {0} parameter --  use {1}", new Object[] { "SHOW",
					"\"getProperty ATOMINFO (selected)\"" }));
		case Token.atom:
			evalError(GT._("unrecognized {0} parameter --  use {1}", new Object[] { "SHOW",
					"\"getProperty ATOMINFO (atom expression)\"" }));
		case Token.spin:
		case Token.list:
		case Token.mlp:
		case Token.information:
		case Token.phipsi:
		case Token.ramprint:
		case Token.all:
			notImplemented(1);
			break;
		default:
			evalError(GT._("unrecognized {0} parameter", "SHOW"));
		}
	}