From 9effe1630d97039b3e01cd9b58ed07e75be1d63c Mon Sep 17 00:00:00 2001
From: James Moger <james.moger@gitblit.com>
Date: Mon, 25 Feb 2013 08:40:30 -0500
Subject: [PATCH] Merge pull request #75 from thefake/master

---
 src/com/gitblit/client/JPalette.java |   52 ++++++++++++++++++++++++++++++++++++++++++++++++----
 1 files changed, 48 insertions(+), 4 deletions(-)

diff --git a/src/com/gitblit/client/JPalette.java b/src/com/gitblit/client/JPalette.java
index eb445b4..a0c2b25 100644
--- a/src/com/gitblit/client/JPalette.java
+++ b/src/com/gitblit/client/JPalette.java
@@ -38,8 +38,16 @@
 	private static final long serialVersionUID = 1L;
 	private PaletteModel<T> availableModel;
 	private PaletteModel<T> selectedModel;
+	private JButton add;
+	private JButton subtract;
+	private JButton up;
+	private JButton down;
 
 	public JPalette() {
+		this(false);
+	}
+
+	public JPalette(boolean controlOrder) {
 		super(new BorderLayout(5, 5));
 
 		availableModel = new PaletteModel<T>();
@@ -48,7 +56,7 @@
 		final JTable available = new JTable(availableModel);
 		final JTable selected = new JTable(selectedModel);
 
-		JButton add = new JButton("->");
+		add = new JButton("->");
 		add.addActionListener(new ActionListener() {
 			public void actionPerformed(ActionEvent event) {
 				List<T> move = new ArrayList<T>();
@@ -66,7 +74,7 @@
 				selectedModel.fireTableDataChanged();
 			}
 		});
-		JButton subtract = new JButton("<-");
+		subtract = new JButton("<-");
 		subtract.addActionListener(new ActionListener() {
 			public void actionPerformed(ActionEvent event) {
 				List<T> move = new ArrayList<T>();
@@ -86,9 +94,37 @@
 			}
 		});
 
+		up = new JButton("\u2191");
+		up.addActionListener(new ActionListener() {
+			public void actionPerformed(ActionEvent event) {
+				int row = selected.getSelectedRow();
+				if (row > 0) {
+					T o = selectedModel.list.remove(row);
+					selectedModel.list.add(row - 1, o);
+					selectedModel.fireTableDataChanged();
+				}
+			}
+		});
+
+		down = new JButton("\u2193");
+		down.addActionListener(new ActionListener() {
+			public void actionPerformed(ActionEvent event) {
+				int row = selected.getSelectedRow();
+				if (row < selected.getRowCount() - 1) {
+					T o = selectedModel.list.remove(row);
+					selectedModel.list.add(row + 1, o);
+					selectedModel.fireTableDataChanged();
+				}
+			}
+		});
+
 		JPanel controls = new JPanel(new GridLayout(0, 1, 0, 5));
 		controls.add(add);
 		controls.add(subtract);
+		if (controlOrder) {
+			controls.add(up);
+			controls.add(down);
+		}
 
 		JPanel center = new JPanel(new GridBagLayout());
 		center.add(controls);
@@ -102,14 +138,13 @@
 		NameRenderer nameRenderer = new NameRenderer();
 		table.setCellSelectionEnabled(false);
 		table.setRowSelectionAllowed(true);
-		table.setRowHeight(nameRenderer.getFont().getSize() + 8);
 		table.getTableHeader().setReorderingAllowed(false);
 		table.setGridColor(new Color(0xd9d9d9));
 		table.setBackground(Color.white);
 		table.getColumn(table.getColumnName(0)).setCellRenderer(nameRenderer);
 
 		JScrollPane jsp = new JScrollPane(table);
-		jsp.setPreferredSize(new Dimension(225, 175));
+		jsp.setPreferredSize(new Dimension(225, 160));
 		JPanel panel = new JPanel(new BorderLayout());
 		JLabel jlabel = new JLabel(label);
 		jlabel.setFont(jlabel.getFont().deriveFont(Font.BOLD));
@@ -117,6 +152,15 @@
 		panel.add(jsp, BorderLayout.CENTER);
 		return panel;
 	}
+	
+	@Override
+	public void setEnabled(boolean enabled) {
+		super.setEnabled(enabled);
+		add.setEnabled(enabled);
+		subtract.setEnabled(enabled);
+		up.setEnabled(enabled);
+		down.setEnabled(enabled);
+	}
 
 	public void setObjects(List<T> all, List<T> selected) {
 		List<T> available = new ArrayList<T>(all);

--
Gitblit v1.9.1