/* * This file is part of muCommander, http://www.mucommander.com * Copyright (C) 2002-2016 Maxence Bernard * * muCommander is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 3 of the License, or * (at your option) any later version. * * muCommander is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program. If not, see <http://www.gnu.org/licenses/>. */ package com.mucommander.ui.list; import com.mucommander.commons.collections.AlteredVector; import com.mucommander.text.Translator; import com.mucommander.ui.button.ArrowButton; import javax.swing.*; import java.awt.*; /** * SortableListPanel is a JPanel which contains a scrollable {@link DynamicList} in the center and two buttons * 'Move up' and 'Move down' buttons on the right side of the list which allow to move the items up and down and * easily reorder them within the list. * * @author Maxence Bernard */ public class SortableListPanel<E> extends JPanel { private DynamicList<E> dynamicList; /** * Creates a new SortableListPanel with a {@link DynamicList} that uses the provided items {@link AlteredVector}. * * @param items the items Vector used by DynamicList */ public SortableListPanel(AlteredVector<E> items) { super(new BorderLayout()); this.dynamicList = new DynamicList<E>(items); // Allow vertical scrolling in bookmarks list add(new JScrollPane(dynamicList), BorderLayout.CENTER); JPanel buttonPanel = new JPanel(new GridLayout(2, 1)); // Create 'Move item up' button JButton moveButton = new ArrowButton(dynamicList.getMoveUpAction(), ArrowButton.UP_DIRECTION); // Constrain the button's size which by default is huge under Windows/Java 1.5 moveButton.setPreferredSize(new Dimension(19, 0)); // Make the button non focusable so that it doesn't steal focus from the list moveButton.setFocusable(false); moveButton.setToolTipText(Translator.get("sortable_list.move_up")); buttonPanel.add(moveButton); // Create 'Move item down' button moveButton = new ArrowButton(dynamicList.getMoveDownAction(), ArrowButton.DOWN_DIRECTION); // Constrain the button's size which by default is huge under Windows/Java 1.5 moveButton.setPreferredSize(new Dimension(19, 0)); // Make the button non focusable so that it doesn't steal focus from the list moveButton.setFocusable(false); moveButton.setToolTipText(Translator.get("sortable_list.move_down")); buttonPanel.add(moveButton); add(buttonPanel, BorderLayout.EAST); } /** * Returns the {@link DynamicList} used by this SortableListPanel. * * @return the {@link DynamicList} used by this SortableListPanel */ public DynamicList<E> getDynamicList() { return dynamicList; } }