in extra/java.debugjavac/src/main/java/org/netbeans/modules/java/debugjavac/DecompileToolbar.java [52:147]
public DecompileToolbar(final FileObject decompiled, final FileObject originalSource) {
initComponents();
DefaultComboBoxModel<CompilerDescription> compilerModel = new DefaultComboBoxModel<>();
Collection<? extends CompilerDescription> compilerDescriptions = CompilerDescription.Factory.descriptions();
for (CompilerDescription cd : compilerDescriptions) {
compilerModel.addElement(cd);
}
compiler.setModel(compilerModel);
compiler.setRenderer(new DefaultListCellRenderer() {
@Override public Component getListCellRendererComponent(JList<?> list, Object value, int index, boolean isSelected, boolean cellHasFocus) {
if (value instanceof CompilerDescription) {
CompilerDescription compilerDescription = (CompilerDescription) value;
value = compilerDescription.getName() + (compilerDescription.isValid() ? "" : " - unusable");
}
return super.getListCellRendererComponent(list, value, index, isSelected, cellHasFocus);
}
});
compiler.addActionListener(new ActionListener() {
@Override public void actionPerformed(ActionEvent e) {
try {
decompiled.setAttribute(CompilerDescription.class.getName(), compiler.getSelectedItem());
} catch (IOException ex) {
Exceptions.printStackTrace(ex);
}
}
});
DefaultComboBoxModel<DecompilerDescription> decompilerModel = new DefaultComboBoxModel<>();
List<DecompilerDescription> decompilers = new ArrayList<>();
if (compilerDescriptions.size() > 0) {
compiler.setSelectedIndex(0);
for (DecompilerDescription decompiler : DecompilerDescription.getDecompilers()) {
decompilerModel.addElement(decompiler);
decompilers.add(decompiler);
}
}
decompiler.setModel(decompilerModel);
decompiler.setRenderer(new DefaultListCellRenderer() {
@Override public Component getListCellRendererComponent(JList<?> list, Object value, int index, boolean isSelected, boolean cellHasFocus) {
if (value instanceof DecompilerDescription) value = ((DecompilerDescription) value).displayName;
return super.getListCellRendererComponent(list, value, index, isSelected, cellHasFocus);
}
});
decompiler.addActionListener(new ActionListener() {
@Override public void actionPerformed(ActionEvent e) {
try {
decompiled.setAttribute(DecompilerDescription.class.getName(), ((DecompilerDescription) decompiler.getSelectedItem()).id);
} catch (IOException ex) {
Exceptions.printStackTrace(ex);
}
}
});
decompiler.setSelectedIndex(0);
extraOptions.setModel(createModel());
Object extraParams = originalSource.getAttribute(DecompiledTab.PROP_EXTRA_PARAMS);
if (extraParams instanceof String) {
try {
extraOptions.setSelectedItem(extraParams);
decompiled.setAttribute(DecompiledTab.PROP_EXTRA_PARAMS, extraParams);
} catch (IOException ex) {
Exceptions.printStackTrace(ex);
}
}
extraOptions.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
try {
String selected = (String) extraOptions.getSelectedItem();
masterModel.removeElement(selected);
masterModel.insertElementAt(selected, 0);
while (masterModel.getSize() > HISTORY_LIMIT) {
masterModel.removeElementAt(masterModel.getSize() - 1);
}
storeMasterData();
extraOptions.getModel().setSelectedItem(selected); //the above changes the selection
decompiled.setAttribute(DecompiledTab.PROP_EXTRA_PARAMS, selected);
originalSource.setAttribute(DecompiledTab.PROP_EXTRA_PARAMS, selected);
} catch (IOException ex) {
Exceptions.printStackTrace(ex);
}
}
});
}