All Downloads are FREE. Search and download functionalities are using the official Maven repository.

org.geomajas.graphics.client.widget.TextAreaWidget Maven / Gradle / Ivy

The newest version!
/*
 * This is part of Geomajas, a GIS framework, http://www.geomajas.org/.
 *
 * Copyright 2008-2014 Geosparc nv, http://www.geosparc.com/, Belgium.
 *
 * The program is available in open source according to the Apache
 * License, Version 2.0. All contributions in this program are covered
 * by the Geomajas Contributors License Agreement. For full licensing
 * details, see LICENSE.txt in the project root.
 */
package org.geomajas.graphics.client.widget;

import org.geomajas.geometry.Bbox;
import org.geomajas.graphics.client.object.role.Fillable;
import org.geomajas.graphics.client.object.role.Strokable;
import org.geomajas.graphics.client.object.role.Textable;
import org.geomajas.graphics.client.util.GraphicsUtil;

import com.google.gwt.core.client.GWT;
import com.google.gwt.dom.client.Style.Unit;
import com.google.gwt.uibinder.client.UiBinder;
import com.google.gwt.user.client.ui.HTMLPanel;
import com.google.gwt.user.client.ui.IsWidget;
import com.google.gwt.user.client.ui.Widget;

/**
 * Simple implementation of an HTM text area.
 * 
 * @author Jan De Moerloose
 */
public class TextAreaWidget implements IsWidget, Fillable, Strokable, Textable {

	/**
	 * UI binder interface this widget.
	 * 
	 */
	interface MyUiBinder extends UiBinder {
	}

	private static final MyUiBinder UIBINDER = GWT.create(MyUiBinder.class);

	protected HTMLPanel widget;

	private String fillColor = "#FFFFFF";

	private double fillOpacity = 1.0;

	private String strokeColor = "#0000FF";

	private int strokeWidth = 8;

	private double strokeOpacity = 0.7;

	private Bbox screenBounds = new Bbox(0, 0, 100, 100);

	private String fontFamily = "";

	private int fontSize = 14;

	private String fontColor = "#000000";

	// ------------------------------------------------------------------------
	// Constructors:
	// ------------------------------------------------------------------------
	/**
	 * Create a new instance.
	 */
	public TextAreaWidget() {
		widget = UIBINDER.createAndBindUi(this);
	}

	public void setScreenBounds(Bbox screenBounds) {
		this.screenBounds = GraphicsUtil.clone(screenBounds);
		updateStyle();
	}

	@Override
	public Widget asWidget() {
		return widget;
	}

	@Override
	public void setFillColor(String fillColor) {
		this.fillColor = fillColor;
		updateStyle();
	}

	@Override
	public void setFillOpacity(double fillOpacity) {
		this.fillOpacity = fillOpacity;
		updateStyle();
	}

	@Override
	public String getFillColor() {
		return fillColor;
	}

	@Override
	public double getFillOpacity() {
		return fillOpacity;
	}

	public void updateStyle() {
		widget.getElement().getStyle().setWidth((int) screenBounds.getWidth() - 4 * strokeWidth, Unit.PX);
		widget.getElement().getStyle().setLeft(screenBounds.getX() + strokeWidth, Unit.PX);
		widget.getElement().getStyle().setTop(screenBounds.getY() + strokeWidth, Unit.PX);

		widget.getElement()
				.getStyle()
				.setProperty("boxShadow",
						"0px 0px 0px " + strokeWidth + "px " + getRgbaColor(strokeColor, strokeOpacity));
		widget.getElement().getStyle().setPadding(strokeWidth, Unit.PX);
		widget.getElement().getStyle().setBackgroundColor(getRgbaColor(fillColor, fillOpacity));
		widget.getElement().getStyle().setFontSize(fontSize, Unit.PX);
		widget.getElement().getStyle().setProperty("fontFamily", fontFamily);
		widget.getElement().getStyle().setColor(fontColor);

	}

	private String getRgbaColor(String hexColor, double opacity) {
		if (hexColor.startsWith("#")) {
			Integer intval = Integer.decode("0x" + hexColor.substring(1));
			int color = intval.intValue();
			int b = (color) & 0xFF;
			int g = (color >> 8) & 0xFF;
			int r = (color >> 16) & 0xFF;
			return "rgba(" + r + "," + g + "," + b + "," + opacity + ")";
		}
		return hexColor;
	}

	@Override
	public String getStrokeColor() {
		return strokeColor;
	}

	@Override
	public void setStrokeColor(String strokeColor) {
		this.strokeColor = strokeColor;
		updateStyle();
	}

	@Override
	public int getStrokeWidth() {
		return strokeWidth;
	}

	@Override
	public void setStrokeWidth(int strokeWidth) {
		this.strokeWidth = strokeWidth;
		updateStyle();
	}

	@Override
	public double getStrokeOpacity() {
		return strokeOpacity;
	}

	@Override
	public void setStrokeOpacity(double strokeOpacity) {
		this.strokeOpacity = strokeOpacity;
		updateStyle();
	}

	@Override
	public void setLabel(String content) {
		widget.getElement().setInnerText(content);
		updateStyle();
	}

	@Override
	public String getLabel() {
		return widget.getElement().getInnerText();
	}

	@Override
	public void setFontColor(String fontColor) {
		this.fontColor = fontColor;
		updateStyle();
	}

	@Override
	public String getFontColor() {
		return fontColor;
	}

	@Override
	public void setFontSize(int fontSize) {
		this.fontSize = fontSize;
		updateStyle();
	}

	@Override
	public int getFontSize() {
		return fontSize;
	}

	@Override
	public void setFontFamily(String fontFamily) {
		this.fontFamily = fontFamily;
		updateStyle();
	}

	@Override
	public String getFontFamily() {
		return fontFamily;
	}

}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy