public DecompileToolbar()

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);
                }
            }
        });
    }