Package org.jmol.modelkit
Class ModelKit
java.lang.Object
org.jmol.modelkit.ModelKit
An abstract popup class that is instantiated for a given platform and context
as one of:
-- abstract ModelKitPopup
-- AwtModelKitPopup
-- JSModelKitPopup
-
Nested Class Summary
Nested Classes -
Field Summary
FieldsModifier and TypeFieldDescriptionprivate Atomprivate Atomprivate booleanwhen TRUE, add H atoms to C when added to the modelSet.private booleanalerting that ModelKit crystal editing mode has not been implemented -- this is no longer necessary.private String[](package private) static final Stringprivate ModelKit.Constraint[]private Stringprivate intprivate booleanset to true for proximity-based autobonding (prior to 14.32.4/15.2.4 the default was TRUE(package private) static final Stringprivate intprivate intprivate Stringprivate intprivate intprivate javajs.util.BSprivate javajs.util.BSprivate intprivate doubleprivate javajs.util.P3private booleanExcept for H atoms, do not allow changes to elements just by clicking them.private ModelKit.Constraintprivate intprivate Stringprivate Stringprivate static intprivate static intprivate static intprivate booleanA value set by the popup menu; questionable designprivate intprivate booleanprivate booleanset true when bond rotation is activeprivate Stringprivate Stringprotected ModelSetprivate String(package private) static ModelKit.Constraintprivate ModelKitPopup(package private) static ModelKit.Constraint(package private) static final String(package private) String(package private) charprivate static final javajs.util.P3private int[]settable property maintained hereprivate intprivate booleana settable property value; not implementedprivate javajs.util.P3(package private) int(package private) static final int(package private) static final int(package private) static final int(package private) static final int(package private) static final int(package private) static final int(package private) static final int(package private) static final int(package private) static final int(package private) static final int(package private) static final int(package private) static final int(package private) static final int(package private) static final intprivate Object(package private) javajs.util.P3private Viewerprivate booleanset to TRUE after rotation has been turned off in order to turn highlight off in viewer.hoverOff()(package private) static final Stringprivate String -
Constructor Summary
Constructors -
Method Summary
Modifier and TypeMethodDescriptionvoidactionRotateBond(int deltaX, int deltaY, int x, int y, boolean forceFull) Actually rotate the bond.private ModelKit.ConstraintaddConstraint(int iatom, ModelKit.Constraint c) private voidvoidaddLockedAtoms(javajs.util.BS bs) private voidappRunScript(String script) private intassignAtom(int atomIndex, String type, boolean autoBond, boolean addHsAndBond, boolean isClick, javajs.util.BS bsAtoms) Original ModelKitPopup functionality -- assign an atom.voidassignAtomClick(int atomIndex, String element, javajs.util.P3 ptNew) private voidassignAtoms(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.private booleanassignBond(int bondIndex, int bondOrder, javajs.util.BS bsAtoms) Original ModelKit functionality -- assign a bond.voidassignBondAndType(int bondIndex, int bondOrder, char type, String cmd) private voidassignConnect(javajs.util.BS bs, int modelIndex, float[][] connections, char type, String cmd) intassignMoveAtom(int iatom, javajs.util.P3 pt, javajs.util.BS bsFixed) (package private) booleanbooleancheckOption(char type, String value) voidintcmdAssignAddAtoms(String type, javajs.util.P3[] pts, javajs.util.BS bsAtoms, String packing, String cmd, boolean isClick) MODELKIT ADD @3 ...voidcmdAssignAtom(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.voidcmdAssignBond(int bondIndex, char type, String cmd) voidcmdAssignConnect(int index, int index2, char type, String cmd) intcmdAssignDeleteAtoms(javajs.util.BS bs) Delete all atoms that are equivalent to this atom.intcmdAssignMoveAtoms(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.cmdAssignSpaceGroup(javajs.util.BS bs, String name, int mi) Assign a given space group, currently only "P1"intcmdRotateAtoms(javajs.util.BS bsAtoms, javajs.util.P3[] points, float endDegrees) private voidconnectAtoms(float bd, int bondOrder, javajs.util.BS bs1, javajs.util.BS bs2) voiddispose()(package private) voidexitBondRotation(String text) private booleanfillPointsForMove(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.for the thin box on the top left of the window(package private) String[]private StringgetBondLabel(Atom[] atoms) private intgetBondOrder(char type, Bond bond) (package private) Stringprivate ModelKit.ConstraintgetConstraint(SymmetryInterface sym, int ia, int mode) This constraint will be set for the site only.(package private) Stringprivate StringgetHoverLabel(int atomIndex) Called by Viewer.hoverOn to set the special label if desired.private Objectgetinfo()(package private) intprivate AtomgetOtherAtomIndex(Atom a1, Atom a2) getProperty(String name) Get a property of the modelkit.int(package private) int(package private) String(package private) int(package private) static String(package private) intbooleanhandleAssignNew(MouseState pressed, MouseState dragged, MeasurementPending mp, int dragAtomIndex, int key) handle a mouse-generated assignNew eventprivate booleanhandleDragAtom(MouseState pressed, MouseState dragged, int[] countPlusIndices) booleanhasConstraint(int iatom, boolean ignoreGeneral, boolean addNew) voidbooleanisHidden()booleanprivate static boolean(package private) booleanprivate static StringkeyToElement(int key) Convert key sequence from ActionManager into an element symbol.intmoveConstrained(int iatom, javajs.util.P3 ptNew, boolean doAssign, boolean allowProjection) This is the main method from viewer.moveSelected.private static voidnotImplemented(String action) private static javajs.util.P3pointFromTriad(String pos) private booleanprocessAtomClick(int atomIndex) An atom has been clicked -- handle it.(package private) voidprocessMKPropertyItem(String name, boolean TF) private voidprocessModeClick(String action) private voidprocessSelClick(String action) private StringprocessSelOpClick(String action) private voidprocessSymClick(String action) (package private) booleanprocessSymop(String id, boolean isFocus) private voidprocessUCClick(String action) (package private) voidprocessXtalClick(String id, String action) private StringpromptUser(String msg, String def) (package private) void(package private) voidprivate StringrunScriptBuffered(String script) private voidsetBondIndex(int index, boolean isRotate) Set the bond for rotation -- called by Sticks.checkObjectHovered via Viewer.highlightBond.setBondMeasure(int bi, MeasurementPending mp) private voidsetBranchAtom(int atomIndex, boolean isClick) (package private) voidsetDefaultState(int mode) (package private) boolean(package private) voidsetHoverLabel(String mode, String text) voidsetMenu(ModelKitPopup menu) (package private) voidsetMKState(int bits) setProperty(String key, Object value) Modify the state by setting a property.(package private) voidsetSymEdit(int bits) (package private) voidsetSymViewState(int bits) (package private) voidsetUnitCell(int bits) voidshowMenu(int x, int y) private voidprivate voidDraw the symmetry elementvoidboolean
-
Field Details
-
locked
-
none
-
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
- See Also:
-
XTAL_MODE
- See Also:
-
BOND_MODE
- See Also:
-
ATOM_MODE
- See Also:
-
Pt000
private static final javajs.util.P3 Pt000 -
state
int state -
atomHoverLabel
-
bondHoverLabel
-
allOperators
-
currentModelIndex
private int currentModelIndex -
lastModelSet
-
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[] screenXYsettable property maintained here -
isPickAtomAssignCharge
private boolean isPickAtomAssignCharge -
isRotateBond
private boolean isRotateBondset true when bond rotation is active -
showSymopInfo
private boolean showSymopInfoa settable property value; not implemented -
hasUnitCell
private boolean hasUnitCellA value set by the popup menu; questionable design -
alertedNoEdit
private boolean alertedNoEditalerting that ModelKit crystal editing mode has not been implemented -- this is no longer necessary. -
wasRotating
private boolean wasRotatingset to TRUE after rotation has been turned off in order to turn highlight off in viewer.hoverOff() -
addXtalHydrogens
private boolean addXtalHydrogenswhen TRUE, add H atoms to C when added to the modelSet. -
clickToSetElement
private boolean clickToSetElementExcept for H atoms, do not allow changes to elements just by clicking them. This protects against doing that inadvertently when editing. -
autoBond
private boolean autoBondset 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
-
centerAtomIndex
private int centerAtomIndex -
secondAtomIndex
private int secondAtomIndex -
drawData
-
drawScript
-
iatom0
private int iatom0 -
lastCenter
-
lastOffset
-
a0
-
a3
-
constraint
-
xtalHoverLabel
-
atomIndexSphere
private int atomIndexSphere -
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
-
setMenu
-
initializeForModel
public void initializeForModel() -
showMenu
public void showMenu(int x, int y) -
getDefaultModel
-
updateMenu
public void updateMenu() -
dispose
public void dispose() -
isPickAtomAssignCharge
public boolean isPickAtomAssignCharge() -
isHidden
public boolean isHidden() -
getActiveMenu
for the thin box on the top left of the window- Returns:
- [ "atomMenu" | "bondMenu" | "xtalMenu" | null ]
-
getRotateBondIndex
public int getRotateBondIndex() -
getProperty
Get a property of the modelkit.- Parameters:
name-- Returns:
- value
-
setProperty
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
-
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
Convert key sequence from ActionManager into an element symbol. Element is (char 1) (char 2) or just (char 1)- Parameters:
key- (char 2 << 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
-
resetBondFields
void resetBondFields() -
processXtalClick
-
processSymop
-
setDefaultState
void setDefaultState(int mode) -
getAllOperators
String[] getAllOperators() -
setHasUnitCell
boolean setHasUnitCell() -
checkNewModel
boolean checkNewModel() -
getSymopText
String getSymopText() -
getCenterText
String getCenterText() -
resetAtomPickType
void resetAtomPickType() -
setHoverLabel
-
getElementFromUser
String getElementFromUser() -
processMKPropertyItem
-
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 notbsAtoms-- Returns:
- atomicNumber or -1
-
cmdAssignSpaceGroup
Assign a given space group, currently only "P1"- Parameters:
bs- atoms in the set defining the space groupname- "P1" or "1" or ignoredmi-- 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
- Parameters:
pressed-dragged-countPlusIndices-- Returns:
- true if handled here
-
showSymop
-
showXtalSymmetry
private void showXtalSymmetry()Draw the symmetry element -
getinfo
-
addInfo
-
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
-
processSelClick
-
processSelOpClick
-
processSymClick
-
processUCClick
-
getHoverLabel
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
-
getOtherAtomIndex
-
promptUser
-
appRunScript
-
runScriptBuffered
-
isTrue
-
pointFromTriad
-
notImplemented
-
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 -1pt- a Cartesian position for a new atom or when moving an atom to a new positiontype- one of: an element symbol, "X" (delete), "Mi" (decrement charge), "Pl" (increment charge), "." (from connect; just adding hydrogens)cmd- reference command given; may be nullisClick- 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 nullpoints-packing-
-
connectAtoms
private void connectAtoms(float bd, int bondOrder, javajs.util.BS bs1, javajs.util.BS bs2) -
cmdAssignBond
-
assignBondAndType
-
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
-
cmdAssignConnect
-
assignConnect
private void assignConnect(javajs.util.BS bs, int modelIndex, float[][] connections, char type, String cmd) -
assignAtomClick
-
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 pointsbsAtoms- the atoms to process, presumably from different sitespacking- "packed" or ""cmd- the command generating this callisClick-- 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 moleculeiatom- atom indexp- new position for this atom, which may be modifiedallowProjection- 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 atomsallowProjection-- Returns:
- number of atoms moved
-
getConstraint
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
-
addLockedAtoms
public void addLockedAtoms(javajs.util.BS bs) -
cmdRotateAtoms
public int cmdRotateAtoms(javajs.util.BS bsAtoms, javajs.util.P3[] points, float endDegrees) -
getText
-
wasRotating
public boolean wasRotating()
-