package jetbrains.mps.nodeEditor;
import jetbrains.mps.openapi.editor.cells.EditorCell;
import org.jetbrains.annotations.NotNull;
import javax.swing.JComponent;
import java.awt.Dimension;
/**
* Created with IntelliJ IDEA.
* User: Simon
* Date: 8/28/13
* Time: 9:22 PM
* To change this template use File | Settings | File Templates.
*/
public interface EditorCell_WithComponent extends EditorCell {
@NotNull
JComponent getComponent();
/**
* Update the component's size. Called by {@link EditorComponentLayoutManager} when the editor component is being laid out.
* If the cell size should change as a result, call {@link #requestRelayout()}.
* <p>
* The default implementation validates the component, then sets the component size to its preferred size if it differs.
*/
default void layoutComponent() {
JComponent component = getComponent();
component.validate();
Dimension preferredSize = component.getPreferredSize();
if (component.getSize().equals(preferredSize)) {
return;
}
component.setSize(preferredSize);
requestRelayout();
}
}