private void createActions() {

		// open action
		opener = new StructureReader();
		opener.setMolecularViewer(this);
		jmol.getInputMap().put((KeyStroke) opener.getValue(Action.ACCELERATOR_KEY), "open");
		jmol.getActionMap().put("open", opener);

		// reset action
		Action a = new AbstractAction() {
			public void actionPerformed(ActionEvent e) {
				jmol.home();
			}

			public String toString() {
				return (String) getValue(SHORT_DESCRIPTION);
			}
		};
		a.putValue(Action.NAME, "Reset Position");
		a.putValue(Action.SHORT_DESCRIPTION, "Reset to starting position");
		a.putValue(Action.MNEMONIC_KEY, new Integer(KeyEvent.VK_R));
		a.putValue(Action.SMALL_ICON, IconPool.getIcon("house"));
		jmol.getActionMap().put("reset", a);

		// spin action
		a = new AbstractAction() {
			public void actionPerformed(ActionEvent e) {
				setSpinOn(!getSpinOn());
				notifyChange();
			}

			public String toString() {
				return (String) getValue(SHORT_DESCRIPTION);
			}
		};
		a.putValue(Action.NAME, "Spin");
		a.putValue(Action.SHORT_DESCRIPTION, "Spin the structure");
		a.putValue("state", getSpinOn() ? Boolean.TRUE : Boolean.FALSE);
		jmol.getActionMap().put("spin", a);

		// boundbox action
		a = new AbstractAction() {
			public void actionPerformed(ActionEvent e) {
				setBoundBoxShown(((AbstractButton) e.getSource()).isSelected());
				notifyChange();
			}

			public String toString() {
				return (String) getValue(SHORT_DESCRIPTION);
			}
		};
		a.putValue(Action.NAME, "Show Boundbox");
		a.putValue(Action.SHORT_DESCRIPTION, "Show boundbox");
		a.putValue(Action.MNEMONIC_KEY, new Integer(KeyEvent.VK_B));
		a.putValue("state", isBoundBoxShown() ? Boolean.TRUE : Boolean.FALSE);
		jmol.getActionMap().put("bound box", a);

		// axis action
		a = new AbstractAction() {
			public void actionPerformed(ActionEvent e) {
				setAxesShown(((AbstractButton) e.getSource()).isSelected());
				notifyChange();
			}

			public String toString() {
				return (String) getValue(SHORT_DESCRIPTION);
			}
		};
		a.putValue(Action.NAME, "Show Axes");
		a.putValue(Action.SHORT_DESCRIPTION, "Show axes");
		a.putValue(Action.MNEMONIC_KEY, new Integer(KeyEvent.VK_X));
		a.putValue("state", areAxesShown() ? Boolean.TRUE : Boolean.FALSE);
		jmol.getActionMap().put("axes", a);

		// hover action
		a = new AbstractAction() {
			public void actionPerformed(ActionEvent e) {
				setHoverEnabled(((AbstractButton) e.getSource()).isSelected());
				notifyChange();
			}

			public String toString() {
				return (String) getValue(SHORT_DESCRIPTION);
			}
		};
		a.putValue(Action.NAME, "Enable Hover Text");
		a.putValue(Action.SHORT_DESCRIPTION, "Enable hover text over atoms");
		a.putValue("state", isHoverEnabled() ? Boolean.TRUE : Boolean.FALSE);
		jmol.getActionMap().put("hover", a);

		// show selection action
		a = new AbstractAction() {
			public void actionPerformed(ActionEvent e) {
				AbstractButton ab = (AbstractButton) e.getSource();
				boolean b = ab.isSelected();
				setSelectionHaloEnabled(b);
				jmol.repaint();
			}

			public String toString() {
				return (String) getValue(SHORT_DESCRIPTION);
			}
		};
		a.putValue(Action.NAME, "Show Selection");
		a.putValue(Action.SHORT_DESCRIPTION, "Show selection");
		a.putValue(Action.MNEMONIC_KEY, new Integer(KeyEvent.VK_S));
		a.putValue(Action.SMALL_ICON, new ImageIcon(JmolContainer.class.getResource("resources/showselection.gif")));
		a.putValue("state", isSelectionHaloEnabled() ? Boolean.TRUE : Boolean.FALSE);
		jmol.getActionMap().put("show selection", a);

		// show hydrogen bonds action
		a = new AbstractAction() {
			public void actionPerformed(ActionEvent e) {
				setHydrogenBondsShown(((AbstractButton) e.getSource()).isSelected());
				notifyChange();
			}

			public String toString() {
				return (String) getValue(SHORT_DESCRIPTION);
			}
		};
		a.putValue(Action.NAME, "Show Hydrogen Bonds");
		a.putValue(Action.SHORT_DESCRIPTION, "Show hydrogen bonds");
		a.putValue(Action.MNEMONIC_KEY, new Integer(KeyEvent.VK_H));
		a.putValue("state", areHydrogenBondsShown() ? Boolean.TRUE : Boolean.FALSE);
		jmol.getActionMap().put("show hbonds", a);

		// show disulfide bonds action
		a = new AbstractAction() {
			public void actionPerformed(ActionEvent e) {
				setSSBondsShown(((AbstractButton) e.getSource()).isSelected());
				notifyChange();
			}

			public String toString() {
				return (String) getValue(SHORT_DESCRIPTION);
			}
		};
		a.putValue(Action.NAME, "Show Disulfide Bonds");
		a.putValue(Action.SHORT_DESCRIPTION, "Show disulfide bonds");
		a.putValue(Action.MNEMONIC_KEY, new Integer(KeyEvent.VK_S));
		a.putValue("state", areSSBondsShown() ? Boolean.TRUE : Boolean.FALSE);
		jmol.getActionMap().put("show ssbonds", a);

	}