| /* |
| * 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; |
| } |
| } |