--- /dev/null
+package com.itmill.toolkit.terminal.gwt.client.ui;
+
+public class AlignmentInfo {
+
+ public static final int ALIGNMENT_LEFT = 1;
+ public static final int ALIGNMENT_RIGHT = 2;
+ public static final int ALIGNMENT_TOP = 4;
+ public static final int ALIGNMENT_BOTTOM = 8;
+ public static final int ALIGNMENT_HORIZONTAL_CENTER = 16;
+ public static final int ALIGNMENT_VERTICAL_CENTER = 32;
+
+ private int bitMask;
+
+ public AlignmentInfo(int bitMask) {
+ this.bitMask = bitMask;
+ }
+
+ public AlignmentInfo(int horizontal, int vertical) {
+ setAlignment(horizontal, vertical);
+ }
+
+ public void setAlignment(int horiz, int vert) {
+ bitMask = horiz + vert;
+ }
+
+ public int getBitMask() {
+ return bitMask;
+ }
+
+ public boolean isTop() {
+ return (bitMask & ALIGNMENT_TOP) == ALIGNMENT_TOP;
+ }
+
+ public boolean isBottom() {
+ return (bitMask & ALIGNMENT_BOTTOM) == ALIGNMENT_BOTTOM;
+ }
+
+ public boolean isLeft() {
+ return (bitMask & ALIGNMENT_LEFT) == ALIGNMENT_LEFT;
+ }
+
+ public boolean isRight() {
+ return (bitMask & ALIGNMENT_RIGHT) == ALIGNMENT_RIGHT;
+ }
+
+ public boolean isVerticalCenter() {
+ return (bitMask & ALIGNMENT_VERTICAL_CENTER) == ALIGNMENT_VERTICAL_CENTER;
+ }
+
+ public boolean isHorizontalCenter() {
+ return (bitMask & ALIGNMENT_HORIZONTAL_CENTER) == ALIGNMENT_HORIZONTAL_CENTER;
+ }
+
+ public String getVerticalAlignment() {
+ if (isBottom()) {
+ return "bottom";
+ } else if (isVerticalCenter()) {
+ return "middle";
+ }
+ return "top";
+ }
+
+ public String getHorizontalAlignment() {
+ if (isRight()) {
+ return "right";
+ } else if (isHorizontalCenter()) {
+ return "center";
+ }
+ return "left";
+ }
+
+}
*/
((Paintable) expandedWidget).updateFromUIDL(expandedWidgetUidl, client);
- // Component alignments as a comma separated list.
- // See com.itmill.toolkit.ui.OrderedLayout.java for possible values.
- String[] alignments = uidl.getStringAttribute("alignments").split(",");
- int alignmentIndex = 0;
-
- // Insert alignment attributes
- Iterator it = getPaintables().iterator();
- while (it.hasNext()) {
-
- // Calculate alignment info
- int alignment = Integer.parseInt((alignments[alignmentIndex++]));
- // Vertical alignment
- String vAlign = "top";
- if ((alignment & ALIGNMENT_TOP) == ALIGNMENT_TOP)
- vAlign = "top";
- else if ((alignment & ALIGNMENT_BOTTOM) == ALIGNMENT_BOTTOM)
- vAlign = "bottom";
- else if ((alignment & ALIGNMENT_VERTICAL_CENTER) == ALIGNMENT_VERTICAL_CENTER)
- vAlign = "middle";
- // Horizontal alignment
- String hAlign = "";
- if ((alignment & ALIGNMENT_LEFT) == ALIGNMENT_LEFT)
- hAlign = "left";
- else if ((alignment & ALIGNMENT_RIGHT) == ALIGNMENT_RIGHT)
- hAlign = "right";
- else if ((alignment & ALIGNMENT_HORIZONTAL_CENTER) == ALIGNMENT_HORIZONTAL_CENTER)
- hAlign = "center";
-
- Element td = DOM.getParent(((Widget) it.next()).getElement());
- DOM.setStyleAttribute(td, "vertical-align", vAlign);
- // TODO use one-cell table to implement horizontal alignments
- DOM.setStyleAttribute(td, "text-align", hAlign);
- }
+ // Set component alignments
+ handleAlignments(uidl);
}
String height = DOM.getStyleAttribute(table, "height");
DOM.setStyleAttribute(table, "height", "");
-
// take expanded element temporarely out of flow to make container
// minimum sized
String originalPositioning = DOM.getStyleAttribute(expandedWidget
DOM.setStyleAttribute(DOM.getParent(expandedElement), "height",
freeSpace + "px");
// Component margins will bleed if overflow is not hidden
- //DOM.setStyleAttribute(expandedElement, "overflow", "hidden");
+ // DOM.setStyleAttribute(expandedElement, "overflow", "hidden");
DOM.setStyleAttribute(expandedWidget.getElement(), "position",
originalPositioning);
public static final int ORIENTATION_VERTICAL = 0;
public static final int ORIENTATION_HORIZONTAL = 1;
- public static final int ALIGNMENT_LEFT = 1;
- public static final int ALIGNMENT_RIGHT = 2;
- public static final int ALIGNMENT_TOP = 4;
- public static final int ALIGNMENT_BOTTOM = 8;
- public static final int ALIGNMENT_HORIZONTAL_CENTER = 16;
- public static final int ALIGNMENT_VERTICAL_CENTER = 32;
-
int orientationMode = ORIENTATION_VERTICAL;
protected HashMap componentToCaption = new HashMap();
removePaintable(p);
}
- // Component alignments as a comma separated list.
- // See com.itmill.toolkit.ui.OrderedLayout.java for possible values.
- int[] alignments = uidl.getIntArrayAttribute("alignments");
-
- int alignmentIndex = 0;
-
- // Insert alignment attributes
- Iterator it = getPaintables().iterator();
- while (it.hasNext()) {
-
- // Calculate alignment info
- int alignment = alignments[alignmentIndex++];
- // Vertical alignment
- String vAlign = "top";
- if ((alignment & ALIGNMENT_TOP) == ALIGNMENT_TOP)
- vAlign = "top";
- else if ((alignment & ALIGNMENT_BOTTOM) == ALIGNMENT_BOTTOM)
- vAlign = "bottom";
- else if ((alignment & ALIGNMENT_VERTICAL_CENTER) == ALIGNMENT_VERTICAL_CENTER)
- vAlign = "middle";
- // Horizontal alignment
- String hAlign = "";
- if ((alignment & ALIGNMENT_LEFT) == ALIGNMENT_LEFT)
- hAlign = "left";
- else if ((alignment & ALIGNMENT_RIGHT) == ALIGNMENT_RIGHT)
- hAlign = "right";
- else if ((alignment & ALIGNMENT_HORIZONTAL_CENTER) == ALIGNMENT_HORIZONTAL_CENTER)
- hAlign = "center";
-
- Element td = DOM.getParent(((Widget) it.next()).getElement());
- DOM.setStyleAttribute(td, "vertical-align", vAlign);
- // TODO use one-cell table to implement horizontal alignments
- DOM.setStyleAttribute(td, "text-align", hAlign);
- }
+ // Handle component alignments
+ handleAlignments(uidl);
+ // Handle layout margins
handleMargins(uidl);
}
*/
protected Element createWidgetWrappper() {
Element td = DOM.createTD();
- //DOM.setStyleAttribute(td, "overflow", "hidden");
+ // DOM.setStyleAttribute(td, "overflow", "hidden");
switch (orientationMode) {
case ORIENTATION_HORIZONTAL:
return td;
DOM.setElementProperty(margin, "className", marginClasses);
}
+ protected void handleAlignments(UIDL uidl) {
+ // Component alignments as a comma separated list.
+ // See com.itmill.toolkit.terminal.gwt.client.ui.AlignmentInfo.java for
+ // possible values.
+ int[] alignments = uidl.getIntArrayAttribute("alignments");
+ int alignmentIndex = 0;
+ // Insert alignment attributes
+ Iterator it = getPaintables().iterator();
+ while (it.hasNext()) {
+
+ // Calculate alignment info
+ AlignmentInfo ai = new AlignmentInfo(alignments[alignmentIndex++]);
+
+ Element td = DOM.getParent(((Widget) it.next()).getElement());
+ DOM.setStyleAttribute(td, "vertical-align", ai
+ .getVerticalAlignment());
+ // TODO use one-cell table to implement horizontal alignments
+ DOM
+ .setStyleAttribute(td, "text-align", ai
+ .getHorizontalAlignment());
+ }
+ }
+
}
if (getOrientation() == ORIENTATION_HORIZONTAL)
target.addAttribute("orientation", "horizontal");
- // Store alignment info in this String
- StringBuffer alignments = new StringBuffer();
-
+ String[] alignmentsArray = new String[components.size()];
// Adds all items in all the locations
+ int index = 0;
for (Iterator i = getComponentIterator(); i.hasNext();) {
Component c = (Component) i.next();
if (c != null) {
c.paint(target);
target.endTag("cc");
}
- alignments.append(getComponentAlignment(c));
- if (i.hasNext())
- alignments.append(",");
+ alignmentsArray[index++] = String.valueOf(getComponentAlignment(c));
}
+
// Add child component alignment info to layout tag
- target.addAttribute("alignments", alignments.toString());
+ target.addAttribute("alignments", alignmentsArray);
}
/**
* Custom layout slots containing the components.
*/
- private LinkedList components = new LinkedList();
+ protected LinkedList components = new LinkedList();
/* Child component alignments ************************************** */