Project

General

Profile

1
package eu.dnetlib.functionality.modular.ui.workflows.sarasvati.icons;
2

    
3
import java.awt.BasicStroke;
4
import java.awt.Color;
5
import java.awt.Graphics2D;
6

    
7
import com.googlecode.sarasvati.Node;
8
import com.googlecode.sarasvati.visual.common.NodeDrawConfig;
9
import com.googlecode.sarasvati.visual.util.FontUtil;
10

    
11
import eu.dnetlib.msro.workflows.nodes.NodeStatus;
12

    
13

    
14
public class WorkflowIcon extends AbstractIcon {
15

    
16
	private NodeStatus status = NodeStatus.DISABLED;
17
	
18
	public WorkflowIcon(final Node node) {
19
		super(node);
20
		redrawImage();
21
	}
22
	
23
	@Override
24
	public void redrawImage(final Graphics2D gfx) {
25
		super.resetGfx(gfx);
26
		
27
		switch (status) {
28
		case CONFIGURED:
29
			gfx.setColor(Color.decode("#336699"));
30
			break;
31
		case NOT_CONFIGURED:
32
			gfx.setColor(Color.decode("#bb0000"));
33
			break;
34
		default:
35
			gfx.setColor(Color.decode("#aabbcc"));
36
			break;
37
		}
38
		
39
		gfx.fillRoundRect(0, 0, WIDTH - 1, HEIGHT - 1, ROUND_CORNER, ROUND_CORNER);
40

    
41
		gfx.setColor(NodeDrawConfig.NODE_BORDER);
42
		final BasicStroke stroke = new BasicStroke(2, BasicStroke.CAP_SQUARE, BasicStroke.JOIN_MITER, 10, getDashes(), 0);
43
		gfx.setStroke(stroke);
44
		gfx.drawRoundRect(0, 0, WIDTH - 1, HEIGHT - 1, ROUND_CORNER, ROUND_CORNER);
45

    
46
		gfx.setColor(Color.white);
47
		final int padding = 6;
48
		final int startX = padding;
49
		final int maxWidth = getIconWidth() - (padding << 1);
50
		FontUtil.setSizedFont(gfx, getLabel(), FONT_SIZE, maxWidth);
51
		final int strWidth = (int) Math.ceil(gfx.getFontMetrics().getStringBounds(getLabel(), gfx).getWidth());
52
		final int strHeight = gfx.getFontMetrics().getAscent();
53
		final int left = startX + ((maxWidth - strWidth) >> 1);
54
		final int top = ((getIconHeight() + strHeight) >> 1);
55
		gfx.drawString(getLabel(), left, top);
56
		
57
		super.resetGfx(gfx);
58
	}
59
}
(4-4/4)