From f138893b54f154a49d23af9556c874f7eba16013 Mon Sep 17 00:00:00 2001 From: Jouni Koivuviita Date: Tue, 6 Nov 2007 07:14:26 +0000 Subject: [PATCH] -Layouts no longer implement Sizeable (except SplitPanel and ExpandLayout). Sizeable implementation now copy-pasted to all implementing classes (Panel, Tabsheet, SplitPanel...). -Changed ReservationApplication to conform to new setStyleName. Removed deprecated style constant usages also. Some margins enabled to layouts. -IOrderedLayout vertical reverted back to DIV implementation. -Margins added to demo layouts where needed. svn changeset:2714/svn branch:trunk --- .../reservation/ReservationApplication.java | 7 +- .../reservation/ResourceSelectorPanel.java | 13 +- .../gwt/client/ui/IOrderedLayout.java | 77 +++++---- .../tests/TestForBasicApplicationLayout.java | 2 +- .../tests/featurebrowser/PropertyPanel.java | 2 + .../ui/AbstractComponentContainer.java | 8 +- src/com/itmill/toolkit/ui/AbstractLayout.java | 134 --------------- src/com/itmill/toolkit/ui/ExpandLayout.java | 129 +++++++++++++++ src/com/itmill/toolkit/ui/GridLayout.java | 30 ++-- src/com/itmill/toolkit/ui/Layout.java | 2 +- src/com/itmill/toolkit/ui/OrderedLayout.java | 7 +- src/com/itmill/toolkit/ui/Panel.java | 146 +++++++++++++++-- src/com/itmill/toolkit/ui/SplitPanel.java | 140 +++++++++++++++- src/com/itmill/toolkit/ui/TabSheet.java | 153 ++++++++++++++++-- 14 files changed, 614 insertions(+), 236 deletions(-) diff --git a/src/com/itmill/toolkit/demo/reservation/ReservationApplication.java b/src/com/itmill/toolkit/demo/reservation/ReservationApplication.java index 273ff1cfca..0f3297461c 100644 --- a/src/com/itmill/toolkit/demo/reservation/ReservationApplication.java +++ b/src/com/itmill/toolkit/demo/reservation/ReservationApplication.java @@ -68,7 +68,6 @@ public class ReservationApplication extends Application { setTheme("reservr"); TabSheet mainTabs = new TabSheet(); - mainTabs.addStyleName(TabSheet.STYLE_NO_PADDING); mainWindow.addComponent(mainTabs); OrderedLayout reservationTab = new OrderedLayout(); @@ -83,7 +82,8 @@ public class ReservationApplication extends Application { Panel reservationPanel = new Panel("Reservation", new OrderedLayout( OrderedLayout.ORIENTATION_HORIZONTAL)); - reservationPanel.setStyle("light"); + reservationPanel.addStyleName(Panel.STYLE_LIGHT); + reservationPanel.getLayout().setMargin(true); reservationTab.addComponent(reservationPanel); OrderedLayout infoLayout = new OrderedLayout(); @@ -125,7 +125,7 @@ public class ReservationApplication extends Application { Label arrowLabel = new Label("»"); arrowLabel.setContentMode(Label.CONTENT_XHTML); - arrowLabel.setStyle("arrow"); + arrowLabel.setStyleName("arrow"); reservationPanel.addComponent(arrowLabel); Calendar to = Calendar.getInstance(); @@ -178,6 +178,7 @@ public class ReservationApplication extends Application { Panel allLayout = new Panel(new OrderedLayout( OrderedLayout.ORIENTATION_HORIZONTAL)); allLayout.addStyleName(Panel.STYLE_LIGHT); + allLayout.getLayout().setMargin(true); allCalendar = new CalendarField(); initCalendarFieldPropertyIds(allCalendar); allLayout.addComponent(allCalendar); diff --git a/src/com/itmill/toolkit/demo/reservation/ResourceSelectorPanel.java b/src/com/itmill/toolkit/demo/reservation/ResourceSelectorPanel.java index 69da622ef4..d28313cc62 100644 --- a/src/com/itmill/toolkit/demo/reservation/ResourceSelectorPanel.java +++ b/src/com/itmill/toolkit/demo/reservation/ResourceSelectorPanel.java @@ -22,7 +22,7 @@ public class ResourceSelectorPanel extends Panel implements public ResourceSelectorPanel(String caption) { super(caption, new OrderedLayout(OrderedLayout.ORIENTATION_HORIZONTAL)); - setStyle("light"); + addStyleName(Panel.STYLE_LIGHT); } public void setResourceContainer(Container resources) { @@ -41,7 +41,7 @@ public class ResourceSelectorPanel extends Panel implements String description = (String) resource.getItemProperty( SampleDB.Resource.PROPERTY_ID_DESCRIPTION).getValue(); Button rButton = new Button(name, this); - rButton.setStyle("link"); + rButton.setStyleName("link"); rButton.setDescription(description); rButton.setData(resource); Layout resourceLayout = (Layout) categoryLayouts.get(category); @@ -49,12 +49,13 @@ public class ResourceSelectorPanel extends Panel implements .get(category); if (resourceLayout == null) { resourceLayout = new OrderedLayout(); + resourceLayout.setMargin(true); this.addComponent(resourceLayout); categoryLayouts.put(category, resourceLayout); resourceList = new LinkedList(); categoryResources.put(category, resourceList); Button cButton = new Button(category + " (any)", this); - cButton.setStyle("important-link"); + cButton.setStyleName("important-link"); cButton.setData(category); resourceLayout.addComponent(cButton); } @@ -89,7 +90,7 @@ public class ResourceSelectorPanel extends Panel implements .get(category); setSelectedResources(resources); } - ((Button) source).setStyle("selected-link"); + ((Button) source).setStyleName("selected-link"); } } @@ -100,9 +101,9 @@ public class ResourceSelectorPanel extends Panel implements for (Iterator bit = lo.getComponentIterator(); bit.hasNext();) { Button b = (Button) bit.next(); if (b.getData() instanceof Item) { - b.setStyle("link"); + b.setStyleName("link"); } else { - b.setStyle("important-link"); + b.setStyleName("important-link"); } } } diff --git a/src/com/itmill/toolkit/terminal/gwt/client/ui/IOrderedLayout.java b/src/com/itmill/toolkit/terminal/gwt/client/ui/IOrderedLayout.java index 59cf73d7de..fdf50c4d43 100644 --- a/src/com/itmill/toolkit/terminal/gwt/client/ui/IOrderedLayout.java +++ b/src/com/itmill/toolkit/terminal/gwt/client/ui/IOrderedLayout.java @@ -33,8 +33,8 @@ public abstract class IOrderedLayout extends ComplexPanel implements Container { 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 HORIZONTAL_ALIGNMENT_CENTER = 16; - public static final int VERTICAL_ALIGNMENT_CENTER = 32; + public static final int ALIGNMENT_HORIZONTAL_CENTER = 16; + public static final int ALIGNMENT_VERTICAL_CENTER = 32; int orientationMode = ORIENTATION_VERTICAL; @@ -49,7 +49,7 @@ public abstract class IOrderedLayout extends ComplexPanel implements Container { protected Element childContainer; /* - * Margin element that provides marginals. + * Element that provides margins. */ private Element margin; @@ -60,18 +60,25 @@ public abstract class IOrderedLayout extends ComplexPanel implements Container { } protected void constructDOM() { - margin = DOM.createDiv(); - Element table = DOM.createTable(); - Element tBody = DOM.createTBody(); - childContainer = orientationMode == ORIENTATION_HORIZONTAL ? DOM - .createTR() : tBody; - DOM.appendChild(table, tBody); - if (orientationMode == ORIENTATION_HORIZONTAL) + switch (orientationMode) { + case ORIENTATION_HORIZONTAL: + Element table = DOM.createTable(); + Element tBody = DOM.createTBody(); + childContainer = DOM.createTR(); + DOM.appendChild(table, tBody); DOM.appendChild(tBody, childContainer); - setElement(table); - // prevent unwanted spacing - DOM.setElementAttribute(table, "cellSpacing", "0"); - DOM.setElementAttribute(table, "cellPadding", "0"); + setElement(table); + // prevent unwanted spacing + DOM.setElementAttribute(table, "cellSpacing", "0"); + DOM.setElementAttribute(table, "cellPadding", "0"); + margin = table; + break; + default: + childContainer = DOM.createDiv(); + setElement(childContainer); + margin = childContainer; + break; + } } public void updateFromUIDL(UIDL uidl, ApplicationConnection client) { @@ -163,7 +170,7 @@ public abstract class IOrderedLayout extends ComplexPanel implements Container { vAlign = "top"; else if ((alignment & ALIGNMENT_BOTTOM) == ALIGNMENT_BOTTOM) vAlign = "bottom"; - else if ((alignment & VERTICAL_ALIGNMENT_CENTER) == VERTICAL_ALIGNMENT_CENTER) + else if ((alignment & ALIGNMENT_VERTICAL_CENTER) == ALIGNMENT_VERTICAL_CENTER) vAlign = "middle"; // Horizontal alignment String hAlign = ""; @@ -171,7 +178,7 @@ public abstract class IOrderedLayout extends ComplexPanel implements Container { hAlign = "left"; else if ((alignment & ALIGNMENT_RIGHT) == ALIGNMENT_RIGHT) hAlign = "right"; - else if ((alignment & HORIZONTAL_ALIGNMENT_CENTER) == HORIZONTAL_ALIGNMENT_CENTER) + else if ((alignment & ALIGNMENT_HORIZONTAL_CENTER) == ALIGNMENT_HORIZONTAL_CENTER) hAlign = "center"; Element td = DOM.getParent(((Widget) it.next()).getElement()); @@ -182,23 +189,19 @@ public abstract class IOrderedLayout extends ComplexPanel implements Container { // Modify layout marginals String marginClasses = ""; if (uidl.hasAttribute("marginTop")) - marginClasses = StyleConstants.LAYOUT_MARGIN_TOP; + marginClasses += " " + StyleConstants.LAYOUT_MARGIN_TOP; if (uidl.hasAttribute("marginRight")) - marginClasses = StyleConstants.LAYOUT_MARGIN_RIGHT; + marginClasses += " " + StyleConstants.LAYOUT_MARGIN_RIGHT; if (uidl.hasAttribute("marginBottom")) - marginClasses = StyleConstants.LAYOUT_MARGIN_BOTTOM; + marginClasses += " " + StyleConstants.LAYOUT_MARGIN_BOTTOM; if (uidl.hasAttribute("marginLeft")) - marginClasses = StyleConstants.LAYOUT_MARGIN_LEFT; + marginClasses += " " + StyleConstants.LAYOUT_MARGIN_LEFT; - DOM.setElementProperty(margin, "className", marginClasses); - - // Adjust size - if(uidl.hasAttribute("width")) - setWidth(uidl.getStringAttribute("width")); - else setWidth("100%"); - if(uidl.hasAttribute("height")) - setHeight(uidl.getStringAttribute("height")); - else setHeight(""); + if(marginClasses.equals("")) + DOM.setElementProperty(margin, "className", CLASSNAME); + else + DOM.setElementProperty(margin, "className", CLASSNAME + marginClasses); + } /** @@ -268,11 +271,10 @@ public abstract class IOrderedLayout extends ComplexPanel implements Container { } else { Element container = createWidgetWrappper(); DOM.insertChild(childContainer, container, beforeIndex); - insert(w, orientationMode == ORIENTATION_HORIZONTAL ? container - : DOM.getFirstChild(container), beforeIndex, false); + insert(w, container, beforeIndex, false); } } - + /** * creates an Element which will contain child widget */ @@ -281,9 +283,7 @@ public abstract class IOrderedLayout extends ComplexPanel implements Container { case ORIENTATION_HORIZONTAL: return DOM.createTD(); default: - Element tr = DOM.createTR(); - DOM.appendChild(tr, DOM.createTD()); - return tr; + return DOM.createDiv(); } } @@ -322,8 +322,7 @@ public abstract class IOrderedLayout extends ComplexPanel implements Container { public void add(Widget w) { Element wrapper = createWidgetWrappper(); DOM.appendChild(childContainer, wrapper); - super.add(w, orientationMode == ORIENTATION_HORIZONTAL ? wrapper : DOM - .getFirstChild(wrapper)); + super.add(w, wrapper); } public boolean remove(int index) { @@ -335,9 +334,7 @@ public abstract class IOrderedLayout extends ComplexPanel implements Container { boolean removed = super.remove(w); if (removed) { if (!(w instanceof Caption)) { - DOM.removeChild(childContainer, - orientationMode == ORIENTATION_HORIZONTAL ? wrapper - : DOM.getParent(wrapper)); + DOM.removeChild(childContainer, wrapper); } return true; } diff --git a/src/com/itmill/toolkit/tests/TestForBasicApplicationLayout.java b/src/com/itmill/toolkit/tests/TestForBasicApplicationLayout.java index f7a058cbd2..e7712ecaaa 100644 --- a/src/com/itmill/toolkit/tests/TestForBasicApplicationLayout.java +++ b/src/com/itmill/toolkit/tests/TestForBasicApplicationLayout.java @@ -56,10 +56,10 @@ public class TestForBasicApplicationLayout extends CustomComponent { tab.setWidthUnits(Sizeable.UNITS_PERCENTAGE); tab.setHeight(740); tab.setHeightUnits(Sizeable.UNITS_PIXELS); - tab.addStyleName(TabSheet.STYLE_NO_PADDING); Panel report = new Panel("Monthly Program Runs", new ExpandLayout()); OrderedLayout controls = new OrderedLayout(); + controls.setMargin(true); controls.addComponent(new Label("Report tab")); controls.addComponent(click); controls.addComponent(click2); diff --git a/src/com/itmill/toolkit/tests/featurebrowser/PropertyPanel.java b/src/com/itmill/toolkit/tests/featurebrowser/PropertyPanel.java index ad8382a632..a16f42ce13 100644 --- a/src/com/itmill/toolkit/tests/featurebrowser/PropertyPanel.java +++ b/src/com/itmill/toolkit/tests/featurebrowser/PropertyPanel.java @@ -67,6 +67,7 @@ public class PropertyPanel extends Panel implements Button.ClickListener, /** Contruct new property panel for configuring given object. */ public PropertyPanel(Object objectToConfigure) { super(); + getLayout().setMargin(false); // Layout setCaption("Properties"); @@ -84,6 +85,7 @@ public class PropertyPanel extends Panel implements Button.ClickListener, // Control buttons OrderedLayout buttons = new OrderedLayout( OrderedLayout.ORIENTATION_HORIZONTAL); + buttons.setMargin(false, true, true, true); buttons.addComponent(setButton); buttons.addComponent(discardButton); addComponent(buttons); diff --git a/src/com/itmill/toolkit/ui/AbstractComponentContainer.java b/src/com/itmill/toolkit/ui/AbstractComponentContainer.java index 659a810987..6c2e45d562 100644 --- a/src/com/itmill/toolkit/ui/AbstractComponentContainer.java +++ b/src/com/itmill/toolkit/ui/AbstractComponentContainer.java @@ -32,8 +32,6 @@ import java.lang.reflect.Method; import java.util.Iterator; import java.util.LinkedList; -import com.itmill.toolkit.terminal.Sizeable; - /** * Extension to {@link AbstractComponent} that defines the default * implementation for the methods in {@link ComponentContainer}. Basic UI @@ -46,8 +44,8 @@ import com.itmill.toolkit.terminal.Sizeable; * @since 3.0 */ public abstract class AbstractComponentContainer extends AbstractComponent - implements ComponentContainer, Sizeable { - + implements ComponentContainer { + /** * Constructs a new component container. */ @@ -207,5 +205,5 @@ public abstract class AbstractComponentContainer extends AbstractComponent fireComponentDetachEvent(c); } } - + } diff --git a/src/com/itmill/toolkit/ui/AbstractLayout.java b/src/com/itmill/toolkit/ui/AbstractLayout.java index 06d0d1899d..10dc8694ba 100644 --- a/src/com/itmill/toolkit/ui/AbstractLayout.java +++ b/src/com/itmill/toolkit/ui/AbstractLayout.java @@ -21,30 +21,6 @@ public abstract class AbstractLayout extends AbstractComponentContainer * space at that edge. */ protected boolean[] margins; - - /** - * Height of the layout. Set to -1 for undefined height. - */ - private int height = -1; - - /** - * Height unit. - * - * @see com.itmill.toolkit.terminal.Sizeable.UNIT_SYMBOLS; - */ - private int heightUnit = UNITS_PIXELS; - - /** - * Width of the layout. Set to -1 for undefined width. - */ - private int width = -1; - - /** - * Width unit. - * - * @see com.itmill.toolkit.terminal.Sizeable.UNIT_SYMBOLS; - */ - private int widthUnit = UNITS_PIXELS; /* * (non-Javadoc) @@ -73,108 +49,6 @@ public abstract class AbstractLayout extends AbstractComponentContainer margins = new boolean[] { topEnabled, rightEnabled, bottomEnabled, leftEnabled }; } - - /* - * (non-Javadoc) - * - * @see com.itmill.toolkit.terminal.Sizeable#getHeight() - */ - public int getHeight() { - return height; - } - - /* - * (non-Javadoc) - * - * @see com.itmill.toolkit.terminal.Sizeable#getHeightUnits() - */ - public int getHeightUnits() { - return heightUnit; - } - - /* - * (non-Javadoc) - * - * @see com.itmill.toolkit.terminal.Sizeable#getWidth() - */ - public int getWidth() { - return width; - } - - /* - * (non-Javadoc) - * - * @see com.itmill.toolkit.terminal.Sizeable#getWidthUnits() - */ - public int getWidthUnits() { - return widthUnit; - } - - /* - * (non-Javadoc) - * - * @see com.itmill.toolkit.terminal.Sizeable#setHeight(int) - */ - public void setHeight(int height) { - this.height = height; - requestRepaint(); - } - - /* - * (non-Javadoc) - * - * @see com.itmill.toolkit.terminal.Sizeable#setHeightUnits(int) - */ - public void setHeightUnits(int units) { - this.heightUnit = units; - requestRepaint(); - } - - /* - * (non-Javadoc) - * - * @see com.itmill.toolkit.terminal.Sizeable#setSizeFull() - */ - public void setSizeFull() { - height = 100; - width = 100; - heightUnit = UNITS_PERCENTAGE; - widthUnit = UNITS_PERCENTAGE; - requestRepaint(); - } - - /* - * (non-Javadoc) - * - * @see com.itmill.toolkit.terminal.Sizeable#setSizeUndefined() - */ - public void setSizeUndefined() { - height = -1; - width = -1; - heightUnit = UNITS_PIXELS; - widthUnit = UNITS_PIXELS; - requestRepaint(); - } - - /* - * (non-Javadoc) - * - * @see com.itmill.toolkit.terminal.Sizeable#setWidth(int) - */ - public void setWidth(int width) { - this.width = width; - requestRepaint(); - } - - /* - * (non-Javadoc) - * - * @see com.itmill.toolkit.terminal.Sizeable#setWidthUnits(int) - */ - public void setWidthUnits(int units) { - this.widthUnit = units; - requestRepaint(); - } /* * (non-Javadoc) @@ -194,14 +68,6 @@ public abstract class AbstractLayout extends AbstractComponentContainer target.addAttribute("marginBottom", margins[2]); if (margins[3]) target.addAttribute("marginLeft", margins[3]); - - // Add size info - if (getHeight() > -1) - target.addAttribute("height", getHeight() - + UNIT_SYMBOLS[getHeightUnits()]); - if (getWidth() > -1) - target.addAttribute("width", getWidth() - + UNIT_SYMBOLS[getWidthUnits()]); } } diff --git a/src/com/itmill/toolkit/ui/ExpandLayout.java b/src/com/itmill/toolkit/ui/ExpandLayout.java index 497035f8f8..c8bc8b23a0 100644 --- a/src/com/itmill/toolkit/ui/ExpandLayout.java +++ b/src/com/itmill/toolkit/ui/ExpandLayout.java @@ -25,6 +25,30 @@ public class ExpandLayout extends OrderedLayout implements Sizeable { private Component expanded; + /** + * Height of the layout. Set to -1 for undefined height. + */ + private int height = -1; + + /** + * Height unit. + * + * @see com.itmill.toolkit.terminal.Sizeable.UNIT_SYMBOLS; + */ + private int heightUnit = UNITS_PIXELS; + + /** + * Width of the layout. Set to -1 for undefined width. + */ + private int width = -1; + + /** + * Width unit. + * + * @see com.itmill.toolkit.terminal.Sizeable.UNIT_SYMBOLS; + */ + private int widthUnit = UNITS_PIXELS; + public ExpandLayout() { setSizeFull(); } @@ -48,6 +72,9 @@ public class ExpandLayout extends OrderedLayout implements Sizeable { } public void paintContent(PaintTarget target) throws PaintException { + + //TODO should we add margins? + // Size if (getHeight() >= 0) target.addAttribute("height", "" + getHeight() @@ -109,4 +136,106 @@ public class ExpandLayout extends OrderedLayout implements Sizeable { expanded = newComponent; } + /* + * (non-Javadoc) + * + * @see com.itmill.toolkit.terminal.Sizeable#getHeight() + */ + public int getHeight() { + return height; + } + + /* + * (non-Javadoc) + * + * @see com.itmill.toolkit.terminal.Sizeable#getHeightUnits() + */ + public int getHeightUnits() { + return heightUnit; + } + + /* + * (non-Javadoc) + * + * @see com.itmill.toolkit.terminal.Sizeable#getWidth() + */ + public int getWidth() { + return width; + } + + /* + * (non-Javadoc) + * + * @see com.itmill.toolkit.terminal.Sizeable#getWidthUnits() + */ + public int getWidthUnits() { + return widthUnit; + } + + /* + * (non-Javadoc) + * + * @see com.itmill.toolkit.terminal.Sizeable#setHeight(int) + */ + public void setHeight(int height) { + this.height = height; + requestRepaint(); + } + + /* + * (non-Javadoc) + * + * @see com.itmill.toolkit.terminal.Sizeable#setHeightUnits(int) + */ + public void setHeightUnits(int units) { + this.heightUnit = units; + requestRepaint(); + } + + /* + * (non-Javadoc) + * + * @see com.itmill.toolkit.terminal.Sizeable#setSizeFull() + */ + public void setSizeFull() { + height = 100; + width = 100; + heightUnit = UNITS_PERCENTAGE; + widthUnit = UNITS_PERCENTAGE; + requestRepaint(); + } + + /* + * (non-Javadoc) + * + * @see com.itmill.toolkit.terminal.Sizeable#setSizeUndefined() + */ + public void setSizeUndefined() { + height = -1; + width = -1; + heightUnit = UNITS_PIXELS; + widthUnit = UNITS_PIXELS; + requestRepaint(); + } + + /* + * (non-Javadoc) + * + * @see com.itmill.toolkit.terminal.Sizeable#setWidth(int) + */ + public void setWidth(int width) { + this.width = width; + requestRepaint(); + } + + /* + * (non-Javadoc) + * + * @see com.itmill.toolkit.terminal.Sizeable#setWidthUnits(int) + */ + public void setWidthUnits(int units) { + this.widthUnit = units; + requestRepaint(); + } + } diff --git a/src/com/itmill/toolkit/ui/GridLayout.java b/src/com/itmill/toolkit/ui/GridLayout.java index f9ecdbe3b5..867e75b11a 100644 --- a/src/com/itmill/toolkit/ui/GridLayout.java +++ b/src/com/itmill/toolkit/ui/GridLayout.java @@ -101,33 +101,33 @@ public class GridLayout extends AbstractLayout { /** * Contained component should be aligned horizontally to the left. */ - private int ALIGNMENT_LEFT = 1; + public static final int ALIGNMENT_LEFT = 1; /** * Contained component should be aligned horizontally to the right. */ - private int ALIGNMENT_RIGHT = 2; + public static final int ALIGNMENT_RIGHT = 2; /** * Contained component should be aligned vertically to the top. */ - private int ALIGNMENT_TOP = 4; + public static final int ALIGNMENT_TOP = 4; /** * Contained component should be aligned vertically to the bottom. */ - private int ALIGNMENT_BOTTOM = 8; + public static final int ALIGNMENT_BOTTOM = 8; /** * Contained component should be horizontally aligned to center. */ - private int HORIZONTAL_ALIGNMENT_CENTER = 16; - + public static final int HORIZONTAL_ALIGNMENT_CENTER = 16; + /** * Contained component should be vertically aligned to center. */ - private int VERTICAL_ALIGNMENT_CENTER = 32; - + public static final int VERTICAL_ALIGNMENT_CENTER = 32; + /** * Is spacing between contained components enabled. Defaults to false. */ @@ -353,7 +353,7 @@ public class GridLayout extends AbstractLayout { components.remove(component); if (area != null) areas.remove(area); - + componentToAlignment.remove(component); requestRepaint(); @@ -404,7 +404,7 @@ public class GridLayout extends AbstractLayout { // TODO refactor attribute names in future release. target.addAttribute("h", rows); target.addAttribute("w", cols); - + if (this.spacing) target.addAttribute("spacing", this.spacing); @@ -825,7 +825,7 @@ public class GridLayout extends AbstractLayout { *

*/ public void setWidth(int width) { - super.setWidth(width); + // super.setWidth(width); } /** @@ -839,7 +839,8 @@ public class GridLayout extends AbstractLayout { *

*/ public int getWidth() { - return super.getWidth(); + // return super.getWidth(); + return -1; } /** @@ -893,7 +894,7 @@ public class GridLayout extends AbstractLayout { *

*/ public void setHeight(int height) { - super.setHeight(height); + // super.setHeight(height); } /** @@ -907,7 +908,8 @@ public class GridLayout extends AbstractLayout { *

*/ public int getHeight() { - return super.getHeight(); + // return super.getHeight(); + return -1; } /** diff --git a/src/com/itmill/toolkit/ui/Layout.java b/src/com/itmill/toolkit/ui/Layout.java index 53c4ed791d..245675f90b 100644 --- a/src/com/itmill/toolkit/ui/Layout.java +++ b/src/com/itmill/toolkit/ui/Layout.java @@ -42,7 +42,7 @@ import com.itmill.toolkit.terminal.Sizeable; * @VERSION@ * @since 3.0 */ -public interface Layout extends ComponentContainer, Sizeable { +public interface Layout extends ComponentContainer { /** * Enable layout margins. Affects all four sides of the layout. This will diff --git a/src/com/itmill/toolkit/ui/OrderedLayout.java b/src/com/itmill/toolkit/ui/OrderedLayout.java index 0b7cc04a09..a19c501b50 100644 --- a/src/com/itmill/toolkit/ui/OrderedLayout.java +++ b/src/com/itmill/toolkit/ui/OrderedLayout.java @@ -66,6 +66,8 @@ public class OrderedLayout extends AbstractLayout { */ private LinkedList components = new LinkedList(); + /* Child component alignments ************************************** */ + /** * Mapping from components to alignments (horizontal + vertical). */ @@ -94,12 +96,12 @@ public class OrderedLayout extends AbstractLayout { /** * Contained component should be horizontally aligned to center. */ - public static final int HORIZONTAL_ALIGNMENT_CENTER = 16; + public static final int ALIGNMENT_HORIZONTAL_CENTER = 16; /** * Contained component should be vertically aligned to center. */ - public static final int VERTICAL_ALIGNMENT_CENTER = 32; + public static final int ALIGNMENT_VERTICAL_CENTER = 32; /** * Orientation of the layout. @@ -219,6 +221,7 @@ public class OrderedLayout extends AbstractLayout { if (orientation == ORIENTATION_HORIZONTAL) target.addAttribute("orientation", "horizontal"); + // Add spacing attribute (omitted if false) if (this.spacing) target.addAttribute("spacing", this.spacing); diff --git a/src/com/itmill/toolkit/ui/Panel.java b/src/com/itmill/toolkit/ui/Panel.java index 151c968b38..9e8e686e64 100644 --- a/src/com/itmill/toolkit/ui/Panel.java +++ b/src/com/itmill/toolkit/ui/Panel.java @@ -39,6 +39,7 @@ import com.itmill.toolkit.terminal.KeyMapper; import com.itmill.toolkit.terminal.PaintException; import com.itmill.toolkit.terminal.PaintTarget; import com.itmill.toolkit.terminal.Scrollable; +import com.itmill.toolkit.terminal.Sizeable; /** * Panel - a simple single component container. @@ -48,13 +49,37 @@ import com.itmill.toolkit.terminal.Scrollable; * @VERSION@ * @since 3.0 */ -public class Panel extends AbstractLayout implements Scrollable, +public class Panel extends AbstractLayout implements Sizeable, Scrollable, ComponentContainer.ComponentAttachListener, ComponentContainer.ComponentDetachListener, Action.Container { public static final String STYLE_LIGHT = "light"; public static final String STYLE_EMPHASIZE = "emphasize"; + + /** + * Height of the layout. Set to -1 for undefined height. + */ + private int height = -1; + + /** + * Height unit. + * + * @see com.itmill.toolkit.terminal.Sizeable.UNIT_SYMBOLS; + */ + private int heightUnit = UNITS_PIXELS; + + /** + * Width of the layout. Set to -1 for undefined width. + */ + private int width = -1; + + /** + * Width unit. + * + * @see com.itmill.toolkit.terminal.Sizeable.UNIT_SYMBOLS; + */ + private int widthUnit = UNITS_PIXELS; /** * Layout of the panel. @@ -86,7 +111,7 @@ public class Panel extends AbstractLayout implements Scrollable, * Creates a new empty panel. Ordered layout is used. */ public Panel() { - this(new OrderedLayout()); + setLayout(null); } /** @@ -185,20 +210,7 @@ public class Panel extends AbstractLayout implements Scrollable, public void paintContent(PaintTarget target) throws PaintException { layout.paint(target); - // We need to add these attributes here (and not in super.paintContent), - // because Panel needs to have size information as variables. - - // Add margin info - if (margins == null) - setMargin(false); - if (margins[0]) - target.addAttribute("marginTop", margins[0]); - if (margins[1]) - target.addAttribute("marginRight", margins[1]); - if (margins[2]) - target.addAttribute("marginBottom", margins[2]); - if (margins[3]) - target.addAttribute("marginLeft", margins[3]); + super.paintContent(target); // Add size info as variables if (getHeight() > -1) @@ -479,5 +491,107 @@ public class Panel extends AbstractLayout implements Scrollable, requestRepaint(); } } + + /* + * (non-Javadoc) + * + * @see com.itmill.toolkit.terminal.Sizeable#getHeight() + */ + public int getHeight() { + return height; + } + + /* + * (non-Javadoc) + * + * @see com.itmill.toolkit.terminal.Sizeable#getHeightUnits() + */ + public int getHeightUnits() { + return heightUnit; + } + + /* + * (non-Javadoc) + * + * @see com.itmill.toolkit.terminal.Sizeable#getWidth() + */ + public int getWidth() { + return width; + } + + /* + * (non-Javadoc) + * + * @see com.itmill.toolkit.terminal.Sizeable#getWidthUnits() + */ + public int getWidthUnits() { + return widthUnit; + } + + /* + * (non-Javadoc) + * + * @see com.itmill.toolkit.terminal.Sizeable#setHeight(int) + */ + public void setHeight(int height) { + this.height = height; + requestRepaint(); + } + + /* + * (non-Javadoc) + * + * @see com.itmill.toolkit.terminal.Sizeable#setHeightUnits(int) + */ + public void setHeightUnits(int units) { + this.heightUnit = units; + requestRepaint(); + } + + /* + * (non-Javadoc) + * + * @see com.itmill.toolkit.terminal.Sizeable#setSizeFull() + */ + public void setSizeFull() { + height = 100; + width = 100; + heightUnit = UNITS_PERCENTAGE; + widthUnit = UNITS_PERCENTAGE; + requestRepaint(); + } + + /* + * (non-Javadoc) + * + * @see com.itmill.toolkit.terminal.Sizeable#setSizeUndefined() + */ + public void setSizeUndefined() { + height = -1; + width = -1; + heightUnit = UNITS_PIXELS; + widthUnit = UNITS_PIXELS; + requestRepaint(); + } + + /* + * (non-Javadoc) + * + * @see com.itmill.toolkit.terminal.Sizeable#setWidth(int) + */ + public void setWidth(int width) { + this.width = width; + requestRepaint(); + } + + /* + * (non-Javadoc) + * + * @see com.itmill.toolkit.terminal.Sizeable#setWidthUnits(int) + */ + public void setWidthUnits(int units) { + this.widthUnit = units; + requestRepaint(); + } } diff --git a/src/com/itmill/toolkit/ui/SplitPanel.java b/src/com/itmill/toolkit/ui/SplitPanel.java index cb9adc5eef..3ae1a90c73 100644 --- a/src/com/itmill/toolkit/ui/SplitPanel.java +++ b/src/com/itmill/toolkit/ui/SplitPanel.java @@ -45,7 +45,7 @@ import com.itmill.toolkit.terminal.Sizeable; * @VERSION@ * @since 5.0 */ -public class SplitPanel extends AbstractLayout { +public class SplitPanel extends AbstractLayout implements Sizeable { /* Predefined orientations ***************************************** */ @@ -72,6 +72,30 @@ public class SplitPanel extends AbstractLayout { private int posUnit = UNITS_PERCENTAGE; + /** + * Height of the layout. Set to -1 for undefined height. + */ + private int height = -1; + + /** + * Height unit. + * + * @see com.itmill.toolkit.terminal.Sizeable.UNIT_SYMBOLS; + */ + private int heightUnit = UNITS_PIXELS; + + /** + * Width of the layout. Set to -1 for undefined width. + */ + private int width = -1; + + /** + * Width unit. + * + * @see com.itmill.toolkit.terminal.Sizeable.UNIT_SYMBOLS; + */ + private int widthUnit = UNITS_PIXELS; + /** * Creates a new split panel. The orientation of the panels is * ORIENTATION_VERTICAL. @@ -210,13 +234,20 @@ public class SplitPanel extends AbstractLayout { * if the paint operation failed. */ public void paintContent(PaintTarget target) throws PaintException { - super.paintContent(target); String position = pos + UNIT_SYMBOLS[posUnit]; target.addAttribute("position", position); + // Add size info + if (getHeight() > -1) + target.addAttribute("height", getHeight() + + UNIT_SYMBOLS[getHeightUnits()]); + if (getWidth() > -1) + target.addAttribute("width", getWidth() + + UNIT_SYMBOLS[getWidthUnits()]); + if (firstComponent != null) firstComponent.paint(target); else @@ -278,11 +309,114 @@ public class SplitPanel extends AbstractLayout { * * @param pos * size of the first region - * @param unit the unit (from {@link Sizeable}) in which the size is given. + * @param unit + * the unit (from {@link Sizeable}) in which the size is given. */ public void setSplitPosition(int pos, int unit) { this.pos = pos; this.posUnit = unit; } + /* + * (non-Javadoc) + * + * @see com.itmill.toolkit.terminal.Sizeable#getHeight() + */ + public int getHeight() { + return height; + } + + /* + * (non-Javadoc) + * + * @see com.itmill.toolkit.terminal.Sizeable#getHeightUnits() + */ + public int getHeightUnits() { + return heightUnit; + } + + /* + * (non-Javadoc) + * + * @see com.itmill.toolkit.terminal.Sizeable#getWidth() + */ + public int getWidth() { + return width; + } + + /* + * (non-Javadoc) + * + * @see com.itmill.toolkit.terminal.Sizeable#getWidthUnits() + */ + public int getWidthUnits() { + return widthUnit; + } + + /* + * (non-Javadoc) + * + * @see com.itmill.toolkit.terminal.Sizeable#setHeight(int) + */ + public void setHeight(int height) { + this.height = height; + requestRepaint(); + } + + /* + * (non-Javadoc) + * + * @see com.itmill.toolkit.terminal.Sizeable#setHeightUnits(int) + */ + public void setHeightUnits(int units) { + this.heightUnit = units; + requestRepaint(); + } + + /* + * (non-Javadoc) + * + * @see com.itmill.toolkit.terminal.Sizeable#setSizeFull() + */ + public void setSizeFull() { + height = 100; + width = 100; + heightUnit = UNITS_PERCENTAGE; + widthUnit = UNITS_PERCENTAGE; + requestRepaint(); + } + + /* + * (non-Javadoc) + * + * @see com.itmill.toolkit.terminal.Sizeable#setSizeUndefined() + */ + public void setSizeUndefined() { + height = -1; + width = -1; + heightUnit = UNITS_PIXELS; + widthUnit = UNITS_PIXELS; + requestRepaint(); + } + + /* + * (non-Javadoc) + * + * @see com.itmill.toolkit.terminal.Sizeable#setWidth(int) + */ + public void setWidth(int width) { + this.width = width; + requestRepaint(); + } + + /* + * (non-Javadoc) + * + * @see com.itmill.toolkit.terminal.Sizeable#setWidthUnits(int) + */ + public void setWidthUnits(int units) { + this.widthUnit = units; + requestRepaint(); + } + } diff --git a/src/com/itmill/toolkit/ui/TabSheet.java b/src/com/itmill/toolkit/ui/TabSheet.java index aacdfb43d6..494310aa57 100644 --- a/src/com/itmill/toolkit/ui/TabSheet.java +++ b/src/com/itmill/toolkit/ui/TabSheet.java @@ -30,11 +30,15 @@ package com.itmill.toolkit.ui; import java.lang.reflect.Method; import java.util.Hashtable; -import java.util.LinkedList; import java.util.Iterator; +import java.util.LinkedList; import java.util.Map; -import com.itmill.toolkit.terminal.*; +import com.itmill.toolkit.terminal.KeyMapper; +import com.itmill.toolkit.terminal.PaintException; +import com.itmill.toolkit.terminal.PaintTarget; +import com.itmill.toolkit.terminal.Resource; +import com.itmill.toolkit.terminal.Sizeable; /** * Tabsheet component. @@ -44,14 +48,7 @@ import com.itmill.toolkit.terminal.*; * @VERSION@ * @since 3.0 */ -public class TabSheet extends AbstractLayout { - - /** - * Use this stylename with {@link #addStyleName(String)} to remove padding - * between TabSheet borders and content. The actual client-side - * implementation will determine which stylenames it implements. - */ - public static final String STYLE_NO_PADDING = "nopad"; +public class TabSheet extends AbstractLayout implements Sizeable { /** * Linked list of component tabs. @@ -80,6 +77,30 @@ public class TabSheet extends AbstractLayout { */ private boolean tabsHidden; + /** + * Height of the layout. Set to -1 for undefined height. + */ + private int height = -1; + + /** + * Height unit. + * + * @see com.itmill.toolkit.terminal.Sizeable.UNIT_SYMBOLS; + */ + private int heightUnit = UNITS_PIXELS; + + /** + * Width of the layout. Set to -1 for undefined width. + */ + private int width = -1; + + /** + * Width unit. + * + * @see com.itmill.toolkit.terminal.Sizeable.UNIT_SYMBOLS; + */ + private int widthUnit = UNITS_PIXELS; + /** * Constructs a new Tabsheet. Tabsheet is immediate by default. */ @@ -199,7 +220,15 @@ public class TabSheet extends AbstractLayout { */ public void paintContent(PaintTarget target) throws PaintException { super.paintContent(target); - + + // Add size info + if (getHeight() > -1) + target.addAttribute("height", getHeight() + + UNIT_SYMBOLS[getHeightUnits()]); + if (getWidth() > -1) + target.addAttribute("width", getWidth() + + UNIT_SYMBOLS[getWidthUnits()]); + if (areTabsHidden()) target.addAttribute("hidetabs", true); @@ -492,4 +521,106 @@ public class TabSheet extends AbstractLayout { fireEvent(new SelectedTabChangeEvent(this)); } + /* + * (non-Javadoc) + * + * @see com.itmill.toolkit.terminal.Sizeable#getHeight() + */ + public int getHeight() { + return height; + } + + /* + * (non-Javadoc) + * + * @see com.itmill.toolkit.terminal.Sizeable#getHeightUnits() + */ + public int getHeightUnits() { + return heightUnit; + } + + /* + * (non-Javadoc) + * + * @see com.itmill.toolkit.terminal.Sizeable#getWidth() + */ + public int getWidth() { + return width; + } + + /* + * (non-Javadoc) + * + * @see com.itmill.toolkit.terminal.Sizeable#getWidthUnits() + */ + public int getWidthUnits() { + return widthUnit; + } + + /* + * (non-Javadoc) + * + * @see com.itmill.toolkit.terminal.Sizeable#setHeight(int) + */ + public void setHeight(int height) { + this.height = height; + requestRepaint(); + } + + /* + * (non-Javadoc) + * + * @see com.itmill.toolkit.terminal.Sizeable#setHeightUnits(int) + */ + public void setHeightUnits(int units) { + this.heightUnit = units; + requestRepaint(); + } + + /* + * (non-Javadoc) + * + * @see com.itmill.toolkit.terminal.Sizeable#setSizeFull() + */ + public void setSizeFull() { + height = 100; + width = 100; + heightUnit = UNITS_PERCENTAGE; + widthUnit = UNITS_PERCENTAGE; + requestRepaint(); + } + + /* + * (non-Javadoc) + * + * @see com.itmill.toolkit.terminal.Sizeable#setSizeUndefined() + */ + public void setSizeUndefined() { + height = -1; + width = -1; + heightUnit = UNITS_PIXELS; + widthUnit = UNITS_PIXELS; + requestRepaint(); + } + + /* + * (non-Javadoc) + * + * @see com.itmill.toolkit.terminal.Sizeable#setWidth(int) + */ + public void setWidth(int width) { + this.width = width; + requestRepaint(); + } + + /* + * (non-Javadoc) + * + * @see com.itmill.toolkit.terminal.Sizeable#setWidthUnits(int) + */ + public void setWidthUnits(int units) { + this.widthUnit = units; + requestRepaint(); + } + } -- 2.39.5