blob: 2414857c1646dff97275d6d3981379d7f8afab8c [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 com.intellij.uiDesigner.UIFormXmlConstants;
import org.jdom.Element;
import java.awt.*;
/**
* @author Anton Katilin
* @author Vladimir Kondratyev
*/
public final class LwTabbedPane extends LwContainer implements ITabbedPane {
public LwTabbedPane(String className) {
super(className);
}
protected LayoutManager createInitialLayout() {
return null;
}
public void read(final Element element, final PropertiesProvider provider) throws Exception {
readNoLayout(element, provider);
}
protected void readConstraintsForChild(final Element element, final LwComponent component) {
final Element constraintsElement = LwXmlReader.getRequiredChild(element, UIFormXmlConstants.ELEMENT_CONSTRAINTS);
final Element tabbedPaneChild = LwXmlReader.getRequiredChild(constraintsElement, UIFormXmlConstants.ELEMENT_TABBEDPANE);
final StringDescriptor descriptor = LwXmlReader.getStringDescriptor(tabbedPaneChild,
UIFormXmlConstants.ATTRIBUTE_TITLE,
UIFormXmlConstants.ATTRIBUTE_TITLE_RESOURCE_BUNDLE,
UIFormXmlConstants.ATTRIBUTE_TITLE_KEY);
if (descriptor == null) {
throw new IllegalArgumentException("String descriptor value required");
}
final Constraints constraints = new Constraints(descriptor);
final Element tooltipElement = LwXmlReader.getChild(tabbedPaneChild, UIFormXmlConstants.ELEMENT_TOOLTIP);
if (tooltipElement != null) {
constraints.myToolTip = LwXmlReader.getStringDescriptor(tooltipElement,
UIFormXmlConstants.ATTRIBUTE_VALUE,
UIFormXmlConstants.ATTRIBUTE_RESOURCE_BUNDLE,
UIFormXmlConstants.ATTRIBUTE_KEY);
}
String icon = tabbedPaneChild.getAttributeValue(UIFormXmlConstants.ATTRIBUTE_ICON);
if (icon != null) {
constraints.myIcon = new IconDescriptor(icon);
}
icon = tabbedPaneChild.getAttributeValue(UIFormXmlConstants.ATTRIBUTE_DISABLED_ICON);
if (icon != null) {
constraints.myDisabledIcon = new IconDescriptor(icon);
}
constraints.myEnabled = LwXmlReader.getOptionalBoolean(tabbedPaneChild, UIFormXmlConstants.ATTRIBUTE_ENABLED, true);
component.setCustomLayoutConstraints(constraints);
}
public static final class Constraints {
/**
* never null
*/
public StringDescriptor myTitle;
public StringDescriptor myToolTip;
public IconDescriptor myIcon;
public IconDescriptor myDisabledIcon;
public boolean myEnabled = true;
public Constraints(final StringDescriptor title){
if (title == null){
throw new IllegalArgumentException("title cannot be null");
}
myTitle = title;
}
public StringDescriptor getProperty(final String propName) {
if (propName.equals(TAB_TITLE_PROPERTY)) {
return myTitle;
}
if (propName.equals(TAB_TOOLTIP_PROPERTY)) {
return myToolTip;
}
throw new IllegalArgumentException("Unknown property name " + propName);
}
}
public StringDescriptor getTabProperty(IComponent component, final String propName) {
LwComponent lwComponent = (LwComponent) component;
LwTabbedPane.Constraints constraints = (LwTabbedPane.Constraints) lwComponent.getCustomLayoutConstraints();
if (constraints == null) {
return null;
}
return constraints.getProperty(propName);
}
public boolean areChildrenExclusive() {
return true;
}
}