byte show(boolean on) {

		JOptionPane op = new JOptionPane();
		op.setLayout(new BorderLayout(5, 5));
		final JDialog d = op.createDialog(view, "Steering Options");

		if (on) {

			JPanel p = new JPanel();
			p.setBorder(BorderFactory.createTitledBorder("Interaction Mode"));
			op.add(p, BorderLayout.NORTH);

			ButtonGroup bg = new ButtonGroup();
			JRadioButton rb = new JRadioButton("Force");
			rb.setSelected(true);
			rb.addItemListener(new ItemListener() {
				public void itemStateChanged(ItemEvent e) {
					if (e.getStateChange() == ItemEvent.SELECTED)
						returnedValue = UserField.FORCE_MODE;
				}
			});
			bg.add(rb);
			p.add(rb);

			rb = new JRadioButton("Impulse 1");
			rb.addItemListener(new ItemListener() {
				public void itemStateChanged(ItemEvent e) {
					if (e.getStateChange() == ItemEvent.SELECTED)
						returnedValue = UserField.IMPULSE1_MODE;
				}
			});
			bg.add(rb);
			p.add(rb);

			rb = new JRadioButton("Impulse 2");
			rb.addItemListener(new ItemListener() {
				public void itemStateChanged(ItemEvent e) {
					if (e.getStateChange() == ItemEvent.SELECTED)
						returnedValue = UserField.IMPULSE2_MODE;
				}
			});
			bg.add(rb);
			p.add(rb);

			p = new JPanel(new BorderLayout());
			p.setBorder(BorderFactory.createTitledBorder("Friction Option"));
			op.add(p, BorderLayout.CENTER);

			String s = "<html>A friction field will be turned on to counterbalance<br>the steering forces to prevent too much energy<br>input into the system. You may specify or change<br>the friction coefficient:";
			p.add(new JLabel(s), BorderLayout.NORTH);

			final RealNumberTextField ntf = new RealNumberTextField(view.steerFriction, 0.0, 100.0, 10);
			ntf.setPreferredSize(new Dimension(100, 20));
			ntf.addActionListener(new ActionListener() {
				public void actionPerformed(ActionEvent e) {
					view.steerFriction = ntf.getValue();
					view.getModel().setFriction((float) view.steerFriction);
					d.dispose();
				}
			});
			p.add(ntf, BorderLayout.CENTER);

			p = new JPanel(new FlowLayout(FlowLayout.RIGHT));

			s = MDView.getInternationalText("OKButton");
			JButton b = new JButton(s != null ? s : "OK");
			b.setMnemonic(KeyEvent.VK_O);
			b.setPreferredSize(new Dimension(80, 20));
			b.addActionListener(new ActionListener() {
				public void actionPerformed(ActionEvent e) {
					view.steerFriction = ntf.getValue();
					view.getModel().setFriction((float) view.steerFriction);
					d.dispose();
				}
			});
			p.add(b);

			s = MDView.getInternationalText("CancelButton");
			b = new JButton(s != null ? s : "Cancel");
			b.setPreferredSize(new Dimension(80, 20));
			b.setMnemonic(KeyEvent.VK_C);
			b.addActionListener(new ActionListener() {
				public void actionPerformed(ActionEvent e) {
					returnedValue = -1;
					d.dispose();
				}
			});
			p.add(b);

			op.add(p, BorderLayout.SOUTH);

		}

		else {

			String s = "<html>The friction field you turned on to counterbalance<br>the steering forces will be turned off.</html>";
			op.add(new JLabel(s), BorderLayout.CENTER);

			JPanel p = new JPanel(new FlowLayout(FlowLayout.RIGHT));

			s = MDView.getInternationalText("OKButton");
			JButton b = new JButton(s != null ? s : "OK");
			b.setMnemonic(KeyEvent.VK_O);
			b.setPreferredSize(new Dimension(80, 20));
			b.addActionListener(new ActionListener() {
				public void actionPerformed(ActionEvent e) {
					view.getModel().setFriction(0.0f);
					d.dispose();
				}
			});
			p.add(b);

			op.add(p, BorderLayout.SOUTH);

			d.addWindowListener(new WindowAdapter() {
				public void windowClosing(WindowEvent e) {
					view.getModel().setFriction(0.0f);
					d.dispose();
				}
			});

		}

		d.pack();
		d.setVisible(true);

		return returnedValue;

	}