}
private void updateEditor() {
this.paramPanel.removeAll();
Parameters params = this.instruction.getParameters();
if (params == null) {
throw new RuntimeException("Instruction " + this.instruction.getClass().getName() + " fails the instruction contract by returning null on a call to getParameters()");
}
this.choosers.clear();
for (int i = 0; i < params.getCount(); i++) {
switch (params.getType(i)) {
case TYPE_LOCAL_VARIABLE_WIDE:
case TYPE_LOCAL_VARIABLE: {
LocalVariableChooser chooser = new LocalVariableChooser();
this.choosers.add(chooser);
LocalVariable lv = null;
if (lvTable != null) {
chooser.setLocalVariable(this.lvTable);
lv = lvTable.getLocalVariable(params.getInt(i), this.position);
}
if (lv != null) {
chooser.setSelected(lv);
} else {
chooser.setSelected(String.valueOf(params.getInt(i)));
}
chooser.setEditable(true);
addToPanel(this.paramPanel, chooser, i);
break;
}
case TYPE_LOCAL_VARIABLE_READONLY: {
LocalVariableChooser chooser = new LocalVariableChooser();
this.choosers.add(chooser);
if (this.lvTable != null) {
chooser.setLocalVariable(this.lvTable);
LocalVariable lv = this.lvTable.getLocalVariable(params.getInt(i), this.position);
if (lv != null) {
chooser.setSelected(lv);
} else {
chooser.setSelected(String.valueOf(params.getInt(i)));
}
}
chooser.setEditable(false);
chooser.setReadOnly();
addToPanel(this.paramPanel, chooser, i);
break;
}
case TYPE_CONSTANT_WIDE:
case TYPE_CONSTANT: {
ConstantChooser chooser = new ConstantChooser();
this.choosers.add(chooser);
chooser.setValue(params.getInt(i));
addToPanel(this.paramPanel, chooser, i);
break;
}
case TYPE_CONSTANT_POOL_METHOD_REF: {
MethodChooser chooser = new MethodChooser(this);
this.choosers.add(chooser);
chooser.setClassFile(this.cf);
chooser.setConstantPool(this.pool);
if (!insertMode) {
chooser.setSelected(this.pool.get(params.getInt(i)));
}
chooser.setEditable(false);
addToPanel(this.paramPanel, chooser, i);
break;
}
case TYPE_CONSTANT_POOL_FIELD_REF: {
FieldChooser chooser = new FieldChooser(this);
this.choosers.add(chooser);
chooser.setClassFile(this.cf);
chooser.setConstantPool(this.pool);
if (!insertMode) {
chooser.setSelected(this.pool.get(params.getInt(i)));
}
chooser.setEditable(false);
addToPanel(this.paramPanel, chooser, i);
break;
}
case TYPE_CONSTANT_POOL_CLASS: {
ClassChooser chooser = new ClassChooser(this);
this.choosers.add(chooser);
chooser.setClassFile(this.cf);
chooser.setConstantPool(this.pool);
if (!insertMode) {
chooser.setSelected(this.pool.get(params.getInt(i)));
}
chooser.setEditable(false);
addToPanel(this.paramPanel, chooser, i);
break;
}
case TYPE_ARRAYTYPE: {
ArrayTypeChooser chooser = new ArrayTypeChooser();
this.choosers.add(chooser);
if (!insertMode) {
chooser.setSelected(params.getInt(i));
}
chooser.setEditable(false);
addToPanel(this.paramPanel, chooser, i);
break;
}
case TYPE_CONSTANT_POOL_CONSTANT: {
ConstantpoolConstantChooser chooser = new ConstantpoolConstantChooser();
this.choosers.add(chooser);
chooser.setConstantPool(this.pool);
if (!insertMode) {
chooser.setSelected(this.pool.get(params.getInt(i)));
}
chooser.setEditable(false);
addToPanel(this.paramPanel, chooser, i);
break;
}