blob: c4bd0556e4c10e1f67eb3d8bf8da0c70f69bb1ba [file] [log] [blame]
/*
* Copyright 2000-2014 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.util.xml.ui;
import com.intellij.openapi.util.Disposer;
import com.intellij.ui.JBColor;
import com.intellij.util.xml.DomElement;
import javax.swing.*;
import java.awt.*;
/**
* User: Sergey.Vasiliev
*/
public class CaptionComponent extends JPanel implements Committable, Highlightable {
private JPanel myRootPanel;
private JLabel myCaptionLabel;
private JLabel myDescriptionLabel;
private JLabel myIconLabel;
private JPanel myErrorPanel;
private CommittablePanel myCommittableErrorPanel;
private boolean myBordered = true;
public CaptionComponent() {
this(null);
}
public CaptionComponent(String text) {
this(text, null);
}
public CaptionComponent(String text, Icon icon) {
super(new BorderLayout());
updateBorder();
myRootPanel.setBackground(new JBColor(new Color(243, 244, 229), new Color(42, 55, 62)));
add(myRootPanel, BorderLayout.CENTER);
setText(text);
setIcon(icon);
}
private void updateBorder() {
if (myBordered) {
myRootPanel.setBorder(BorderFactory.createMatteBorder(0, 0, 1, 0, JBColor.LIGHT_GRAY));
}
else {
myRootPanel.setBorder(BorderFactory.createEmptyBorder());
}
}
@Override
public void updateHighlighting() {
CommittableUtil.updateHighlighting(myCommittableErrorPanel);
}
public void setText(final String text) {
if (text == null) return;
myCaptionLabel.setText(text);
}
public String getText() {
return myCaptionLabel.getText();
}
public void setIcon(final Icon icon) {
myIconLabel.setVisible(icon != null);
myIconLabel.setIcon(icon);
}
public Icon getIcon() {
return myIconLabel.getIcon();
}
public boolean isBordered() {
return myBordered;
}
public String getDescriptionText() {
return myDescriptionLabel.getText();
}
public void setDescriptionText(final String text) {
myDescriptionLabel.setVisible(text != null && text.trim().length() > 0);
myDescriptionLabel.setText(text);
}
public final void setBordered(final boolean bordered) {
myBordered = bordered;
updateBorder();
}
@Override
public final void commit() {
}
@Override
public void reset() {
if (myCommittableErrorPanel != null) myCommittableErrorPanel.reset();
}
@Override
public final void dispose() {
}
public void initErrorPanel(final DomElement... elements) {
DomUIFactory.getDomUIFactory().addErrorPanel(this, elements);
}
public void initErrorPanel(final CommittablePanel errorPanel) {
myCommittableErrorPanel = errorPanel;
Disposer.register(this, errorPanel);
final JComponent component = errorPanel.getComponent();
component.setBackground(getBackground());
myErrorPanel.setLayout(new BorderLayout());
myErrorPanel.add(component, BorderLayout.CENTER);
}
}