// ============================================================================
//
// Copyright (C) 2006-2012 Talend Inc. - www.talend.com
//
// This source code is available under agreement available at
// %InstallDIR%\features\org.talend.rcp.branding.%PRODUCTNAME%\%PRODUCTNAME%license.txt
//
// You should have received a copy of the agreement
// along with this program; if not, write to Talend SA
// 9 rue Pages 92150 Suresnes, France
//
// ============================================================================
package org.talend.designer.core.ui.editor.nodes;
import java.util.List;
import org.eclipse.draw2d.ColorConstants;
import org.eclipse.draw2d.Figure;
import org.eclipse.draw2d.Graphics;
import org.eclipse.draw2d.ImageFigure;
import org.eclipse.draw2d.LineBorder;
import org.eclipse.draw2d.ToolbarLayout;
import org.eclipse.draw2d.geometry.Point;
import org.eclipse.swt.graphics.Image;
import org.talend.commons.ui.runtime.image.ECoreImage;
import org.talend.commons.ui.runtime.image.ImageProvider;
import org.talend.commons.ui.utils.workbench.gef.SimpleHtmlFigure;
/**
* DOC Administrator class global comment. Detailled comment
*/
public class NodeProgressBarFigure extends Figure {
private ImageFigure progressFig;
private int alpha = -1;
int widthFi;
int heightFi;
private Node node;
public NodeProgressBarFigure(Node node) {
ToolbarLayout layout = new ToolbarLayout();
setLayoutManager(layout);
this.node = node;
}
// public void updateVisible(boolean flag) {
// setProgressData(new Double(0));
// }
@Override
public void paint(Graphics graphics) {
super.paint(graphics);
}
public int getAlpha() {
return this.alpha;
}
public void setAlpha(int alpha) {
this.alpha = alpha;
}
public void setProgressData(Double extent) {
List childs = this.getChildren();
childs.clear();
if (extent == 0) {
return;
}
Figure baseFigure = new Figure();
baseFigure.setLayoutManager(new ToolbarLayout(true));
baseFigure.setVisible(true);
Double extentString = Math.floor(extent / 10);
Double extentFlag = Math.floor(extent);
Figure progressBarFigure = new Figure();
progressBarFigure.setBorder(new LineBorder(ColorConstants.black, 1));
progressBarFigure.setLayoutManager(new ToolbarLayout(true));
progressBarFigure.setSize(60, 10);
progressBarFigure.setPreferredSize(60, 10);
progressBarFigure.setVisible(true);
SimpleHtmlFigure dataFigure = new SimpleHtmlFigure();
dataFigure.setVisible(true);
// Font font = new Font(Display.getDefault(), "Arial", 9, SWT.ITALIC);
// dataFigure.setFont(font);
//
// dataFigure.setText(extentFlag.intValue() + "%");//$NON-NLS-1$
dataFigure.setText("<font color='#000000'> <b> " + extentFlag.intValue() + "%" //$NON-NLS-1$
+ "</b></font>"); //$NON-NLS-1$ //$NON-NLS-2$
// dataFigure.setSize(27, 12);
// dataFigure.setPreferredSize(27, 12);
int nodeX = progressBarFigure.getLocation().x;
int nodeY = progressBarFigure.getLocation().y;
if (extentString == 0) {
if (extent > 0 && extent < 1) {
ImageFigure progressDataFigure = new ImageFigure();
Image image = ImageProvider.getImage(ECoreImage.PROGRESSGRAYBAR);
progressDataFigure.setImage(image);
progressDataFigure.setVisible(true);
progressBarFigure.add(progressDataFigure);
} else if (extent >= 1 && extent < 10) {
ImageFigure progressDataFigure = new ImageFigure();
Image image = ImageProvider.getImage(ECoreImage.PROGRESSGRAYGEBAR);
progressDataFigure.setImage(image);
progressDataFigure.setVisible(true);
progressBarFigure.add(progressDataFigure);
}
} else if (extentString == 10) {
ImageFigure progressDataFigure = new ImageFigure();
Image image = ImageProvider.getImage(ECoreImage.PROGRESSGREEBAR);
progressDataFigure.setImage(image);
progressDataFigure.setVisible(true);
progressBarFigure.add(progressDataFigure);
} else if (extentString > 0 && extentString < 10) {
for (int i = 0; i < extentString; i++) {
ImageFigure progressDataFigure = new ImageFigure();
Image image = ImageProvider.getImage(ECoreImage.PROGRESSBAR);
progressDataFigure.setImage(image);
progressDataFigure.setVisible(true);
progressBarFigure.add(progressDataFigure);
int imageWith = image.getImageData().width;
if (i != 0) {
Point point = new Point(nodeX + i * imageWith, nodeY);
progressDataFigure.setLocation(point);
}
}
for (int j = 0; j < (10 - extentString); j++) {
ImageFigure progressDataFigure = new ImageFigure();
Image image = ImageProvider.getImage(ECoreImage.PROGRESSBARBlACK);
progressDataFigure.setImage(image);
progressDataFigure.setVisible(true);
progressBarFigure.add(progressDataFigure);
int imageWith = image.getImageData().width;
if (j != 0) {
Point point = new Point(nodeX + extentString * imageWith + j * imageWith, nodeY);
progressDataFigure.setLocation(point);
}
}
}
baseFigure.setSize(dataFigure.getPreferredSize().width + progressBarFigure.getPreferredSize().width, dataFigure
.getPreferredSize().height);
baseFigure.setPreferredSize(dataFigure.getPreferredSize().width + progressBarFigure.getPreferredSize().width, dataFigure
.getPreferredSize().height);
baseFigure.add(progressBarFigure);
baseFigure.add(dataFigure);
this.add(baseFigure);
this.setSize(baseFigure.getSize());
}
}