/*
*
* Copyright ( c ) 2007 , 2011 , Oracle and / or its affiliates . All rights reserved .
*
* Redistribution and use in source and binary forms , with or without
* modification , are permitted provided that the following conditions
* are met :
*
* - Redistributions of source code must retain the above copyright
* notice , this list of conditions and the following disclaimer .
*
* - Redistributions in binary form must reproduce the above copyright
* notice , this list of conditions and the following disclaimer in the
* documentation and / or other materials provided with the distribution .
*
* - Neither the name of Oracle nor the names of its
* contributors may be used to endorse or promote products derived
* from this software without specific prior written permission .
*
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS " AS
* IS " AND ANY EXPRESS OR IMPLIED WARRANTIES , INCLUDING , BUT NOT LIMITED TO ,
* THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
* PURPOSE ARE DISCLAIMED . IN NO EVENT SHALL THE COPYRIGHT OWNER OR
* CONTRIBUTORS BE LIABLE FOR ANY DIRECT , INDIRECT , INCIDENTAL , SPECIAL ,
* EXEMPLARY , OR CONSEQUENTIAL DAMAGES ( INCLUDING , BUT NOT LIMITED TO ,
* PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES ; LOSS OF USE , DATA , OR
* PROFITS ; OR BUSINESS INTERRUPTION ) HOWEVER CAUSED AND ON ANY THEORY OF
* LIABILITY , WHETHER IN CONTRACT , STRICT LIABILITY , OR TORT ( INCLUDING
* NEGLIGENCE OR OTHERWISE ) ARISING IN ANY WAY OUT OF THE USE OF THIS
* SOFTWARE , EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE .
*/
import java.awt.Color;
import java.util.HashMap;
import java.util.Locale;
import java.util.MissingResourceException;
import java.util.ResourceBundle;
import javax.swing.Icon;
import javax.swing.ImageIcon;
import javax.swing.text.BadLocationException;
import javax.swing.text.DefaultStyledDocument;
import javax.swing.text.Style;
import javax.swing.text.StyleConstants;
import javax.swing.text.StyleContext;
/**
* hack to load attributed content .
*/
public class HelloWorld {
HelloWorld(DefaultStyledDocument doc, StyleContext styles) {
this .doc = doc;
this .styles = styles;
runAttr = new HashMap<String, Style>();
}
void loadDocument() {
createStyles();
for (int i = 0 ; i < data.length; i++) {
Paragraph p = data[i];
addParagraph(p);
}
}
void addParagraph(Paragraph p) {
try {
Style s = null ;
for (int i = 0 ; i < p.data.length; i++) {
Run run = p.data[i];
s = runAttr.get(run.attr);
doc.insertString(doc.getLength(), run.content, s);
}
// set logical style
Style ls = styles.getStyle(p.logical);
doc.setLogicalStyle(doc.getLength() - 1 , ls);
doc.insertString(doc.getLength(), "\n" , null );
} catch (BadLocationException e) {
System.err.println("Internal error: " + e);
}
}
void createStyles() {
// no attributes defined
Style s = styles.addStyle(null , null );
runAttr.put("none" , s);
s = styles.addStyle(null , null );
StyleConstants.setItalic(s, true );
StyleConstants.setForeground(s, new Color(153 , 153 , 102 ));
runAttr.put("cquote" , s); // catepillar quote
s = styles.addStyle(null , null );
StyleConstants.setItalic(s, true );
StyleConstants.setForeground(s, new Color(51 , 102 , 153 ));
runAttr.put("aquote" , s); // alice quote
try {
ResourceBundle resources = ResourceBundle.getBundle(
"resources.Stylepad" ,
Locale.getDefault());
s = styles.addStyle(null , null );
Icon alice = new ImageIcon(resources.getString("aliceGif" ));
StyleConstants.setIcon(s, alice);
runAttr.put("alice" , s); // alice
s = styles.addStyle(null , null );
Icon caterpillar = new ImageIcon(resources.getString(
"caterpillarGif" ));
StyleConstants.setIcon(s, caterpillar);
runAttr.put("caterpillar" , s); // caterpillar
s = styles.addStyle(null , null );
Icon hatter = new ImageIcon(resources.getString("hatterGif" ));
StyleConstants.setIcon(s, hatter);
runAttr.put("hatter" , s); // hatter
} catch (MissingResourceException mre) {
// can't display image
}
Style def = styles.getStyle(StyleContext.DEFAULT_STYLE);
Style heading = styles.addStyle("heading" , def);
//StyleConstants.setFontFamily(heading, "SansSerif");
StyleConstants.setBold(heading, true );
StyleConstants.setAlignment(heading, StyleConstants.ALIGN_CENTER);
StyleConstants.setSpaceAbove(heading, 10 );
StyleConstants.setSpaceBelow(heading, 10 );
StyleConstants.setFontSize(heading, 18 );
// Title
Style sty = styles.addStyle("title" , heading);
StyleConstants.setFontSize(sty, 32 );
// edition
sty = styles.addStyle("edition" , heading);
StyleConstants.setFontSize(sty, 16 );
// author
sty = styles.addStyle("author" , heading);
StyleConstants.setItalic(sty, true );
StyleConstants.setSpaceBelow(sty, 25 );
// subtitle
sty = styles.addStyle("subtitle" , heading);
StyleConstants.setSpaceBelow(sty, 35 );
// normal
sty = styles.addStyle("normal" , def);
StyleConstants.setLeftIndent(sty, 10 );
StyleConstants.setRightIndent(sty, 10 );
//StyleConstants.setFontFamily(sty, "SansSerif");
StyleConstants.setFontSize(sty, 14 );
StyleConstants.setSpaceAbove(sty, 4 );
StyleConstants.setSpaceBelow(sty, 4 );
}
DefaultStyledDocument doc;
StyleContext styles;
HashMap<String, Style> runAttr;
static class Paragraph {
Paragraph(String logical, Run[] data) {
this .logical = logical;
this .data = data;
}
String logical;
Run[] data;
}
static class Run {
Run(String attr, String content) {
this .attr = attr;
this .content = content;
}
String attr;
String content;
}
Paragraph[] data = new Paragraph[] {
new Paragraph("title" , new Run[] {
new Run("none" , "Hello from Cupertino" )
}),
new Paragraph("title" , new Run[] {
new Run("none" , "\u53F0\u5317\u554F\u5019\u60A8\u0021" )
}),
new Paragraph("title" , new Run[] {
new Run("none" , "\u0391\u03B8\u03B7\u03BD\u03B1\u03B9\u0020" // Greek
+ "\u03B1\u03C3\u03C0\u03B1\u03B6\u03BF\u03BD"
+ "\u03C4\u03B1\u03B9\u0020\u03C5\u03BC\u03B1"
+ "\u03C2\u0021" )
}),
new Paragraph("title" , new Run[] {
new Run("none" , "\u6771\u4eac\u304b\u3089\u4eca\u65e5\u306f" )
}),
new Paragraph("title" , new Run[] {
new Run("none" , "\u05e9\u05dc\u05d5\u05dd \u05de\u05d9\u05e8\u05d5"
+ "\u05e9\u05dc\u05d9\u05dd" )
}),
new Paragraph("title" , new Run[] {
new Run("none" , "\u0633\u0644\u0627\u0645" )
}), };
}
Messung V0.5 in Prozent C=89 H=94 G=91
¤ Dauer der Verarbeitung: 0.5 Sekunden
¤
*© Formatika GbR, Deutschland