20 package net.sf.gridarta.gui.panel.archetypechooser;
22 import java.awt.BorderLayout;
23 import java.awt.event.ActionEvent;
24 import java.awt.event.ActionListener;
25 import java.util.ArrayList;
26 import java.util.Comparator;
27 import java.util.List;
28 import javax.swing.DefaultListModel;
29 import javax.swing.JComboBox;
30 import javax.swing.JList;
31 import javax.swing.JPanel;
32 import javax.swing.JPopupMenu;
33 import javax.swing.JScrollPane;
34 import javax.swing.JViewport;
35 import javax.swing.ListSelectionModel;
36 import javax.swing.event.ListSelectionEvent;
37 import javax.swing.event.ListSelectionListener;
49 import net.
sf.japi.swing.action.ActionBuilder;
50 import net.
sf.japi.swing.action.ActionBuilderFactory;
51 import net.
sf.japi.swing.action.ActionMethod;
52 import org.jetbrains.annotations.NotNull;
53 import org.jetbrains.annotations.Nullable;
71 private static final ActionBuilder
ACTION_BUILDER = ActionBuilderFactory.getInstance().getActionBuilder(
"net.sf.gridarta");
115 private final JComboBox<ArchetypeChooserFolder<G, A, R>>
folders =
new JComboBox<>();
144 super(
new BorderLayout());
148 archetypeList.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);
149 final JScrollPane scrollPane =
new JScrollPane(
archetypeList);
150 add(scrollPane, BorderLayout.CENTER);
151 add(
folders, BorderLayout.NORTH);
152 scrollPane.setAutoscrolls(
true);
153 scrollPane.getViewport().setScrollMode(JViewport.SIMPLE_SCROLL_MODE);
167 public void selectedArchetypeChanged(@Nullable
final R selectedArchetype) {
171 public void directionChanged(@Nullable
final Integer direction) {
180 archetypeChooserModel.addArchetypeChooserModelListener(archetypeChooserModelListener);
187 folders.setSelectedItem(selectedFolder);
192 public void selectedArchetypeChanged(@Nullable
final R selectedArchetype) {
198 archetypeList.addListSelectionListener(
new ListSelectionListener() {
201 public void valueChanged(@NotNull
final ListSelectionEvent e) {
204 if (folder !=
null) {
219 folders.addActionListener(
new ActionListener() {
222 public void actionPerformed(@NotNull
final ActionEvent e) {
224 if (folder !=
null) {
275 return selectedFolder;
288 if (folder !=
null) {
289 final List<R> archetypes =
new ArrayList<>(folder.
getArchetypes());
291 for (
final R archetype : archetypes) {
296 if (oldSelectedArchetype !=
null && folder.
containsArchetype(oldSelectedArchetype)) {
322 final JPopupMenu menu =
new JPopupMenu();
341 for (
int index = 1; index < archetypeChooserFolders.size(); index++) {
344 folders.setSelectedIndex(index);