blob: 274daa9f1e6fcbb4473992456a0e7bdfbafbd584 [file] [log] [blame]
/*
* 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);
}
}
}