import chemaxon.marvin.beans.MSketchPane;
import chemaxon.struc.CTransform3D;
import chemaxon.struc.MDocument;
import chemaxon.struc.MPoint;
import chemaxon.struc.Molecule;
import chemaxon.struc.graphics.MFont;
import chemaxon.struc.graphics.MRectangle;
import chemaxon.struc.graphics.MTextAttributes;
import chemaxon.struc.graphics.MTextBox;
import chemaxon.struc.graphics.MTextDocument;
import java.awt.BorderLayout;
import java.awt.Color;
import javax.swing.JFrame;
import javax.swing.JPanel;
http://www.chemaxon.com/marvin/examples/beans/mtextbox/index.html
@author
@version
@since
public class MTextBoxExample extends JPanel {
private MTextBoxExample() {
Molecule mol = new Molecule();
MTextBox textBox = initTextBox(mol);
initTextBoxContent(textBox.getTextDocument());
MPoint p1 = new MPoint(0, 0);
MPoint p2 = new MPoint(10.2, -5);
textBox.setCorners(p1, p2);
CTransform3D ctrans=new CTransform3D();
ctrans.setEuler(0, 0, 45);
textBox.setTCenter(MRectangle.P_CENTER);
textBox.transform(ctrans, 0, null);
MSketchPane msketchPane = new MSketchPane();
msketchPane.setMol(mol);
setLayout(new BorderLayout());
add(msketchPane, BorderLayout.CENTER);
}
@param
@return
private MTextBox initTextBox(Molecule mol) {
MDocument md = mol.getDocument();
if (md == null) {
md = new MDocument(mol);
}
MTextBox textBox = new MTextBox();
md.addObject(textBox);
return textBox;
}
@param
private void initTextBoxContent(MTextDocument textDocument) {
MFont mf = new MFont("SansSerif", MFont.PLAIN, 12);
MFont italicMf = new MFont("SansSerif", MFont.ITALIC, 12);
MFont boldMf = new MFont("SansSerif", MFont.BOLD, 12);
MFont boldItalicMf = new MFont(mf.getFamily(), MFont.ITALIC | MFont.BOLD, mf.getSizeDouble());
MTextAttributes defaultMta = new MTextAttributes(0, 0, Color.black, mf, 1, 0, 0);
MTextAttributes redMta = new MTextAttributes(0, 0, Color.red, mf, 1, 0, 0);
MTextAttributes italicMta = new MTextAttributes(0, 0, Color.black, italicMf, 1, 0, 0);
MTextAttributes boldMta = new MTextAttributes(0, 0, Color.black, boldMf, 1, 0, 0);
MTextAttributes blueBoldMta = new MTextAttributes(0, 0, Color.blue, boldMf, 1, 0, 0);
MTextAttributes boldItalicMta = new MTextAttributes(0, 0, Color.black, boldItalicMf, 1, 0, 0);
MTextAttributes superScriptMta = new MTextAttributes(0, MTextAttributes.DEFAULT_SUPERSCRIPT_SUBLEVEL, Color.black, mf, MTextAttributes.DEFAULT_SUPERSCRIPT_SCALE, 0, MTextAttributes.DEFAULT_SUPERSCRIPT_DELTAY);
MTextAttributes subScriptMta = new MTextAttributes(0, -MTextAttributes.DEFAULT_SUPERSCRIPT_SUBLEVEL, Color.black, mf, MTextAttributes.DEFAULT_SUPERSCRIPT_SCALE, 0, -MTextAttributes.DEFAULT_SUPERSCRIPT_DELTAY);
textDocument.append("The element", defaultMta);
textDocument.append(" hydrogen", redMta);
textDocument.append(" has three isotopes:", boldMta);
textDocument.append(" H", defaultMta);
textDocument.append("1 ", superScriptMta);
textDocument.append("1 ", subScriptMta);
textDocument.append(", D", defaultMta);
textDocument.append("2 ", superScriptMta);
textDocument.append("1 ", subScriptMta);
textDocument.append("and T", defaultMta);
textDocument.append("3 ", superScriptMta);
textDocument.append("1 ", subScriptMta);
textDocument.append(". They're being called ", defaultMta);
textDocument.append(" hydrogen,", italicMta);
textDocument.append(" deuterium", blueBoldMta);
textDocument.append(" and", defaultMta);
textDocument.append(" tricium.", boldItalicMta);
}
private static void createAndShowGUI() {
JFrame frame = new JFrame();
frame.setTitle("MTextBox Example");
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
final MTextBoxExample textBoxExample = new MTextBoxExample();
frame.getContentPane().setLayout(new BorderLayout());
frame.getContentPane().add(textBoxExample, BorderLayout.CENTER);
frame.pack();
frame.setLocationRelativeTo(null);
frame.setVisible(true);
}
public static void main(String[] args) {
javax.swing.SwingUtilities.invokeLater(new Runnable() {
public void run() {
createAndShowGUI();
}
});
}
}