private void initialise() { // presetManager.sort(); presetCombo = new JComboBox(); for (Preset<T> p : presetManager.list()) { presetCombo.addItem(p); } presetCombo.addActionListener( new ActionListener() { @Override public void actionPerformed(ActionEvent e) { Preset<T> p = (Preset<T>) presetCombo.getSelectedItem(); if (p == null) { return; } if (p.isBuiltIn()) { updatePresetButton.setEnabled(false); updatePresetButton.setToolTipText("Cannot make changes to a built-in preset"); } else { updatePresetButton.setEnabled(true); updatePresetButton.setToolTipText( "Save these settings to the currently selected preset"); } T settings = p.getSettings(); guiMapper.applySettingsToControls(settings); } }); JButton manageButton = new JButton("Manage..."); manageButton.addActionListener( new ActionListener() { @Override public void actionPerformed(ActionEvent e) { boolean haveCustomPresets = false; for (Preset<T> p : presetManager.list()) { if (!p.isBuiltIn()) { haveCustomPresets = true; break; } } if (haveCustomPresets) { managePresets(); } else { JOptionPane.showMessageDialog( PresetManagerPanel.this, "There are no custom presets to manage."); } } }); updatePresetButton = new JButton("Update"); updatePresetButton.addActionListener( new ActionListener() { @Override public void actionPerformed(ActionEvent e) { Preset<T> selected = (Preset<T>) presetCombo.getSelectedItem(); presetManager.update(selected, guiMapper.getSettingsFromControls()); } }); JButton saveAsButton = new JButton("Save as..."); saveAsButton.addActionListener( new ActionListener() { @Override public void actionPerformed(ActionEvent e) { createPreset(); } }); JPanel buttonsPanel = new JPanel(new FlowLayout(FlowLayout.RIGHT)); buttonsPanel.add(updatePresetButton); buttonsPanel.add(saveAsButton); buttonsPanel.add(manageButton); setBorder(BorderFactory.createTitledBorder("Presets")); setLayout( new BorderLayout(SizeHelper.getCompactLayoutHGap(), SizeHelper.getCompactLayoutVGap())); add(presetCombo, BorderLayout.CENTER); add(buttonsPanel, BorderLayout.SOUTH); }