@Override public void actionPerformed(ActionEvent ae) { String cmd = ae.getActionCommand(); if (cmd.equals("New Symmetry Analysis")) SymmetryGui.getInstance(); if (symm == null) logger.error("Currently not displaying a symmetry!"); try { if (cmd.equals("Repeats Superposition")) { MultipleAlignmentJmol j = SymmetryDisplay.displayRepeats(symm); String s = SymmetryDisplay.printSymmetryAxes(symm); j.evalString(s); } else if (cmd.equals("Multiple Structure Alignment")) { MultipleAlignmentJmol j = SymmetryDisplay.displayFull(symm); String s = SymmetryDisplay.printSymmetryAxes(symm); j.evalString(s); } else if (cmd.equals("Optimal Self Alignment")) { Atom[] cloned = StructureTools.cloneAtomArray(symm.getAtoms()); AbstractAlignmentJmol jmol = StructureAlignmentDisplay.display(symm.getSelfAlignment(), symm.getAtoms(), cloned); RotationAxis axis = new RotationAxis(symm.getSelfAlignment()); jmol.evalString(axis.getJmolScript(symm.getAtoms())); jmol.setTitle(SymmetryDisplay.getSymmTitle(symm)); } else if (cmd.equals("Show Symmetry Group")) { String script = SymmetryDisplay.printSymmetryGroup(symm); jmol.evalString(script); } else if (cmd.equals("Show Symmetry Axes")) { String s = SymmetryDisplay.printSymmetryAxes(symm); jmol.evalString(s); } } catch (Exception e) { logger.error("Could not complete display option", e); } }