blob: bfa546d008db08c461821b806e715dca78639189 [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.execution.ui.layout.impl;
import com.intellij.execution.ui.layout.Tab;
import com.intellij.execution.ui.layout.PlaceInGrid;
import com.intellij.util.xmlb.XmlSerializer;
import org.jdom.Element;
import javax.swing.*;
public class TabImpl extends AbstractTab implements Tab {
public TabImpl(Element element) {
read(element);
}
public void read(final Element element) {
XmlSerializer.deserializeInto(this, element);
}
TabImpl() {
}
@Override
public int getIndex() {
return myIndex;
}
@Override
public int getDefaultIndex() {
return myDefaultIndex >= 0 ? myDefaultIndex : myIndex;
}
public String getDisplayName() {
return myDisplayName;
}
public Icon getIcon() {
return myIcon;
}
public void setIndex(final int index) {
myIndex = index;
}
public void setDefaultIndex(final int index) {
myDefaultIndex = index;
}
public void setDisplayName(final String displayName) {
myDisplayName = displayName;
}
public void write(final Element parentNode) {
final Element element = XmlSerializer.serialize(this);
parentNode.addContent(element);
}
public float getLeftProportion() {
return myLeftProportion;
}
public void setLeftProportion(final float leftProportion) {
if (leftProportion < 0 || leftProportion > 1.0) return;
myLeftProportion = leftProportion;
}
public float getRightProportion() {
return myRightProportion;
}
public void setRightProportion(final float rightProportion) {
if (rightProportion < 0 || rightProportion > 1.0) return;
myRightProportion = rightProportion;
}
public float getBottomProportion() {
return myBottomProportion;
}
public void setBottomProportion(final float bottomProportion) {
if (bottomProportion < 0 || bottomProportion > 1.0) return;
myBottomProportion = bottomProportion;
}
public boolean isLeftDetached() {
return myLeftDetached;
}
public void setLeftDetached(final boolean leftDetached) {
myLeftDetached = leftDetached;
}
public boolean isCenterDetached() {
return myCenterDetached;
}
public void setCenterDetached(final boolean centerDetached) {
myCenterDetached = centerDetached;
}
public boolean isRightDetached() {
return myRightDetached;
}
public void setRightDetached(final boolean rightDetached) {
myRightDetached = rightDetached;
}
public boolean isBottomDetached() {
return myBottomDetached;
}
public void setBottomDetached(final boolean bottomDetached) {
myBottomDetached = bottomDetached;
}
@Override
public boolean isDefault() {
return myIndex == 0;
}
@Override
public boolean isDetached(PlaceInGrid place) {
switch (place) {
case bottom:
return isBottomDetached();
case center:
return isCenterDetached();
case left:
return isLeftDetached();
case right:
return isRightDetached();
}
return false;
}
@Override
public void setDetached(PlaceInGrid place, boolean detached) {
switch (place) {
case bottom:
setBottomDetached(detached);
break;
case center:
setCenterDetached(detached);
break;
case left:
setLeftDetached(detached);
break;
case right:
setRightDetached(detached);
break;
}
}
public static class Default extends AbstractTab {
public Default(final int index, final String displayName, final Icon icon) {
myIndex = index;
myDefaultIndex = index;
myDisplayName = displayName;
myIcon = icon;
}
public TabImpl createTab() {
final TabImpl tab = new TabImpl();
tab.copyFrom(this);
return tab;
}
}
}