Skip to content

Commit

Permalink
Added StyleAttribute
Browse files Browse the repository at this point in the history
  • Loading branch information
mnadeem committed Jan 23, 2013
1 parent 63c256f commit 25b3c85
Show file tree
Hide file tree
Showing 4 changed files with 280 additions and 0 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -14,6 +14,7 @@ public class HTMLAttribute extends BaseHTMLAttribute {
public static final String ROWS = "rows";
public static final String SIZE = "size";
public static final String TITLE = "title";
public static final String STYLE = "style";

public HTMLAttribute() {
super();
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,108 @@
package org.wicketstuff.egrid.attribute;


import java.io.Serializable;
import java.util.LinkedHashMap;
import java.util.Map;
import java.util.Map.Entry;


public class Options implements Serializable {

private static final long serialVersionUID = 1L;

private Map<String, String> options = new LinkedHashMap<String, String>();

public Options() {
super();
}

public boolean isEmpty() {
return this.options.isEmpty();
}

public String get(String key) {
return options.get(key);
}

public int getInt(String key) {
return Integer.valueOf(this.options.get(key));
}


public short getShort(String key) {
return Short.valueOf(this.options.get(key));
}

public float getFloat(String key) {
return Float.valueOf(this.options.get(key));
}

public boolean getBoolean(String key) {

return Boolean.valueOf(this.options.get(key));
}

public Options put(String key, String value) {
this.options.put(key, value);
return this;
}

public Options put(String key, int value) {
this.options.put(key, String.valueOf(value));
return this;
}

public Options put(String key, float value) {
this.options.put(key, String.valueOf(value));
return this;
}

public Options put(String key, boolean value) {
this.options.put(key, String.valueOf(value));
return this;
}

public void removeOption(String key) {
this.options.remove(key);
}

public String getJavaScriptOptions() {
StringBuffer sb = new StringBuffer("{");
int count = 0;

for (Entry<String, String> entry : this.options.entrySet()) {
String key = entry.getKey();
sb.append(key);
sb.append(":");
sb.append(entry.getValue());
if (count < this.options.size() - 1) {
sb.append(",\n");
}
count++;
}

return sb.append("}").toString();
}

public String getCSSOptions() {
StringBuffer sb = new StringBuffer();
int count = 0;

for (Entry<String, String> entry : this.options.entrySet()) {
String key = entry.getKey();
sb.append(key);
sb.append(":");
sb.append(entry.getValue());
if (count < this.options.size() - 1) {
sb.append("; ");
}
count++;
}
return sb.toString();
}

public boolean containsKey(Object key) {
return this.options.containsKey(key);
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,111 @@
package org.wicketstuff.egrid.attribute;

import java.io.Serializable;

public class StyleAttribute implements Serializable {

private static final long serialVersionUID = 1L;

public static final String HEIGHT = "height";
public static final String WIDTH = "width";
public static final String DISPLAY = "display";
public static final String VISIBILITY = "visibility";
public static final String TOP = "top";
public static final String LEFT = "left";
public static final String TEXT_ALIGN = "text-align";
public static final String COLOR = "color";
public static final String FONT_WEIGHT = "font-weight";
public static final String FONT_SIZE = "font-size";

public static final String ALIGN_CENTER = "center";
public static final String ALIGN_RIGHT = "right";
public static final String ALIGN_LEFT = "left";

public static final String FONT_BOLD = "bold";

private Options styleOptions = null;

public StyleAttribute() {
super();
styleOptions = new Options();
}

public final StyleAttribute setTop(final String top) {
put(TOP, top);
return this;
}

public final StyleAttribute setLeft(final String left) {
put(LEFT, left);
return this;
}

public final StyleAttribute setHeight(final String height) {
put(HEIGHT, height);
return this;
}

public final StyleAttribute setWidth(final String width) {
put(WIDTH, width);
return this;
}

public final StyleAttribute setDisplay(final String display) {
put(DISPLAY, display);
return this;
}

public final StyleAttribute setVisibility(final String visibility) {
put(VISIBILITY, visibility);
return this;
}
public final StyleAttribute setTextAlign(final String alignment) {
put(TEXT_ALIGN, alignment);
return this;
}

public final StyleAttribute setColor(final String color) {
put(COLOR, color);
return this;
}
public final StyleAttribute setRedColor() {
put(COLOR, "red");
return this;
}

public final StyleAttribute setFontWeight(final String fontWeight){
put(FONT_WEIGHT, fontWeight);
return this;
}

public final StyleAttribute setFontSize(final int size) {
put(TOP, size + "px");
return this;
}

public final StyleAttribute setBoldFont() {
put(FONT_WEIGHT, FONT_BOLD);
return this;
}

public final StyleAttribute alignCenter() {
setTextAlign(ALIGN_CENTER);
return this;
}
public final StyleAttribute alignLeft() {
setTextAlign(ALIGN_LEFT);
return this;
}
public final StyleAttribute alignRight() {
setTextAlign(ALIGN_RIGHT);
return this;
}

public final String getStyles() {
return styleOptions.getCSSOptions();
}

public final void put(final String attribute, final String value) {
styleOptions.put(attribute, value);
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,60 @@
package org.wicketstuff.egrid.behavior;

import org.apache.wicket.Component;
import org.apache.wicket.behavior.Behavior;
import org.apache.wicket.markup.ComponentTag;
import org.apache.wicket.util.io.IClusterable;
import org.apache.wicket.util.string.Strings;
import org.wicketstuff.egrid.attribute.HTMLAttribute;
import org.wicketstuff.egrid.attribute.StyleAttribute;

public class StyleAttributeBehavior extends Behavior implements IClusterable {

private static final long serialVersionUID = 1L;

private static final String EMPTY = "";
private static final String SEPERATOR_SPACE = " ";
private static final String SEPERATOR_COLON = ":";
private static final String SEPERATOR_SEMI_COLON = ";";

private StyleAttribute styleAttribute;

public StyleAttributeBehavior(final StyleAttribute styleAttribute) {

if (styleAttribute == null) {
throw new IllegalArgumentException("Argument [styleAttribute] cannot be null");
}
this.styleAttribute = styleAttribute;
}

public final void onComponentTag(final Component component, final ComponentTag tag) {
super.onComponentTag(component, tag);

String existingStyles = (String) tag.getAttributes().get(HTMLAttribute.STYLE);
putExistingStyles(existingStyles);

onStyleAttribute(this.styleAttribute);

String styles = this.styleAttribute.getStyles();
if (!Strings.isEmpty(styles)) {
tag.put(HTMLAttribute.STYLE, styles);
}
}

private void putExistingStyles(final String styleAtt) {

if (styleAtt != null) {
String[] items = styleAtt.split(SEPERATOR_SEMI_COLON);
for (int i = 0; i < items.length; i++) {
String item = items[i];
this.styleAttribute.put(
item.substring(0, item.indexOf(SEPERATOR_COLON)).replaceAll(SEPERATOR_SPACE, EMPTY),
item.substring(item.indexOf(SEPERATOR_COLON) + 1, item.length()).replaceAll(SEPERATOR_SPACE, EMPTY));
}
}
}

protected void onStyleAttribute(final StyleAttribute styleAttribute) {

}
}

0 comments on commit 25b3c85

Please sign in to comment.