Class ModelKit

java.lang.Object
org.jmol.modelkit.ModelKit

public class ModelKit extends Object
An abstract popup class that is instantiated for a given platform and context as one of:
   -- abstract ModelKitPopup
      -- AwtModelKitPopup
      -- JSModelKitPopup
 
  • Field Details

    • locked

      static ModelKit.Constraint locked
    • none

      static ModelKit.Constraint none
    • vwr

      private Viewer vwr
    • STATE_MOLECULAR

      static final int STATE_MOLECULAR
      See Also:
    • STATE_XTALVIEW

      static final int STATE_XTALVIEW
      See Also:
    • STATE_XTALEDIT

      static final int STATE_XTALEDIT
      See Also:
    • STATE_BITS_XTAL

      static final int STATE_BITS_XTAL
      See Also:
    • STATE_BITS_SYM_VIEW

      static final int STATE_BITS_SYM_VIEW
      See Also:
    • STATE_SYM_NONE

      static final int STATE_SYM_NONE
      See Also:
    • STATE_SYM_SHOW

      static final int STATE_SYM_SHOW
      See Also:
    • STATE_BITS_SYM_EDIT

      static final int STATE_BITS_SYM_EDIT
      See Also:
    • STATE_SYM_APPLYLOCAL

      static final int STATE_SYM_APPLYLOCAL
      See Also:
    • STATE_SYM_RETAINLOCAL

      static final int STATE_SYM_RETAINLOCAL
      See Also:
    • STATE_SYM_APPLYFULL

      static final int STATE_SYM_APPLYFULL
      See Also:
    • STATE_BITS_UNITCELL

      static final int STATE_BITS_UNITCELL
      See Also:
    • STATE_UNITCELL_PACKED

      static final int STATE_UNITCELL_PACKED
      See Also:
    • STATE_UNITCELL_EXTEND

      static final int STATE_UNITCELL_EXTEND
      See Also:
    • OPTIONS_MODE

      static final String OPTIONS_MODE
      See Also:
    • XTAL_MODE

      static final String XTAL_MODE
      See Also:
    • BOND_MODE

      static final String BOND_MODE
      See Also:
    • ATOM_MODE

      static final String ATOM_MODE
      See Also:
    • Pt000

      private static final javajs.util.P3 Pt000
    • state

      int state
    • atomHoverLabel

      private String atomHoverLabel
    • bondHoverLabel

      private String bondHoverLabel
    • allOperators

      private String[] allOperators
    • currentModelIndex

      private int currentModelIndex
    • lastModelSet

      protected ModelSet lastModelSet
    • lastElementType

      private String lastElementType
    • bsHighlight

      private javajs.util.BS bsHighlight
    • bondIndex

      private int bondIndex
    • bondAtomIndex1

      private int bondAtomIndex1
    • bondAtomIndex2

      private int bondAtomIndex2
    • bsRotateBranch

      private javajs.util.BS bsRotateBranch
    • branchAtomIndex

      private int branchAtomIndex
    • screenXY

      private int[] screenXY
      settable property maintained here
    • isPickAtomAssignCharge

      private boolean isPickAtomAssignCharge
    • isRotateBond

      private boolean isRotateBond
      set true when bond rotation is active
    • showSymopInfo

      private boolean showSymopInfo
      a settable property value; not implemented
    • hasUnitCell

      private boolean hasUnitCell
      A value set by the popup menu; questionable design
    • alertedNoEdit

      private boolean alertedNoEdit
      alerting that ModelKit crystal editing mode has not been implemented -- this is no longer necessary.
    • wasRotating

      private boolean wasRotating
      set to TRUE after rotation has been turned off in order to turn highlight off in viewer.hoverOff()
    • addXtalHydrogens

      private boolean addXtalHydrogens
      when TRUE, add H atoms to C when added to the modelSet.
    • clickToSetElement

      private boolean clickToSetElement
      Except for H atoms, do not allow changes to elements just by clicking them. This protects against doing that inadvertently when editing.
    • autoBond

      private boolean autoBond
      set to true for proximity-based autobonding (prior to 14.32.4/15.2.4 the default was TRUE
    • centerPoint

      private javajs.util.P3 centerPoint
    • spherePoint

      private javajs.util.P3 spherePoint
    • pickAtomAssignType

      String pickAtomAssignType
    • pickBondAssignType

      char pickBondAssignType
    • viewOffset

      javajs.util.P3 viewOffset
    • centerDistance

      private double centerDistance
    • symop

      private Object symop
    • centerAtomIndex

      private int centerAtomIndex
    • secondAtomIndex

      private int secondAtomIndex
    • drawData

      private String drawData
    • drawScript

      private String drawScript
    • iatom0

      private int iatom0
    • lastCenter

      private String lastCenter
    • lastOffset

      private String lastOffset
    • a0

      private Atom a0
    • a3

      private Atom a3
    • constraint

      private ModelKit.Constraint constraint
    • xtalHoverLabel

      private String xtalHoverLabel
    • atomIndexSphere

      private int atomIndexSphere
    • atomConstraints

      private ModelKit.Constraint[] atomConstraints
    • GET

      private static int GET
    • GET_CREATE

      private static int GET_CREATE
    • GET_DELETE

      private static int GET_DELETE
  • Constructor Details

    • ModelKit

      public ModelKit()
  • Method Details

    • checkOption

      public boolean checkOption(char type, String value)
    • setMenu

      public void setMenu(ModelKitPopup menu)
    • initializeForModel

      public void initializeForModel()
    • showMenu

      public void showMenu(int x, int y)
    • getDefaultModel

      public String getDefaultModel()
    • updateMenu

      public void updateMenu()
    • dispose

      public void dispose()
    • isPickAtomAssignCharge

      public boolean isPickAtomAssignCharge()
    • isHidden

      public boolean isHidden()
    • getActiveMenu

      public String getActiveMenu()
      for the thin box on the top left of the window
      Returns:
      [ "atomMenu" | "bondMenu" | "xtalMenu" | null ]
    • getRotateBondIndex

      public int getRotateBondIndex()
    • getProperty

      public Object getProperty(String name)
      Get a property of the modelkit.
      Parameters:
      name -
      Returns:
      value
    • setProperty

      public Object setProperty(String key, Object value)
      Modify the state by setting a property. Also can be used for "get" purposes.
      Parameters:
      key -
      value - to set, or null to simply return the current value
      Returns:
      null or "get" value
    • setBondMeasure

      public MeasurementPending setBondMeasure(int bi, MeasurementPending mp)
    • actionRotateBond

      public void actionRotateBond(int deltaX, int deltaY, int x, int y, boolean forceFull)
      Actually rotate the bond.
      Parameters:
      deltaX -
      deltaY -
      x -
      y -
      forceFull -
    • handleAssignNew

      public boolean handleAssignNew(MouseState pressed, MouseState dragged, MeasurementPending mp, int dragAtomIndex, int key)
      handle a mouse-generated assignNew event
      Parameters:
      pressed -
      dragged -
      mp -
      dragAtomIndex -
      key - from a key press
      Returns:
      true if we should do a refresh now
    • keyToElement

      private static String keyToElement(int key)
      Convert key sequence from ActionManager into an element symbol. Element is (char 1) (char 2) or just (char 1)
      Parameters:
      key - (char 2 invalid input: '<'invalid input: '<' 8) + (char 1), all caps
      Returns:
      valid element symbol or null
    • isXtalState

      boolean isXtalState()
    • setMKState

      void setMKState(int bits)
    • getMKState

      int getMKState()
    • setSymEdit

      void setSymEdit(int bits)
    • getSymEditState

      int getSymEditState()
    • setSymViewState

      void setSymViewState(int bits)
    • getSymViewState

      int getSymViewState()
    • setUnitCell

      void setUnitCell(int bits)
    • getUnitCellState

      int getUnitCellState()
    • exitBondRotation

      void exitBondRotation(String text)
    • resetBondFields

      void resetBondFields()
    • processXtalClick

      void processXtalClick(String id, String action)
    • processSymop

      boolean processSymop(String id, boolean isFocus)
    • setDefaultState

      void setDefaultState(int mode)
    • getAllOperators

      String[] getAllOperators()
    • setHasUnitCell

      boolean setHasUnitCell()
    • checkNewModel

      boolean checkNewModel()
    • getSymopText

      String getSymopText()
    • getCenterText

      String getCenterText()
    • resetAtomPickType

      void resetAtomPickType()
    • setHoverLabel

      void setHoverLabel(String mode, String text)
    • getElementFromUser

      String getElementFromUser()
    • processMKPropertyItem

      void processMKPropertyItem(String name, boolean TF)
    • assignAtom

      private int assignAtom(int atomIndex, String type, boolean autoBond, boolean addHsAndBond, boolean isClick, javajs.util.BS bsAtoms)
      Original ModelKitPopup functionality -- assign an atom.
      Parameters:
      atomIndex -
      type -
      autoBond -
      addHsAndBond -
      isClick - whether this is a click or not
      bsAtoms -
      Returns:
      atomicNumber or -1
    • cmdAssignSpaceGroup

      public String cmdAssignSpaceGroup(javajs.util.BS bs, String name, int mi)
      Assign a given space group, currently only "P1"
      Parameters:
      bs - atoms in the set defining the space group
      name - "P1" or "1" or ignored
      mi -
      Returns:
      new name or "" or error message
    • cmdAssignDeleteAtoms

      public int cmdAssignDeleteAtoms(javajs.util.BS bs)
      Delete all atoms that are equivalent to this atom.
      Parameters:
      bs -
      Returns:
      number of deleted atoms
    • setBondIndex

      private void setBondIndex(int index, boolean isRotate)
      Set the bond for rotation -- called by Sticks.checkObjectHovered via Viewer.highlightBond.
      Parameters:
      index -
      isRotate -
    • handleDragAtom

      private boolean handleDragAtom(MouseState pressed, MouseState dragged, int[] countPlusIndices)
      Parameters:
      pressed -
      dragged -
      countPlusIndices -
      Returns:
      true if handled here
    • showSymop

      private void showSymop(Object symop)
    • showXtalSymmetry

      private void showXtalSymmetry()
      Draw the symmetry element
    • getinfo

      private Object getinfo()
    • addInfo

      private void addInfo(Map<String,Object> info, String key, Object value)
    • processAtomClick

      private boolean processAtomClick(int atomIndex)
      An atom has been clicked -- handle it. Called from CmdExt.assignAtom from the script created in ActionManager.assignNew from Actionmanager.checkReleaseAction
      Parameters:
      atomIndex -
      Returns:
      true if handled
    • processModeClick

      private void processModeClick(String action)
    • processSelClick

      private void processSelClick(String action)
    • processSelOpClick

      private String processSelOpClick(String action)
    • processSymClick

      private void processSymClick(String action)
    • processUCClick

      private void processUCClick(String action)
    • getHoverLabel

      private String getHoverLabel(int atomIndex)
      Called by Viewer.hoverOn to set the special label if desired.
      Parameters:
      atomIndex -
      Returns:
      special label or null
    • setBranchAtom

      private void setBranchAtom(int atomIndex, boolean isClick)
      Parameters:
      atomIndex -
      isClick -
    • getBondLabel

      private String getBondLabel(Atom[] atoms)
    • getOtherAtomIndex

      private Atom getOtherAtomIndex(Atom a1, Atom a2)
    • promptUser

      private String promptUser(String msg, String def)
    • appRunScript

      private void appRunScript(String script)
    • runScriptBuffered

      private String runScriptBuffered(String script)
    • isTrue

      private static boolean isTrue(Object value)
    • pointFromTriad

      private static javajs.util.P3 pointFromTriad(String pos)
    • notImplemented

      private static void notImplemented(String action)
    • cmdAssignAtom

      public void cmdAssignAtom(int atomIndex, javajs.util.P3 pt, String type, String cmd, boolean isClick)
      A versatile method that allows changing element, setting charge, setting position, adding or deleting an atom by clicking or dragging or via the MODELKIT ASSIGN ATOM command.
      Parameters:
      atomIndex - may be -1
      pt - a Cartesian position for a new atom or when moving an atom to a new position
      type - one of: an element symbol, "X" (delete), "Mi" (decrement charge), "Pl" (increment charge), "." (from connect; just adding hydrogens)
      cmd - reference command given; may be null
      isClick - if this is a user-generated click event
    • assignAtoms

      private void assignAtoms(javajs.util.P3 pt, boolean newPoint, int atomIndex, String type, String cmd, boolean isClick, javajs.util.BS bs, int atomicNo, int site, SymmetryInterface uc, javajs.util.Lst<javajs.util.P3> points, String packing)
      Change element, charge, and deleting an atom by clicking on it or via the MODELKIT ASSIGN ATOM command. null n bs ASSIGN ATOM @1 "N" pt -1 null ASSIGN ATOM "N" {x,y,z} pt -1 bs ADD ATOM @1 "N" {x,y,z}
      Parameters:
      pt -
      newPoint -
      atomIndex -
      type -
      cmd -
      isClick -
      bs -
      atomicNo -
      site -
      uc - a SymmetryInterface or null
      points -
      packing -
    • connectAtoms

      private void connectAtoms(float bd, int bondOrder, javajs.util.BS bs1, javajs.util.BS bs2)
    • cmdAssignBond

      public void cmdAssignBond(int bondIndex, char type, String cmd)
    • assignBondAndType

      public void assignBondAndType(int bondIndex, int bondOrder, char type, String cmd)
    • assignBond

      private boolean assignBond(int bondIndex, int bondOrder, javajs.util.BS bsAtoms)
      Original ModelKit functionality -- assign a bond.
      Parameters:
      bondIndex -
      bondOrder -
      bsAtoms -
      Returns:
      bit set of atoms to modify
    • getBondOrder

      private int getBondOrder(char type, Bond bond)
    • cmdAssignConnect

      public void cmdAssignConnect(int index, int index2, char type, String cmd)
    • assignConnect

      private void assignConnect(javajs.util.BS bs, int modelIndex, float[][] connections, char type, String cmd)
    • assignAtomClick

      public void assignAtomClick(int atomIndex, String element, javajs.util.P3 ptNew)
    • cmdAssignAddAtoms

      public int cmdAssignAddAtoms(String type, javajs.util.P3[] pts, javajs.util.BS bsAtoms, String packing, String cmd, boolean isClick)
      MODELKIT ADD @3 ...
      Parameters:
      type -
      pts - one or more new points
      bsAtoms - the atoms to process, presumably from different sites
      packing - "packed" or ""
      cmd - the command generating this call
      isClick -
      Returns:
      the number of atoms added
    • cmdAssignMoveAtoms

      public int cmdAssignMoveAtoms(javajs.util.BS bsSelected, int iatom, javajs.util.P3 p, boolean allowProjection)
      Move all atoms that are equivalent to this atom PROVIDED that they have the same symmetry-invariant properties.
      Parameters:
      bsSelected - could be a single atom or a molecule
      iatom - atom index
      p - new position for this atom, which may be modified
      allowProjection - always true here
      Returns:
      number of atoms moved
    • assignMoveAtom

      public int assignMoveAtom(int iatom, javajs.util.P3 pt, javajs.util.BS bsFixed)
    • fillPointsForMove

      private boolean fillPointsForMove(SymmetryInterface sg, javajs.util.BS bseq, int i0, javajs.util.P3 a, javajs.util.P3 pt, javajs.util.P3[] points)
      Find the operator that transforms fractional point fa to one of its symmetry-equivalent points, and then also transform pt by that same matrix. Optionally, save the transformed points in a compact array.
      Parameters:
      sg -
      bseq -
      i0 -
      a -
      pt -
      points -
      Returns:
      false if there is a failure to find a transform
    • clearAtomConstraints

      public void clearAtomConstraints()
    • hasConstraint

      public boolean hasConstraint(int iatom, boolean ignoreGeneral, boolean addNew)
    • moveConstrained

      public int moveConstrained(int iatom, javajs.util.P3 ptNew, boolean doAssign, boolean allowProjection)
      This is the main method from viewer.moveSelected.
      Parameters:
      iatom -
      ptNew -
      doAssign - allow for exit with setting ptNew but not creating atoms
      allowProjection -
      Returns:
      number of atoms moved
    • getConstraint

      private ModelKit.Constraint getConstraint(SymmetryInterface sym, int ia, int mode)
      This constraint will be set for the site only.
      Parameters:
      sym -
      ia -
      mode - GET, GET_CREATE, or GET_DELETE
      Returns:
      a Constraint, or possibly null if not createNew
    • addConstraint

      private ModelKit.Constraint addConstraint(int iatom, ModelKit.Constraint c)
    • addLockedAtoms

      public void addLockedAtoms(javajs.util.BS bs)
    • cmdRotateAtoms

      public int cmdRotateAtoms(javajs.util.BS bsAtoms, javajs.util.P3[] points, float endDegrees)
    • getText

      static String getText(String key)
    • wasRotating

      public boolean wasRotating()