📄 attributes.java
字号:
if (high.isHighlightEOBJ()) { if (eobj instanceof ArcInst) { selectedArc = (ArcInst)eobj; selectedObject = selectedArc; currentButton = currentArc; } else if (eobj instanceof NodeInst) { selectedNode = (NodeInst)eobj; selectedObject = selectedNode; currentButton = currentNode; } else if (eobj instanceof PortInst) { PortInst pi = (PortInst)eobj; selectedNode = pi.getNodeInst(); selectedObject = selectedNode; currentButton = currentNode; selectedPort = pi; } } else if (high.isHighlightText()) { selectedVarKey = high.getVarKey(); if (selectedVarKey != null) { if (eobj instanceof NodeInst) { selectedNode = (NodeInst)eobj; selectedObject = selectedNode; currentButton = currentNode; } else if (eobj instanceof ArcInst) { selectedArc = (ArcInst)eobj; selectedObject = selectedArc; currentButton = currentArc; } else if (eobj instanceof PortInst) { selectedPort = (PortInst)eobj; selectedObject = selectedPort; currentButton = currentPort; selectedNode = selectedPort.getNodeInst(); } else if (eobj instanceof Export) { selectedExport = (Export)eobj; selectedObject = selectedExport; currentButton = currentExport; } } else if (high.getVarKey() == NodeInst.NODE_NAME || high.getVarKey() == NodeInst.NODE_PROTO) { // node name selectedNode = (NodeInst)eobj; selectedObject = selectedNode; currentButton = currentNode; } else if (high.getVarKey() == ArcInst.ARC_NAME) { // arc name selectedArc = (ArcInst)eobj; selectedObject = selectedArc; currentButton = currentArc; } else if (high.getVarKey() == Export.EXPORT_NAME) { selectedExport = (Export)eobj; selectedObject = selectedExport; currentButton = currentExport; } } } } } // show initial values in the dialog if (selectedCell == null) { // nothing can be done: dim the entire dialog currentCell.setEnabled(false); cellName.setText("NO CURRENT CELL"); currentNode.setEnabled(false); currentArc.setEnabled(false); currentExport.setEnabled(false); currentPort.setEnabled(false); list.clearSelection(); listModel.clear(); name.setText(""); name.setEditable(false); value.setText(""); value.setEditable(false); evaluation.setText(""); deleteButton.setEnabled(false); newButton.setEnabled(false); renameButton.setEnabled(false); textPanel.setTextDescriptor(null, null); attrPanel.setVariable(null, null); loading = false; return; } // enable the dialog currentCell.setEnabled(true); currentNode.setEnabled(selectedNode != null); currentArc.setEnabled(selectedArc != null); currentExport.setEnabled(selectedExport != null); currentPort.setEnabled(selectedPort != null); currentButton.setSelected(true); cellName.setText(selectedCell.describe(false)); name.setEditable(true); value.setEditable(true); // show all attributes on the selected object updateList(); if (selectedVarKey != null) showSelectedAttribute(selectedVarKey); else checkName(); loading = false; } private void checkName() { // if name does not equal name of selected var, disable update button String varName = name.getText().trim(); // can't create new variable of empty, no vars can be empty text if (varName.equals("")) { newButton.setEnabled(false); deleteButton.setEnabled(false); renameButton.setEnabled(false); textPanel.setTextDescriptor(null, null); attrPanel.setVariable(null, null); return; } if (showParamsOnly) varName = "ATTR_" + varName; // try to find variable Variable.Key varKey = Variable.newKey(varName); if (selectedObject.getParameterOrVariable(varKey) != null) { // make sure var is selected if (varKey != null) list.setSelectedValue(varKey, true); } else { // no such var, remove selection and enable new buttons newButton.setEnabled(true); renameButton.setEnabled(false); deleteButton.setEnabled(false); list.clearSelection(); textPanel.setTextDescriptor(varKey, selectedObject); attrPanel.setVariable(varKey, selectedObject); } } /** * Updates List of attributes on selected object */ private void updateList() { list.clearSelection(); listModel.clear(); // show the parameters Set<Variable.Key> seen = new HashSet<Variable.Key>(); Iterator<Variable> it = null; if (selectedObject instanceof Cell) { Cell cell = (Cell)selectedObject; it = cell.getParameters(); } if (selectedObject instanceof NodeInst) { NodeInst ni = (NodeInst)selectedObject; it = ni.getParameters(); } if (it != null) { List<Variable.Key> params = new ArrayList<Variable.Key>(); for( ; it.hasNext(); ) { Variable var = it.next(); params.add(var.getKey()); } if (params.size() > 0) { if (!showParamsOnly) listModel.addElement("------------ PARAMETERS ------------"); for(Variable.Key key : params) { listModel.addElement(key); seen.add(key); } } } // show variables if requested if (!showParamsOnly) { List<Variable.Key> variables = new ArrayList<Variable.Key>(); for(Iterator<Variable> vIt = selectedObject.getVariables(); vIt.hasNext(); ) { Variable var = vIt.next(); if (seen.contains(var.getKey())) continue; variables.add(var.getKey()); } if (variables.size() > 0) { listModel.addElement("------------ VARIABLES ------------"); for(Variable.Key key : variables) listModel.addElement(key); } } } /** * Method to return the Variable that is selected in the dialog. * @return the Variable that is selected. Returns null if none are. */ Variable getSelectedVariable() { int i = list.getSelectedIndex(); if (i < 0) return null; Object selectedObj = list.getSelectedValue(); if (selectedObj instanceof Variable.Key) { Variable.Key key = (Variable.Key)selectedObj; return selectedObject.getParameterOrVariable(key); } return null; } /** * Method to convert a string to a proper Object for storage in a Variable. * Currently knows only Integer, Double, and String. * @param text the text describing the Variable's value. * @return an Object that contains the value. */ private Object getVariableObject(String text) { if (TextUtils.isANumber(text)) { int i = TextUtils.atoi(text); double d = TextUtils.atof(text); if (i == d) return new Integer(i); return new Double(d); } return text; } /** * Method to display the aspects of the currently selected Variable in the dialog. * @param selectThisKey if non-null, select this variable first, and then update dialog. */ void showSelectedAttribute(Variable.Key selectThisKey) { if (selectThisKey != null) list.setSelectedValue(selectThisKey, true); Variable var = getSelectedVariable(); if (var == null) { renameButton.setEnabled(false); deleteButton.setEnabled(false); return; } selectedVarKey = var.getKey(); // set the Name field boolean oldLoading = loading; loading = true; initialName = getVariableText(var.getKey()); String pt = initialName; name.setText(pt); // get initial the Value field initialValue = var.getPureValue(-1); // set the Value field String oldValue = value.getText(); if (!oldValue.equals(initialValue)) value.setText(initialValue); if (var.getObject() instanceof Object []) { value.setEditable(false); } else { value.setEditable(true); } loading = oldLoading; // set the evaluation field if (var.isCode()) { Object eval = VarContext.globalContext.evalVar(var); if (eval == null) evaluation.setText(""); else evaluation.setText(eval.toString()); } else { evaluation.setText(""); } // set the text info panel if (var.isDisplay()) textPanel.setTextDescriptor(var.getKey(), selectedObject); else textPanel.setTextDescriptor(null, null); attrPanel.setVariable(var.getKey(), selectedObject); // enable buttons newButton.setEnabled(false); renameButton.setEnabled(true); deleteButton.setEnabled(true); } /** * Class to delete an attribute in a new thread. */ private static class DeleteAttribute extends Job { private Variable var; private ElectricObject owner; private DeleteAttribute(Variable var, ElectricObject owner) { super("Delete Attribute", User.getUserTool(), Job.Type.CHANGE, null, null, Job.Priority.USER); this.var = var; this.owner = owner; startJob(); } public boolean doIt() throws JobException { if (var == null) return false; Variable.Key varKey = var.getKey(); if (owner.isParam(varKey)) { if (owner instanceof Cell) ((Cell)owner).getCellGroup().delParam((Variable.AttrKey)varKey); else if (owner instanceof NodeInst) ((NodeInst)owner).delParameter(varKey); } else { owner.delVar(varKey); } return true; } } private static class CreateAttribute extends Job { private ElectricObject owner; private Variable newVar; private boolean addToInstances; private transient Attributes dialog; private CreateAttribute(String newName, Object newValue, ElectricObject owner, Attributes dialog, boolean addToInstances, TextDescriptor useThis) {
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -