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 Atom
private Atom
(package private) boolean
when TRUE, add H atoms to C when added to the modelSet.(package private) boolean
(package private) String[]
(package private) static final String
private ModelKit.Constraint[]
(package private) String
(package private) int
(package private) boolean
set to true for proximity-based autobonding (prior to 14.32.4/15.2.4 the default was TRUE(package private) static final String
(package private) int
(package private) int
(package private) String
(package private) int
(package private) String
static final String
(package private) int
(package private) javajs.util.BS
(package private) javajs.util.BS
(package private) int
(package private) float
(package private) javajs.util.P3
(package private) boolean
Except for H atoms, do not allow changes to elements just by clicking them.private ModelKit.Constraint
(package private) int
(package private) String
(package private) String
private static int
private static int
private static int
(package private) boolean
(package private) int
(package private) boolean
(package private) boolean
(package private) String
(package private) String
protected ModelSet
(package private) String
(package private) static ModelKit.Constraint
private ModelKitPopup
static final String
(package private) static ModelKit.Constraint
(package private) static final String
(package private) String
(package private) char
private static final javajs.util.P3
(package private) float
(package private) int[]
(package private) int
static final String
(package private) boolean
(package private) 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 int
static final String
(package private) Object
static final String
(package private) javajs.util.P3
private Viewer
(package private) boolean
set to TRUE after rotation has been turned off in order to turn highlight off in viewer.hoverOff()(package private) static final String
(package private) String
-
Constructor Summary
Constructors -
Method Summary
Modifier and TypeMethodDescriptionvoid
actionRotateBond
(int deltaX, int deltaY, int x, int y, boolean forceFull) Actually rotate the bond.private ModelKit.Constraint
addConstraint
(int iatom, ModelKit.Constraint c) private void
void
addLockedAtoms
(javajs.util.BS bs) private void
appRunScript
(String script) private int
assignAtom
(int atomIndex, String type, boolean autoBond, boolean addHsAndBond, boolean isClick, javajs.util.BS bsAtoms) Original ModelKitPopup functionality -- assign an atom.void
assignAtomClick
(int atomIndex, String element, javajs.util.P3 ptNew) 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.private boolean
assignBond
(int bondIndex, char type, javajs.util.BS bsAtoms) Original ModelKit functionality -- assign a bond.int
assignMoveAtom
(int iatom, javajs.util.P3 pt, javajs.util.BS bsFixed) (package private) boolean
void
int
cmdAssignAddAtoms
(String type, javajs.util.P3[] pts, javajs.util.BS bsAtoms, String packing, String cmd, boolean isClick) MODELKIT ADD @3 ...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.void
cmdAssignBond
(int bondIndex, char type, String cmd) void
cmdAssignConnect
(int index, int index2, char type, String cmd) int
cmdAssignDeleteAtoms
(javajs.util.BS bs) Delete all atoms that are equivalent to this atom.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.cmdAssignSpaceGroup
(javajs.util.BS bs, String name, int mi) Assign a given space group, currently only "P1"int
cmdRotateAtoms
(javajs.util.BS bsAtoms, javajs.util.P3[] points, float endDegrees) void
dispose()
(package private) void
exitBondRotation
(String text) 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.for the thin box on the top left of the window(package private) String[]
private String
getBondLabel
(Atom[] atoms) (package private) String
private ModelKit.Constraint
getConstraint
(SymmetryInterface sym, int ia, int mode) This constraint will be set for the site only.(package private) String
private String
getHoverLabel
(int atomIndex) Called by Viewer.hoverOn to set the special label if desired.private Object
getinfo()
(package private) int
private Atom
getOtherAtomIndex
(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) int
boolean
handleAssignNew
(MouseState pressed, MouseState dragged, MeasurementPending mp, int dragAtomIndex) handle a mouse-generated assignNew eventprivate boolean
handleDragAtom
(MouseState pressed, MouseState dragged, int[] countPlusIndices) boolean
hasConstraint
(int iatom, boolean ignoreGeneral, boolean addNew) void
boolean
isHidden()
boolean
private static boolean
(package private) boolean
int
moveConstrained
(int iatom, javajs.util.P3 ptNew, boolean doAssign, boolean allowProjection) This is the main method from viewer.moveSelected.private static void
notImplemented
(String action) private static javajs.util.P3
pointFromTriad
(String pos) private boolean
processAtomClick
(int atomIndex) An atom has been clicked -- handle it.(package private) void
processMKPropertyItem
(String name, boolean TF) private void
processModeClick
(String action) private void
processSelClick
(String action) private String
processSelOpClick
(String action) private void
processSymClick
(String action) (package private) boolean
processSymop
(String id, boolean isFocus) private void
processUCClick
(String action) (package private) void
processXtalClick
(String id, String action) private String
promptUser
(String msg, String def) (package private) void
(package private) void
private String
runScriptBuffered
(String script) private void
setBondIndex
(int index, boolean isRotate) Set the bond for rotation -- called by Sticks.checkObjectHovered via Viewer.highlightBond.setBondMeasure
(int bi, MeasurementPending mp) (package private) void
setDefaultState
(int mode) (package private) boolean
(package private) void
setHoverLabel
(String activeMenu, String text) void
setMenu
(ModelKitPopup menu) (package private) void
setMKState
(int bits) setProperty
(String key, Object value) Modify the state by setting a property.(package private) void
setSymEdit
(int bits) (package private) void
setSymViewState
(int bits) (package private) void
setUnitCell
(int bits) void
showMenu
(int x, int y) private void
private void
Draw the symmetry elementvoid
boolean
-
Field Details
-
locked
-
none
-
vwr
-
MODE_OPTIONS
- See Also:
-
SYMMETRY_OPTIONS
- See Also:
-
UNITCELL_OPTIONS
- See Also:
-
BOOLEAN_OPTIONS
- See Also:
-
SET_OPTIONS
- See Also:
-
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:
-
Pt000
private static final javajs.util.P3 Pt000 -
state
int state -
rotationDeg
float rotationDeg -
atomHoverLabel
String atomHoverLabel -
bondHoverLabel
String bondHoverLabel -
xtalHoverLabel
String xtalHoverLabel -
hasUnitCell
boolean hasUnitCell -
allOperators
String[] allOperators -
currentModelIndex
int currentModelIndex -
alertedNoEdit
boolean alertedNoEdit -
lastModelSet
-
pickAtomAssignType
String pickAtomAssignType -
lastElementType
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 -
wasRotating
boolean wasRotatingset to TRUE after rotation has been turned off in order to turn highlight off in viewer.hoverOff() -
addXtalHydrogens
boolean addXtalHydrogenswhen TRUE, add H atoms to C when added to the modelSet. -
OPTIONS_MODE
- See Also:
-
XTAL_MODE
- See Also:
-
BOND_MODE
- See Also:
-
ATOM_MODE
- See Also:
-
clickToSetElement
boolean clickToSetElementExcept for H atoms, do not allow changes to elements just by clicking them. This protects against doing that inadvertently when editing. -
autoBond
boolean autoBondset 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
Object symop -
centerAtomIndex
int centerAtomIndex -
secondAtomIndex
int secondAtomIndex -
atomIndexSphere
int atomIndexSphere -
drawData
String drawData -
drawScript
String drawScript -
iatom0
int iatom0 -
bondRotationName
String bondRotationName -
lastCenter
String lastCenter -
lastOffset
String lastOffset -
a0
-
a3
-
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
-
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) 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
-
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
-
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
-
-
cmdAssignBond
-
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
-
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- 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()
-