Class ModelKit


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

      • SYMMETRY_OPTIONS

        public static final java.lang.String SYMMETRY_OPTIONS
        See Also:
        Constant Field Values
      • UNITCELL_OPTIONS

        public static final java.lang.String UNITCELL_OPTIONS
        See Also:
        Constant Field Values
      • Pt000

        private static final javajs.util.P3 Pt000
      • state

        int state
      • rotationDeg

        float rotationDeg
      • atomHoverLabel

        java.lang.String atomHoverLabel
      • bondHoverLabel

        java.lang.String bondHoverLabel
      • xtalHoverLabel

        java.lang.String xtalHoverLabel
      • hasUnitCell

        boolean hasUnitCell
      • allOperators

        java.lang.String[] allOperators
      • currentModelIndex

        int currentModelIndex
      • alertedNoEdit

        boolean alertedNoEdit
      • lastModelSet

        protected ModelSet lastModelSet
      • pickAtomAssignType

        java.lang.String pickAtomAssignType
      • lastElementType

        java.lang.String lastElementType
      • pickBondAssignType

        char pickBondAssignType
      • isPickAtomAssignCharge

        boolean isPickAtomAssignCharge
      • bsHighlight

        javajs.util.BS bsHighlight
      • bondIndex

        int bondIndex
      • bondAtomIndex1

        int bondAtomIndex1
      • bondAtomIndex2

        int bondAtomIndex2
      • bsRotateBranch

        javajs.util.BS bsRotateBranch
      • branchAtomIndex

        int branchAtomIndex
      • isRotateBond

        boolean isRotateBond
      • screenXY

        int[] screenXY
      • showSymopInfo

        boolean showSymopInfo
      • addXtalHydrogens

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

        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

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

        javajs.util.P3 centerPoint
      • spherePoint

        javajs.util.P3 spherePoint
      • viewOffset

        javajs.util.P3 viewOffset
      • centerDistance

        float centerDistance
      • symop

        java.lang.Object symop
      • centerAtomIndex

        int centerAtomIndex
      • secondAtomIndex

        int secondAtomIndex
      • atomIndexSphere

        int atomIndexSphere
      • drawData

        java.lang.String drawData
      • drawScript

        java.lang.String drawScript
      • iatom0

        int iatom0
      • bondRotationName

        java.lang.String bondRotationName
      • lastCenter

        java.lang.String lastCenter
      • lastOffset

        java.lang.String lastOffset
      • a0

        private Atom a0
      • a3

        private Atom a3
      • GET

        private static int GET
      • GET_CREATE

        private static int GET_CREATE
      • GET_DELETE

        private static int GET_DELETE
    • Constructor Detail

      • ModelKit

        public ModelKit()
    • Method Detail

      • initializeForModel

        public void initializeForModel()
      • showMenu

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

        public java.lang.String getDefaultModel()
      • updateMenu

        public void updateMenu()
      • dispose

        public void dispose()
      • isPickAtomAssignCharge

        public boolean isPickAtomAssignCharge()
      • isHidden

        public boolean isHidden()
      • getActiveMenu

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

        public int getRotateBondIndex()
      • getProperty

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

        public java.lang.Object setProperty​(java.lang.String key,
                                            java.lang.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
      • 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)
        handle a mouse-generated assignNew event
        Parameters:
        pressed -
        dragged -
        mp -
        dragAtomIndex -
        Returns:
        true if we should do a refresh now
      • 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​(java.lang.String text)
      • resetBondFields

        void resetBondFields()
      • processXtalClick

        void processXtalClick​(java.lang.String id,
                              java.lang.String action)
      • processSymop

        boolean processSymop​(java.lang.String id,
                             boolean isFocus)
      • setDefaultState

        void setDefaultState​(int mode)
      • getAllOperators

        java.lang.String[] getAllOperators()
      • setHasUnitCell

        boolean setHasUnitCell()
      • checkNewModel

        boolean checkNewModel()
      • getSymopText

        java.lang.String getSymopText()
      • getCenterText

        java.lang.String getCenterText()
      • resetAtomPickType

        void resetAtomPickType()
      • setHoverLabel

        void setHoverLabel​(java.lang.String activeMenu,
                           java.lang.String text)
      • getElementFromUser

        java.lang.String getElementFromUser()
      • processMKPropertyItem

        void processMKPropertyItem​(java.lang.String name,
                                   boolean TF)
      • assignAtom

        private int assignAtom​(int atomIndex,
                               java.lang.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 java.lang.String cmdAssignSpaceGroup​(javajs.util.BS bs,
                                                    java.lang.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​(java.lang.Object symop)
      • showXtalSymmetry

        private void showXtalSymmetry()
        Draw the symmetry element
      • getinfo

        private java.lang.Object getinfo()
      • addInfo

        private void addInfo​(java.util.Map<java.lang.String,​java.lang.Object> info,
                             java.lang.String key,
                             java.lang.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​(java.lang.String action)
      • processSelClick

        private void processSelClick​(java.lang.String action)
      • processSelOpClick

        private java.lang.String processSelOpClick​(java.lang.String action)
      • processSymClick

        private void processSymClick​(java.lang.String action)
      • processUCClick

        private void processUCClick​(java.lang.String action)
      • getHoverLabel

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

        private java.lang.String getBondLabel​(Atom[] atoms)
      • getOtherAtomIndex

        private Atom getOtherAtomIndex​(Atom a1,
                                       Atom a2)
      • isVwrRotateBond

        private boolean isVwrRotateBond()
      • promptUser

        private java.lang.String promptUser​(java.lang.String msg,
                                            java.lang.String def)
      • appRunScript

        private void appRunScript​(java.lang.String script)
      • runScriptBuffered

        private java.lang.String runScriptBuffered​(java.lang.String script)
      • isTrue

        private static boolean isTrue​(java.lang.Object value)
      • pointFromTriad

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

        private static void notImplemented​(java.lang.String action)
      • cmdAssignAtom

        public void cmdAssignAtom​(int atomIndex,
                                  javajs.util.P3 pt,
                                  java.lang.String type,
                                  java.lang.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,
                                 java.lang.String type,
                                 java.lang.String cmd,
                                 boolean isClick,
                                 javajs.util.BS bs,
                                 int atomicNo,
                                 int site,
                                 SymmetryInterface uc,
                                 javajs.util.Lst<javajs.util.P3> points,
                                 java.lang.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 -
      • cmdAssignBond

        public void cmdAssignBond​(int bondIndex,
                                  char type,
                                  java.lang.String cmd)
      • assignBond

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

        public void cmdAssignConnect​(int index,
                                     int index2,
                                     char type,
                                     java.lang.String cmd)
      • assignAtomClick

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

        public int cmdAssignAddAtoms​(java.lang.String type,
                                     javajs.util.P3[] pts,
                                     javajs.util.BS bsAtoms,
                                     java.lang.String packing,
                                     java.lang.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
        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
      • addLockedAtoms

        public void addLockedAtoms​(javajs.util.BS bs)