JMenu createSchemeMenu() {

		String s = getInternationalText("Style");
		JMenu menu = new JMenu(s != null ? s : "Style");

		ButtonGroup bg = new ButtonGroup();

		s = getInternationalText("BallAndStick");
		final JMenuItem miBS = new JRadioButtonMenuItem(s != null ? s : JmolContainer.BALL_AND_STICK);
		miBS.setSelected(true);
		miBS.addActionListener(new ActionListener() {
			public void actionPerformed(ActionEvent e) {
				jmolContainer.setScheme(JmolContainer.BALL_AND_STICK);
				jmolContainer.notifyChange();
			}
		});
		menu.add(miBS);
		bg.add(miBS);

		s = getInternationalText("SpaceFilling");
		final JMenuItem miCPK = new JRadioButtonMenuItem(s != null ? s : JmolContainer.SPACE_FILLING);
		miCPK.addActionListener(new ActionListener() {
			public void actionPerformed(ActionEvent e) {
				jmolContainer.setScheme(JmolContainer.SPACE_FILLING);
				jmolContainer.notifyChange();
			}
		});
		menu.add(miCPK);
		bg.add(miCPK);

		s = getInternationalText("Stick");
		final JMenuItem miStick = new JRadioButtonMenuItem(s != null ? s : JmolContainer.STICKS);
		miStick.addActionListener(new ActionListener() {
			public void actionPerformed(ActionEvent e) {
				jmolContainer.setScheme(JmolContainer.STICKS);
				jmolContainer.notifyChange();
			}
		});
		menu.add(miStick);
		bg.add(miStick);

		s = getInternationalText("Wireframe");
		final JMenuItem miWF = new JRadioButtonMenuItem(s != null ? s : JmolContainer.WIREFRAME);
		miWF.addActionListener(new ActionListener() {
			public void actionPerformed(ActionEvent e) {
				jmolContainer.setScheme(JmolContainer.WIREFRAME);
				jmolContainer.notifyChange();
			}
		});
		menu.add(miWF);
		bg.add(miWF);
		menu.addSeparator();

		s = getInternationalText("Backbone");
		final JMenuItem miBackbone = new JRadioButtonMenuItem(s != null ? s : JmolContainer.BACKBONE);
		miBackbone.addActionListener(new ActionListener() {
			public void actionPerformed(ActionEvent e) {
				jmolContainer.setScheme(JmolContainer.BACKBONE);
				jmolContainer.notifyChange();
			}
		});
		menu.add(miBackbone);
		bg.add(miBackbone);

		s = getInternationalText("Trace");
		final JMenuItem miTrace = new JRadioButtonMenuItem(s != null ? s : JmolContainer.TRACE);
		miTrace.addActionListener(new ActionListener() {
			public void actionPerformed(ActionEvent e) {
				jmolContainer.setScheme(JmolContainer.TRACE);
				jmolContainer.notifyChange();
			}
		});
		menu.add(miTrace);
		bg.add(miTrace);

		s = getInternationalText("Strand");
		final JMenuItem miStrands = new JRadioButtonMenuItem(s != null ? s : JmolContainer.STRANDS);
		miStrands.addActionListener(new ActionListener() {
			public void actionPerformed(ActionEvent e) {
				jmolContainer.setScheme(JmolContainer.STRANDS);
				jmolContainer.notifyChange();
			}
		});
		menu.add(miStrands);
		bg.add(miStrands);

		s = getInternationalText("Ribbon");
		final JMenuItem miRibbon = new JRadioButtonMenuItem(s != null ? s : JmolContainer.RIBBON);
		miRibbon.addActionListener(new ActionListener() {
			public void actionPerformed(ActionEvent e) {
				jmolContainer.setScheme(JmolContainer.RIBBON);
				jmolContainer.notifyChange();
			}
		});
		menu.add(miRibbon);
		bg.add(miRibbon);

		s = getInternationalText("MeshRibbon");
		final JMenuItem miMeshRibbon = new JRadioButtonMenuItem(s != null ? s : JmolContainer.MESHRIBBON);
		miMeshRibbon.addActionListener(new ActionListener() {
			public void actionPerformed(ActionEvent e) {
				jmolContainer.setScheme(JmolContainer.MESHRIBBON);
				jmolContainer.notifyChange();
			}
		});
		menu.add(miMeshRibbon);
		bg.add(miMeshRibbon);

		s = getInternationalText("Cartoon");
		final JMenuItem miCartoon = new JRadioButtonMenuItem(s != null ? s : JmolContainer.CARTOON);
		miCartoon.addActionListener(new ActionListener() {
			public void actionPerformed(ActionEvent e) {
				jmolContainer.setScheme(JmolContainer.CARTOON);
				jmolContainer.notifyChange();
			}
		});
		menu.add(miCartoon);
		bg.add(miCartoon);

		s = getInternationalText("Rocket");
		final JMenuItem miRocket = new JRadioButtonMenuItem(s != null ? s : JmolContainer.ROCKET);
		miRocket.addActionListener(new ActionListener() {
			public void actionPerformed(ActionEvent e) {
				jmolContainer.setScheme(JmolContainer.ROCKET);
				jmolContainer.notifyChange();
			}
		});
		menu.add(miRocket);
		bg.add(miRocket);
		menu.addSeparator();

		s = getInternationalText("Surfaces");
		JMenu subMenu = new JMenu(s != null ? s : "Surfaces");
		menu.add(subMenu);

		ButtonGroup surfaceGroup = new ButtonGroup();

		s = getInternationalText("VdwDottedSurface");
		final JMenuItem miDots = new JRadioButtonMenuItem(s != null ? s : "Van der Waals Dotted Surface");
		miDots.addItemListener(new ItemListener() {
			public void itemStateChanged(ItemEvent e) {
				boolean b = e.getStateChange() == ItemEvent.SELECTED;
				jmolContainer.jmol.viewer.runScriptImmediatelyWithoutThread("dots " + (b ? "ON" : "OFF"));
				jmolContainer.setDotsEnabled(b);
			}
		});
		subMenu.add(miDots);
		surfaceGroup.add(miDots);

		s = getInternationalText("VdwSurface");
		final JMenuItem miVdwSurf = new JRadioButtonMenuItem(s != null ? s : "Van der Waals Surface");
		miVdwSurf.addItemListener(new ItemListener() {
			public void itemStateChanged(ItemEvent e) {
				boolean b = e.getStateChange() == ItemEvent.SELECTED;
				jmolContainer.runScript(b ? "isosurface delete resolution 0 solvent 0" : "isosurface delete");
			}
		});
		subMenu.add(miVdwSurf);
		surfaceGroup.add(miVdwSurf);

		s = getInternationalText("SolventAccessibleSurface");
		final JMenuItem miSolvSurf = new JRadioButtonMenuItem(s != null ? s : "Solvent Accessible Surface");
		miSolvSurf.addItemListener(new ItemListener() {
			public void itemStateChanged(ItemEvent e) {
				boolean b = e.getStateChange() == ItemEvent.SELECTED;
				jmolContainer.runScript(b ? "isosurface delete resolution 0 solvent 1.4" : "isosurface delete");
			}
		});
		subMenu.add(miSolvSurf);
		surfaceGroup.add(miSolvSurf);

		s = getInternationalText("MolecularSurface");
		final JMenuItem miMolSurf = new JRadioButtonMenuItem(s != null ? s : "Molecular Surface");
		miMolSurf.addItemListener(new ItemListener() {
			public void itemStateChanged(ItemEvent e) {
				boolean b = e.getStateChange() == ItemEvent.SELECTED;
				jmolContainer.runScript(b ? "isosurface delete resolution 0 molecular" : "isosurface delete");
			}
		});
		subMenu.add(miMolSurf);
		surfaceGroup.add(miMolSurf);
		subMenu.addSeparator();

		final JMenuItem miOff = new JRadioButtonMenuItem();
		surfaceGroup.add(miOff);

		s = getInternationalText("SurfaceOff");
		JMenuItem mi = new JMenuItem(s != null ? s : "Turn Off");
		mi.addActionListener(new ActionListener() {
			public void actionPerformed(ActionEvent e) {
				jmolContainer.jmol.viewer.runScriptImmediatelyWithoutThread("isosurface delete;select *;dots off");
				jmolContainer.setDotsEnabled(false);
				miOff.doClick();
			}
		});
		subMenu.add(mi);
		subMenu.addSeparator();

		ButtonGroup bg2 = new ButtonGroup();
		s = getInternationalText("SurfaceOpaque");
		mi = new JRadioButtonMenuItem(s != null ? s : "Opaque");
		mi.setSelected(true);
		mi.addItemListener(new ItemListener() {
			public void itemStateChanged(ItemEvent e) {
				if (e.getStateChange() == ItemEvent.SELECTED)
					jmolContainer.runScript("isosurface opaque");
			}
		});
		subMenu.add(mi);
		bg2.add(mi);

		s = getInternationalText("SurfaceTranslucent");
		mi = new JRadioButtonMenuItem(s != null ? s : "Translucent");
		mi.addItemListener(new ItemListener() {
			public void itemStateChanged(ItemEvent e) {
				if (e.getStateChange() == ItemEvent.SELECTED)
					jmolContainer.runScript("isosurface translucent");
			}
		});
		subMenu.add(mi);
		bg2.add(mi);

		menu.getPopupMenu().addPopupMenuListener(new PopupMenuListener() {
			public void popupMenuCanceled(PopupMenuEvent e) {
			}

			public void popupMenuWillBecomeVisible(PopupMenuEvent e) {
				miDots.setSelected(jmolContainer.isDotsEnabled());
				String s = jmolContainer.getScheme();
				if (s != null)
					s = s.intern();
				if (s == JmolContainer.BALL_AND_STICK)
					miBS.setSelected(true);
				else if (s == JmolContainer.SPACE_FILLING)
					miCPK.setSelected(true);
				else if (s == JmolContainer.STICKS)
					miStick.setSelected(true);
				else if (s == JmolContainer.WIREFRAME)
					miWF.setSelected(true);
				else if (s == JmolContainer.CARTOON)
					miCartoon.setSelected(true);
				else if (s == JmolContainer.RIBBON)
					miRibbon.setSelected(true);
				else if (s == JmolContainer.MESHRIBBON)
					miMeshRibbon.setSelected(true);
				else if (s == JmolContainer.ROCKET)
					miRocket.setSelected(true);
				else if (s == JmolContainer.TRACE)
					miTrace.setSelected(true);
				else if (s == JmolContainer.STRANDS)
					miStrands.setSelected(true);
				else if (s == JmolContainer.BACKBONE)
					miBackbone.setSelected(true);
			}

			public void popupMenuWillBecomeInvisible(PopupMenuEvent e) {
			}
		});

		return menu;

	}