/*
* To change this template, choose Tools | Templates
* and open the template in the editor.
*/
package clips.report.panels.utils;
import beans.report.SelectedIdList;
import cli_fmw.delegate.directory.DirectoryItemRecursive;
import cli_fmw.delegate.directory.DirectoryRecursive;
import clips.delegate.directory.complex.DirectoryMKB10;
import clips.delegate.directory.complex.DirectoryMKB10Item;
import cli_fmw.utils.MessageBox;
import cli_fmw.main.ClipsException;
import clips.report.panels.utils.DirectorySellectUtil;
import java.awt.Color;
import java.awt.Component;
import javax.swing.ImageIcon;
import javax.swing.JLabel;
import javax.swing.JTree;
import javax.swing.tree.DefaultMutableTreeNode;
import javax.swing.tree.DefaultTreeCellRenderer;
/**
*
* @author finder
*/
public class TreeSellectCellRenderer extends DefaultTreeCellRenderer {
private static final long serialVersionUID = 1L;
public static final ImageIcon ICON_SEL_THIS = new ImageIcon(TreeSellectCellRenderer.class.getResource("/resources/icons/selected_all.png"));
public static final ImageIcon ICON_SEL_CHILDREN = new ImageIcon(TreeSellectCellRenderer.class.getResource("/resources/icons/selected_some.png"));
public static final ImageIcon ICON_SEL_NOTHING = new ImageIcon(TreeSellectCellRenderer.class.getResource("/resources/icons/selected_nothing.png"));
public static final ImageIcon ICON_SEL_EXCLUDED = new ImageIcon(TreeSellectCellRenderer.class.getResource("/resources/icons/selected_excluded.png"));
private Color normal;
private Color excludeded = new Color(1f, 0f, 0f);
private Color subItemExluded = new Color(0.7f, 0f, 0f);
private SelectedIdList list;
private DirectoryRecursive dir;// = (DirectoryMKB10) DirectoryLocator.getDirectory(DirectoryMKB10.class, false);
private DirectorySellectUtil utils;
public TreeSellectCellRenderer(DirectoryRecursive dir) {
this.dir = dir;
utils = new DirectorySellectUtil(this.dir);
normal = getForeground();
}
boolean hericalFind(DirectoryItemRecursive item, int id) throws ClipsException{
DirectoryItemRecursive cur = dir.getItemFromID(id);
while (cur != null){
if (cur.getID() == item.getID()) {
return true;
}
cur = cur.getParent();
}
return false;
}
@Override
public Component getTreeCellRendererComponent(JTree tree, Object value, boolean selected, boolean expanded, boolean leaf, int row, boolean hasFocus) {
JLabel render = (JLabel) super.getTreeCellRendererComponent(tree, value, selected, expanded, false, row, hasFocus);
if (value instanceof DefaultMutableTreeNode){
render.setIcon(null);
render.setDisabledIcon(null);
return render;
}
render.setDisabledIcon(ICON_SEL_NOTHING);
if (!(value instanceof DirectoryMKB10Item)) {
throw new IllegalArgumentException("Значение должно быть значением справачника MKB10");
}
if (list == null){
render.setIcon(ICON_SEL_NOTHING);
return render;
}
try {
DirectoryMKB10Item item = (DirectoryMKB10Item) value;
DirectorySellectUtil.SelectionType type = utils.getSelectType(list, item);
if (type.canceled == DirectorySellectUtil.ContainType.isAreSelected){
render.setForeground(excludeded);
render.setIcon(ICON_SEL_EXCLUDED);
return render;
}
else if (type.canceled == DirectorySellectUtil.ContainType.childrenSelected){
render.setForeground(subItemExluded);
}
else{
render.setForeground(normal);
}
switch (type.selected){
case isAreSelected:
render.setIcon(ICON_SEL_THIS);
break;
case childrenSelected:
render.setIcon(ICON_SEL_CHILDREN);
break;
default:
render.setIcon(ICON_SEL_NOTHING);
break;
}
return render;
} catch (ClipsException ex) {
MessageBox.showException(ex);
render.setIcon(null);
render.setText("<Error>");
return render;
}
}
public SelectedIdList getObject() {
return list;
}
public void setObject(SelectedIdList line) {
this.list = line;
}
}