/*
* Copyright (C) 2014 GG-Net GmbH - Oliver Günther
*
* This program 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.
*
* This program 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 eu.ggnet.dwoss.redtape.renderer;
import java.awt.Color;
import java.awt.Component;
import javax.swing.DefaultListCellRenderer;
import javax.swing.JLabel;
import javax.swing.JList;
import javax.swing.border.EtchedBorder;
import eu.ggnet.dwoss.redtape.entity.Document;
import eu.ggnet.dwoss.redtape.format.DocumentFormater;
import eu.ggnet.dwoss.rules.DocumentType;
/**
*
* @author pascal.perau
*/
public class DocumentStringRenderer extends DefaultListCellRenderer {
public DocumentStringRenderer() {
}
@Override
public Component getListCellRendererComponent(JList<?> list, Object value, int index, boolean isSelected, boolean cellHasFocus) {
JLabel label = (JLabel)super.getListCellRendererComponent(list, value, index, isSelected, cellHasFocus);
setBorder(new EtchedBorder(1, new Color(204, 204, 255), Color.BLACK));
Document doc = ((Document)value);
switch(doc.getType()){
case ORDER:
label.setText(!doc.getDossier().getActiveDocuments(DocumentType.INVOICE).isEmpty()
? "<html>" + DocumentFormater.toHtmlSimple(((Document)value)) + "</html>"
: "<html>" + DocumentFormater.toHtmlDetailed(((Document)value)) + "</html>");
break;
case COMPLAINT:
label.setText(!doc.getDossier().getActiveDocuments(DocumentType.CREDIT_MEMO).isEmpty()
|| !doc.getDossier().getActiveDocuments(DocumentType.ANNULATION_INVOICE).isEmpty()
? "<html>" + DocumentFormater.toHtmlSimple(((Document)value)) + "</html>"
: "<html>" + DocumentFormater.toHtmlDetailed(((Document)value)) + "</html>");
break;
case INVOICE:
case BLOCK:
case CREDIT_MEMO:
case RETURNS:
case ANNULATION_INVOICE:
case CAPITAL_ASSET:
label.setText("<html>" + DocumentFormater.toHtmlDetailed(((Document)value)) + "</html>");
}
if ( !isSelected ) {
if ( ((Document)value).getFlags().contains(Document.Flag.CUSTOMER_EXACTLY_BRIEFED) ) {
label.setBackground(Color.GREEN);
label.setForeground(Color.BLACK);
} else if ( ((Document)value).getFlags().contains(Document.Flag.CUSTOMER_BRIEFED) ) {
label.setBackground(Color.YELLOW);
label.setForeground(Color.BLACK);
} else {
label.setBackground(Color.white);
label.setForeground(Color.BLACK);
}
}
return label;
}
}