package gitj.ui; import java.awt.BorderLayout; import java.awt.Color; import java.awt.Component; import java.util.ArrayList; import java.util.List; import javax.swing.BoxLayout; import javax.swing.JPanel; import javax.swing.border.EmptyBorder; import git.Repository; @SuppressWarnings("serial") public class BookmarksPanel extends JPanel { private List<BookmarkPanel> panels = new ArrayList<BookmarkPanel>(); private MainFrame mainFrame; public BookmarksPanel(MainFrame mainFrame) { this.mainFrame = mainFrame; super.setBorder(new EmptyBorder(0, 0, 0, 0)); setLayout(new BoxLayout(this, BoxLayout.PAGE_AXIS)); setBackground(Color.white); } public MainFrame getParentFrame() { return mainFrame; } public void addBookmarkPanel(BookmarkPanel panel) { panel.setAlignmentY(Component.TOP_ALIGNMENT); panel.setAlignmentX(Component.LEFT_ALIGNMENT); add(panel, BorderLayout.NORTH); if (!panels.contains(panel)) { panels.add(panel); } } public void removeBookmarkPanel(BookmarkPanel panel) { panels.remove(panel); remove(panel); repaint(); } public BookmarkPanel getFromRepo(Repository repo) { for (BookmarkPanel panel : panels) { if (panel.getRepository().equals(repo)) { return panel; } } return null; } public List<BookmarkPanel> getPanels() { return panels; } /** * Tries to reload bookmark panel if it exists for a repo * @param repo */ public void reload(Repository repo) { BookmarkPanel panel = getFromRepo(repo); if (panel != null) { panel.reload(); } } public List<String> getBookmarks() { List<String> paths = new ArrayList<String>(); for (BookmarkPanel panel : panels) { paths.add(panel.getRepository().getFolder().getAbsolutePath()); } return paths; } }