/* * Copyright 2000-2009 JetBrains s.r.o. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package com.intellij.uiDesigner.lw; import org.jdom.Element; import com.intellij.uiDesigner.UIFormXmlConstants; import com.intellij.uiDesigner.core.GridLayoutManager; import com.intellij.uiDesigner.core.GridConstraints; import java.awt.*; /** * @author yole */ public class GridLayoutSerializer extends LayoutSerializer { protected GridLayoutSerializer() { } public static GridLayoutSerializer INSTANCE = new GridLayoutSerializer(); void readLayout(Element element, LwContainer container) { final int rowCount = LwXmlReader.getRequiredInt(element, UIFormXmlConstants.ATTRIBUTE_ROW_COUNT); final int columnCount = LwXmlReader.getRequiredInt(element, UIFormXmlConstants.ATTRIBUTE_COLUMN_COUNT); final int hGap = LwXmlReader.getOptionalInt(element, UIFormXmlConstants.ATTRIBUTE_HGAP, -1); final int vGap = LwXmlReader.getOptionalInt(element, UIFormXmlConstants.ATTRIBUTE_VGAP, -1); // attribute is optional for compatibility with IDEA 4.0 forms final boolean sameSizeHorizontally = LwXmlReader.getOptionalBoolean(element, UIFormXmlConstants.ATTRIBUTE_SAME_SIZE_HORIZONTALLY, false); final boolean sameSizeVertically = LwXmlReader.getOptionalBoolean(element, UIFormXmlConstants.ATTRIBUTE_SAME_SIZE_VERTICALLY, false); final Element marginElement = LwXmlReader.getRequiredChild(element, "margin"); final Insets margin = new Insets( LwXmlReader.getRequiredInt(marginElement,"top"), LwXmlReader.getRequiredInt(marginElement,"left"), LwXmlReader.getRequiredInt(marginElement,"bottom"), LwXmlReader.getRequiredInt(marginElement,"right") ); final GridLayoutManager layout = new GridLayoutManager(rowCount, columnCount); layout.setMargin(margin); layout.setVGap(vGap); layout.setHGap(hGap); layout.setSameSizeHorizontally(sameSizeHorizontally); layout.setSameSizeVertically(sameSizeVertically); container.setLayout(layout); } void readChildConstraints(final Element constraintsElement, final LwComponent component) { // Read Grid constraints final Element gridElement = LwXmlReader.getChild(constraintsElement, "grid"); if(gridElement != null){ final GridConstraints constraints=new GridConstraints(); constraints.setRow(LwXmlReader.getRequiredInt(gridElement, "row")); constraints.setColumn(LwXmlReader.getRequiredInt(gridElement, "column")); constraints.setRowSpan(LwXmlReader.getRequiredInt(gridElement, "row-span")); constraints.setColSpan(LwXmlReader.getRequiredInt(gridElement, "col-span")); constraints.setVSizePolicy(LwXmlReader.getRequiredInt(gridElement, "vsize-policy")); constraints.setHSizePolicy(LwXmlReader.getRequiredInt(gridElement, "hsize-policy")); constraints.setAnchor(LwXmlReader.getRequiredInt(gridElement, "anchor")); constraints.setFill(LwXmlReader.getRequiredInt(gridElement, "fill")); constraints.setIndent(LwXmlReader.getOptionalInt(gridElement, UIFormXmlConstants.ATTRIBUTE_INDENT, 0)); constraints.setUseParentLayout(LwXmlReader.getOptionalBoolean(gridElement, UIFormXmlConstants.ATTRIBUTE_USE_PARENT_LAYOUT, false)); // minimum size final Element minSizeElement = LwXmlReader.getChild(gridElement, "minimum-size"); if (minSizeElement != null) { constraints.myMinimumSize.width = LwXmlReader.getRequiredInt(minSizeElement, "width"); constraints.myMinimumSize.height = LwXmlReader.getRequiredInt(minSizeElement, "height"); } // preferred size final Element prefSizeElement = LwXmlReader.getChild(gridElement, "preferred-size"); if (prefSizeElement != null) { constraints.myPreferredSize.width = LwXmlReader.getRequiredInt(prefSizeElement, "width"); constraints.myPreferredSize.height = LwXmlReader.getRequiredInt(prefSizeElement, "height"); } // maximum size final Element maxSizeElement = LwXmlReader.getChild(gridElement, "maximum-size"); if (maxSizeElement != null) { constraints.myMaximumSize.width = LwXmlReader.getRequiredInt(maxSizeElement, "width"); constraints.myMaximumSize.height = LwXmlReader.getRequiredInt(maxSizeElement, "height"); } component.getConstraints().restore(constraints); } } }