private JMenu createViewMenu() {

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

		s = getInternationalText("PerspectiveDepth");
		final JMenuItem miPerspectiveDepth = new JCheckBoxMenuItem(s != null ? s : "Perspective Depth");
		miPerspectiveDepth.setSelected(true);
		miPerspectiveDepth.addItemListener(new ItemListener() {
			public void itemStateChanged(ItemEvent e) {
				jmolContainer.jmol.setPerspectiveDepth(e.getStateChange() == ItemEvent.SELECTED);
				jmolContainer.notifyChange();
			}
		});

		s = getInternationalText("NavigationMode");
		final JMenuItem miNav = new JCheckBoxMenuItem(s != null ? s : "Navigation Mode");
		miNav.addItemListener(new ItemListener() {
			public void itemStateChanged(ItemEvent e) {
				boolean b = e.getStateChange() == ItemEvent.SELECTED;
				if (b && !jmolContainer.jmol.viewer.getPerspectiveDepth()) {
					JOptionPane.showMessageDialog(JOptionPane.getFrameForComponent(jmolContainer),
							"Perspective depth is required for the navigation mode. It will be turned on.");
					miPerspectiveDepth.setSelected(true);
				}
				jmolContainer.changeNavigationMode(b);
				jmolContainer.notifyChange();
			}
		});
		menu.add(miNav);

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

		s = getInternationalText("AutonomousMode");
		final JMenuItem miRover = new JCheckBoxMenuItem(s != null ? s : "Autonomous Mode");
		miRover.setEnabled(jmolContainer.getNavigationMode());
		miRover.addActionListener(new ActionListener() {
			public void actionPerformed(ActionEvent e) {
				jmolContainer.setRoverMode(miRover.isSelected());
			}
		});
		subMenu.add(miRover);

		s = getInternationalText("CollisionDetectionForAllAtoms");
		final JMenuItem miPauli = new JCheckBoxMenuItem(s != null ? s : "Collision Detection for All Atoms");
		miPauli.addItemListener(new ItemListener() {
			public void itemStateChanged(ItemEvent e) {
				jmolContainer.setCollisionDetectionForAllAtoms(e.getStateChange() == ItemEvent.SELECTED);
			}
		});
		subMenu.add(miPauli);

		s = getInternationalText("BlinkInteractionCenters");
		final JMenuItem miBlink = new JCheckBoxMenuItem(s != null ? s : "Blink Interaction Centers");
		miBlink.addItemListener(new ItemListener() {
			public void itemStateChanged(ItemEvent e) {
				jmolContainer.setBlinkInteractionCenters(e.getStateChange() == ItemEvent.SELECTED);
			}
		});
		subMenu.add(miBlink);

		s = getInternationalText("RoverSettings");
		final JMenuItem miRoverSettings = new JMenuItem(s != null ? s : "Rover Settings");
		miRoverSettings.addActionListener(new ActionListener() {
			public void actionPerformed(ActionEvent e) {
				jmolContainer.editRover();
			}
		});
		subMenu.add(miRoverSettings);

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

			public void popupMenuWillBecomeInvisible(PopupMenuEvent e) {
			}

			public void popupMenuWillBecomeVisible(PopupMenuEvent e) {
				miRover.setEnabled(jmolContainer.getNavigationMode());
				miRoverSettings.setEnabled(jmolContainer.isRoverMode());
				ModelerUtilities.setWithoutNotifyingListeners(miRover, jmolContainer.isRoverMode());
				ModelerUtilities.setWithoutNotifyingListeners(miPauli, jmolContainer.getPauliRepulsionForAllAtoms());
				ModelerUtilities.setWithoutNotifyingListeners(miBlink, jmolContainer.getBlinkInteractionCenters());
			}
		});

		menu.add(miPerspectiveDepth);

		s = getInternationalText("DepthCueing");
		final JMenuItem miDepthCueing = new JCheckBoxMenuItem(s != null ? s : "Depth Cueing");
		miDepthCueing.setEnabled(false);
		miDepthCueing.addItemListener(new ItemListener() {
			public void itemStateChanged(ItemEvent e) {
				jmolContainer.jmol.viewer.setDepthCueing(e.getStateChange() == ItemEvent.SELECTED);
				jmolContainer.jmol.repaint();
				jmolContainer.notifyChange();
			}
		});
		menu.add(miDepthCueing);
		menu.addSeparator();

		s = getInternationalText("DetachCameraFromAtom");
		final JMenuItem miDetach = new JMenuItem(s != null ? s : "Detach Camera from Atom");
		miDetach.setEnabled(false);
		miDetach.addActionListener(new ActionListener() {
			public void actionPerformed(ActionEvent e) {
				jmolContainer.jmol.setCameraAtom(-1);
				jmolContainer.notifyChange();
			}
		});
		menu.add(miDetach);

		s = getInternationalText("ZDepthMagnification");
		final JMenu zDepthMenu = new JMenu(s != null ? s : "Z-Depth Magnification");
		menu.add(zDepthMenu);
		menu.addSeparator();

		ButtonGroup bg = new ButtonGroup();

		final JMenuItem miOne = new JRadioButtonMenuItem("1x");
		miOne.addItemListener(new ItemListener() {
			public void itemStateChanged(ItemEvent e) {
				if (e.getStateChange() == ItemEvent.SELECTED) {
					jmolContainer.jmol.viewer.setZDepthMagnification(1);
					jmolContainer.jmol.repaint();
					jmolContainer.notifyChange();
				}
			}
		});
		zDepthMenu.add(miOne);
		bg.add(miOne);

		final JMenuItem miFive = new JRadioButtonMenuItem("5x");
		miFive.setSelected(true);
		miFive.addItemListener(new ItemListener() {
			public void itemStateChanged(ItemEvent e) {
				if (e.getStateChange() == ItemEvent.SELECTED) {
					jmolContainer.jmol.viewer.setZDepthMagnification(5);
					jmolContainer.jmol.repaint();
					jmolContainer.notifyChange();
				}
			}
		});
		zDepthMenu.add(miFive);
		bg.add(miFive);

		final JMenuItem miTen = new JRadioButtonMenuItem("10x");
		miTen.addItemListener(new ItemListener() {
			public void itemStateChanged(ItemEvent e) {
				if (e.getStateChange() == ItemEvent.SELECTED) {
					jmolContainer.jmol.viewer.setZDepthMagnification(10);
					jmolContainer.jmol.repaint();
					jmolContainer.notifyChange();
				}
			}
		});
		zDepthMenu.add(miTen);
		bg.add(miTen);

		s = getInternationalText("ClearAnnotations");
		final JMenuItem miClearAnnotations = new JMenuItem(s != null ? s : "Clear Annotations");
		miClearAnnotations.addActionListener(new ActionListener() {
			public void actionPerformed(ActionEvent e) {
				if (jmolContainer.atomAnnotations.isEmpty() && jmolContainer.bondAnnotations.isEmpty())
					return;
				String s2 = getInternationalText("ClearAnnotations");
				if (JOptionPane.showConfirmDialog(JOptionPane.getFrameForComponent(jmolContainer),
						"Are you sure you want to remove all annotations?", s2 != null ? s2 : "Clear Annotations",
						JOptionPane.OK_CANCEL_OPTION, JOptionPane.QUESTION_MESSAGE) == JOptionPane.OK_OPTION) {
					jmolContainer.clearAnnotations();
					jmolContainer.notifyChange();
				}
			}
		});
		menu.add(miClearAnnotations);

		s = getInternationalText("ClearInteractions");
		final JMenuItem miClearInteractions = new JMenuItem(s != null ? s : "Clear Interactions");
		miClearInteractions.addActionListener(new ActionListener() {
			public void actionPerformed(ActionEvent e) {
				if (jmolContainer.atomInteractions.isEmpty() && jmolContainer.bondInteractions.isEmpty())
					return;
				String s2 = getInternationalText("ClearInteractions");
				if (JOptionPane.showConfirmDialog(JOptionPane.getFrameForComponent(jmolContainer),
						"Are you sure you want to remove all interactions?", s2 != null ? s2 : "Clear Interactions",
						JOptionPane.OK_CANCEL_OPTION, JOptionPane.QUESTION_MESSAGE) == JOptionPane.OK_OPTION) {
					jmolContainer.clearInteractions();
					jmolContainer.notifyChange();
				}
			}
		});
		menu.add(miClearInteractions);

		s = getInternationalText("ClearMeasurements");
		JMenuItem mi = new JMenuItem(s != null ? s : "Clear Measurements");
		mi.addActionListener(new ActionListener() {
			public void actionPerformed(ActionEvent e) {
				jmolContainer.jmol.viewer.clearMeasurements();
			}
		});
		menu.add(mi);

		s = getInternationalText("ResizeContainer");
		mi = new JMenuItem((s != null ? s : "Resize Container") + "...");
		mi.addActionListener(new ActionListener() {
			public void actionPerformed(ActionEvent e) {
				createSizeDialog().setVisible(true);
			}
		});
		menu.add(mi);
		menu.addSeparator();

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

		s = getInternationalText("FrontView");
		mi = new JMenuItem(s != null ? s : "Front");
		mi.addActionListener(new ActionListener() {
			public void actionPerformed(ActionEvent e) {
				jmolContainer.jmol.viewer.frontView(1.5f * jmolContainer.jmol.viewer.getRotationRadius());
			}
		});
		subMenu.add(mi);

		s = getInternationalText("BackView");
		mi = new JMenuItem(s != null ? s : "Back");
		mi.addActionListener(new ActionListener() {
			public void actionPerformed(ActionEvent e) {
				jmolContainer.jmol.viewer.backView(1.5f * jmolContainer.jmol.viewer.getRotationRadius());
			}
		});
		subMenu.add(mi);

		s = getInternationalText("TopView");
		mi = new JMenuItem(s != null ? s : "Top");
		mi.addActionListener(new ActionListener() {
			public void actionPerformed(ActionEvent e) {
				jmolContainer.jmol.viewer.topView(1.5f * jmolContainer.jmol.viewer.getRotationRadius());
			}
		});
		subMenu.add(mi);

		s = getInternationalText("BottomView");
		mi = new JMenuItem(s != null ? s : "Bottom");
		mi.addActionListener(new ActionListener() {
			public void actionPerformed(ActionEvent e) {
				jmolContainer.jmol.viewer.bottomView(1.5f * jmolContainer.jmol.viewer.getRotationRadius());
			}
		});
		subMenu.add(mi);

		s = getInternationalText("LeftView");
		mi = new JMenuItem(s != null ? s : "Left");
		mi.addActionListener(new ActionListener() {
			public void actionPerformed(ActionEvent e) {
				jmolContainer.jmol.viewer.leftView(1.5f * jmolContainer.jmol.viewer.getRotationRadius());
			}
		});
		subMenu.add(mi);

		s = getInternationalText("RightView");
		mi = new JMenuItem(s != null ? s : "Right");
		mi.addActionListener(new ActionListener() {
			public void actionPerformed(ActionEvent e) {
				jmolContainer.jmol.viewer.rightView(1.5f * jmolContainer.jmol.viewer.getRotationRadius());
			}
		});
		subMenu.add(mi);

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

			public void popupMenuWillBecomeVisible(PopupMenuEvent e) {
				boolean b = jmolContainer.jmol.viewer.getNavigationMode();
				ModelerUtilities.setWithoutNotifyingListeners(miNav, b);
				if (b) {
					switch (jmolContainer.jmol.viewer.getZDepthMagnification()) {
					case 1:
						ModelerUtilities.setWithoutNotifyingListeners(miOne, true);
						break;
					case 5:
						ModelerUtilities.setWithoutNotifyingListeners(miFive, true);
						break;
					case 10:
						ModelerUtilities.setWithoutNotifyingListeners(miTen, true);
						break;
					}
				}
				zDepthMenu.setEnabled(b);
				miPerspectiveDepth.setEnabled(!b);
				miDetach.setEnabled(jmolContainer.getCameraAtom() != -1);
				miClearAnnotations.setEnabled(!jmolContainer.atomAnnotations.isEmpty()
						|| !jmolContainer.bondAnnotations.isEmpty());
				miClearInteractions.setEnabled(!jmolContainer.atomInteractions.isEmpty()
						|| !jmolContainer.bondInteractions.isEmpty());
				ModelerUtilities
						.setWithoutNotifyingListeners(miDepthCueing, jmolContainer.jmol.viewer.getDepthCueing());
			}

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

		return menu;

	}