/**
*
*/
package net.cis.client.game.ui.hud.ctrl;
import java.util.Properties;
import de.lessvoid.nifty.Nifty;
import de.lessvoid.nifty.controls.Controller;
import de.lessvoid.nifty.elements.Element;
import de.lessvoid.nifty.elements.render.ImageRenderer;
import de.lessvoid.nifty.input.NiftyInputEvent;
import de.lessvoid.nifty.render.NiftyImage;
import de.lessvoid.nifty.render.image.ImageModeFactory;
import de.lessvoid.nifty.render.image.ImageModeHelper;
import de.lessvoid.nifty.screen.Screen;
import de.lessvoid.nifty.tools.SizeValue;
import de.lessvoid.xml.xpp3.Attributes;
/**
* @author SchaeckerM
*
*/
public class VerticalProgressControl implements Controller {
private Element progressElement;
final int imageHeight = 88;
final int imageWidth = 27;
@Override
public void bind(Nifty nifty, Screen screen, Element element,
Properties properties, Attributes attributes) {
progressElement = element;
}
@Override
public void init(Properties arg0, Attributes arg1) {
// TODO Auto-generated method stub
}
@Override
public boolean inputEvent(NiftyInputEvent arg0) {
// TODO Auto-generated method stub
return false;
}
@Override
public void onFocus(boolean arg0) {
// TODO Auto-generated method stub
}
@Override
public void onStartScreen() {
// TODO Auto-generated method stub
}
public void setProgress(final int maxValue, final int value) {
int pixelHeight = (int) (imageHeight * ((float) value / maxValue));
int progressFreeValue = imageHeight - pixelHeight;
NiftyImage image = progressElement.getRenderer(ImageRenderer.class)
.getImage();
String areaProviderProperty = new ImageModeHelper()
.getAreaProviderProperty("subImage:0," + progressFreeValue
+ ",27," + pixelHeight);
String renderStrategyProperty = new ImageModeHelper()
.getRenderStrategyProperty("subImage:0," + progressFreeValue
+ ",27," + pixelHeight);
image.setImageMode(ImageModeFactory.getSharedInstance()
.createImageMode(areaProviderProperty, renderStrategyProperty));
progressElement.getRenderer(ImageRenderer.class).setImage(image);
progressElement.setConstraintY(new SizeValue(Integer
.toString(progressFreeValue + 6) + "px"));
progressElement.setConstraintHeight(new SizeValue(pixelHeight+ "px"));
progressElement.getParent().layoutElements();
}
}