/* | |
* Copyright 2011 gitblit.com. | |
* | |
* Licensed under the Apache License, Version 2.0 (the "License"); | |
* you may not use this file except in compliance with the License. | |
* You may obtain a copy of the License at | |
* | |
* http://www.apache.org/licenses/LICENSE-2.0 | |
* | |
* Unless required by applicable law or agreed to in writing, software | |
* distributed under the License is distributed on an "AS IS" BASIS, | |
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. | |
* See the License for the specific language governing permissions and | |
* limitations under the License. | |
*/ | |
package com.gitblit.client; | |
import java.awt.Color; | |
import java.awt.Component; | |
import javax.swing.JList; | |
import javax.swing.JTable; | |
import javax.swing.ListCellRenderer; | |
import javax.swing.table.DefaultTableCellRenderer; | |
/** | |
* Branch renderer displays refs/heads and refs/remotes in a color similar to | |
* the site. | |
* | |
* @author James Moger | |
* | |
*/ | |
public class BranchRenderer extends DefaultTableCellRenderer implements ListCellRenderer { | |
private static final long serialVersionUID = 1L; | |
private static final String R_HEADS = "refs/heads/"; | |
private static final String R_REMOTES = "refs/remotes/"; | |
private static final String R_CHANGES = "refs/changes/"; | |
@Override | |
public Component getTableCellRendererComponent(JTable table, Object value, boolean isSelected, | |
boolean hasFocus, int row, int column) { | |
super.getTableCellRendererComponent(table, value, isSelected, hasFocus, row, column); | |
setText(value == null ? "" : value.toString()); | |
if (isSelected) { | |
setForeground(table.getSelectionForeground()); | |
} | |
return this; | |
} | |
@Override | |
public Component getListCellRendererComponent(JList list, Object value, int index, | |
boolean isSelected, boolean cellHasFocus) { | |
setText(value == null ? "" : value.toString()); | |
if (isSelected) { | |
setBackground(list.getSelectionBackground()); | |
setForeground(list.getSelectionForeground()); | |
} else { | |
setBackground(list.getBackground()); | |
} | |
return this; | |
} | |
@Override | |
public void setText(String text) { | |
String name = text; | |
Color fg = getForeground(); | |
if (name.startsWith(R_HEADS)) { | |
name = name.substring(R_HEADS.length()); | |
fg = new Color(0, 0x80, 0); | |
} else if (name.startsWith(R_REMOTES)) { | |
name = name.substring(R_REMOTES.length()); | |
fg = Color.decode("#6C6CBF"); | |
} else if (name.startsWith(R_CHANGES)) { | |
name = name.substring(R_CHANGES.length()); | |
fg = Color.decode("#B0E0F0"); | |
} | |
setForeground(fg); | |
super.setText(name); | |
} | |
} |