aboutsummaryrefslogtreecommitdiffstats
path: root/src/com/vaadin/terminal/gwt/client/ui/csslayout/VCssLayout.java
diff options
context:
space:
mode:
authorArtur Signell <artur@vaadin.com>2012-04-11 19:58:26 +0300
committerArtur Signell <artur@vaadin.com>2012-04-12 09:58:20 +0300
commit429aeadef913b1d5f3cc932c70b54afa2a57275c (patch)
tree0a1a58ab84dd04401f225f5c1e7f9c6e0241e431 /src/com/vaadin/terminal/gwt/client/ui/csslayout/VCssLayout.java
parent3efc7b521469aa9cf98d8bdf767278aa96a40335 (diff)
downloadvaadin-framework-429aeadef913b1d5f3cc932c70b54afa2a57275c.tar.gz
vaadin-framework-429aeadef913b1d5f3cc932c70b54afa2a57275c.zip
Moved each component to its own package on client side
Class loaders have problems with referring to static inner classes (e.g. state classes) when they cannot load the declaring class. To deal with this the components have been moved to their own packages and state/rpc classes will be defined in their own Java files.
Diffstat (limited to 'src/com/vaadin/terminal/gwt/client/ui/csslayout/VCssLayout.java')
-rw-r--r--src/com/vaadin/terminal/gwt/client/ui/csslayout/VCssLayout.java72
1 files changed, 72 insertions, 0 deletions
diff --git a/src/com/vaadin/terminal/gwt/client/ui/csslayout/VCssLayout.java b/src/com/vaadin/terminal/gwt/client/ui/csslayout/VCssLayout.java
new file mode 100644
index 0000000000..7076120388
--- /dev/null
+++ b/src/com/vaadin/terminal/gwt/client/ui/csslayout/VCssLayout.java
@@ -0,0 +1,72 @@
+/*
+@VaadinApache2LicenseForJavaFiles@
+ */
+
+package com.vaadin.terminal.gwt.client.ui.csslayout;
+
+import com.google.gwt.user.client.DOM;
+import com.google.gwt.user.client.Element;
+import com.google.gwt.user.client.ui.FlowPanel;
+import com.google.gwt.user.client.ui.SimplePanel;
+import com.google.gwt.user.client.ui.Widget;
+import com.vaadin.terminal.gwt.client.StyleConstants;
+import com.vaadin.terminal.gwt.client.ui.VMarginInfo;
+
+public class VCssLayout extends SimplePanel {
+ public static final String TAGNAME = "csslayout";
+ public static final String CLASSNAME = "v-" + TAGNAME;
+
+ FlowPane panel = new FlowPane();
+
+ Element margin = DOM.createDiv();
+
+ public VCssLayout() {
+ super();
+ getElement().appendChild(margin);
+ setStyleName(CLASSNAME);
+ margin.setClassName(CLASSNAME + "-margin");
+ setWidget(panel);
+ }
+
+ @Override
+ protected Element getContainerElement() {
+ return margin;
+ }
+
+ public class FlowPane extends FlowPanel {
+
+ public FlowPane() {
+ super();
+ setStyleName(CLASSNAME + "-container");
+ }
+
+ void addOrMove(Widget child, int index) {
+ if (child.getParent() == this) {
+ int currentIndex = getWidgetIndex(child);
+ if (index == currentIndex) {
+ return;
+ }
+ }
+ insert(child, index);
+ }
+
+ }
+
+ /**
+ * Sets CSS classes for margin based on the given parameters.
+ *
+ * @param margins
+ * A {@link VMarginInfo} object that provides info on
+ * top/left/bottom/right margins
+ */
+ protected void setMarginStyles(VMarginInfo margins) {
+ setStyleName(margin, VCssLayout.CLASSNAME + "-"
+ + StyleConstants.MARGIN_TOP, margins.hasTop());
+ setStyleName(margin, VCssLayout.CLASSNAME + "-"
+ + StyleConstants.MARGIN_RIGHT, margins.hasRight());
+ setStyleName(margin, VCssLayout.CLASSNAME + "-"
+ + StyleConstants.MARGIN_BOTTOM, margins.hasBottom());
+ setStyleName(margin, VCssLayout.CLASSNAME + "-"
+ + StyleConstants.MARGIN_LEFT, margins.hasLeft());
+ }
+}