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
private boolean
when TRUE, add H atoms to C when added to the modelSet.private boolean
alerting that ModelKit crystal editing mode has not been implemented -- this is no longer necessary.private String[]
(package private) static final String
private ModelKit.Constraint[]
private String
private int
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
private int
private int
private String
private int
private int
private javajs.util.BS
private javajs.util.BS
private int
private double
private javajs.util.P3
private boolean
Except for H atoms, do not allow changes to elements just by clicking them.private ModelKit.Constraint
private int
private String
private String
private static int
private static int
private static int
private boolean
A value set by the popup menu; questionable designprivate int
private boolean
private boolean
set true when bond rotation is activeprivate String
private String
protected ModelSet
private String
(package private) static ModelKit.Constraint
private ModelKitPopup
(package private) static ModelKit.Constraint
(package private) static final String
(package private) String
(package private) char
private static final javajs.util.P3
private int[]
settable property maintained hereprivate int
private boolean
a 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 int
private Object
(package private) javajs.util.P3
private Viewer
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
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, int bondOrder, javajs.util.BS bsAtoms) Original ModelKit functionality -- assign a bond.void
assignBondAndType
(int bondIndex, int bondOrder, char type, String cmd) private void
assignConnect
(javajs.util.BS bs, int modelIndex, float[][] connections, char type, String cmd) int
assignMoveAtom
(int iatom, javajs.util.P3 pt, javajs.util.BS bsFixed) (package private) boolean
boolean
checkOption
(char type, String value) 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) private void
connectAtoms
(float bd, int bondOrder, javajs.util.BS bs1, javajs.util.BS bs2) 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) private int
getBondOrder
(char type, Bond bond) (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, int key) 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
private static String
keyToElement
(int key) Convert key sequence from ActionManager into an element symbol.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) private void
setBranchAtom
(int atomIndex, boolean isClick) (package private) void
setDefaultState
(int mode) (package private) boolean
(package private) void
setHoverLabel
(String mode, 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
-
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()
-