package com.vitco.util.components.dialog.components;
import com.jidesoft.swing.JideLabel;
import com.vitco.util.components.dialog.BlankDialogModule;
import javax.swing.*;
import javax.swing.text.View;
import java.awt.*;
/**
* A simple label module
*/
public class LabelModule extends BlankDialogModule {
private static final JLabel resizer = new JLabel();
// Returns the preferred size to set a component at in order to render an html string.
// Allows to specify the size of one dimension.
public static Dimension getPreferredSize(String html, boolean width, int prefSize) {
resizer.setText(html);
View view = (View) resizer.getClientProperty(javax.swing.plaf.basic.BasicHTML.propertyKey);
view.setSize(width ? prefSize : 0, width ? 0 : prefSize);
float w = view.getPreferredSpan(View.X_AXIS);
float h = view.getPreferredSpan(View.Y_AXIS);
return new java.awt.Dimension((int) Math.ceil(w), (int) Math.ceil(h));
}
// constructor
public LabelModule(String text) {
super("");
setLayout(new BorderLayout());
JideLabel label = new JideLabel("<html>" + text);
this.add(label, BorderLayout.WEST);
// set the size (so it is not dynamic!)
// this is very important to have the height constant when the object is not rendered yet
Dimension prefSize = getPreferredSize(label.getText(), true, 450);
label.setPreferredSize(prefSize);
}
@Override
public String getValue(String identifier) {
// nothing to return
return null;
}
}