/*
* This file is part of the Echo Web Application Framework (hereinafter "Echo").
* Copyright (C) 2002-2009 NextApp, Inc.
*
* Version: MPL 1.1/GPL 2.0/LGPL 2.1
*
* The contents of this file are subject to the Mozilla Public License Version
* 1.1 (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.mozilla.org/MPL/
*
* Software distributed under the License is distributed on an "AS IS" basis,
* WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
* for the specific language governing rights and limitations under the
* License.
*
* Alternatively, the contents of this file may be used under the terms of
* either the GNU General Public License Version 2 or later (the "GPL"), or
* the GNU Lesser General Public License Version 2.1 or later (the "LGPL"),
* in which case the provisions of the GPL or the LGPL are applicable instead
* of those above. If you wish to allow use of your version of this file only
* under the terms of either the GPL or the LGPL, and not to allow others to
* use your version of this file under the terms of the MPL, indicate your
* decision by deleting the provisions above and replace them with the notice
* and other provisions required by the GPL or the LGPL. If you do not delete
* the provisions above, a recipient may use your version of this file under
* the terms of any one of the MPL, the GPL or the LGPL.
*/
package nextapp.echo2.testapp.interactive;
import nextapp.echo2.app.Alignment;
import nextapp.echo2.app.Border;
import nextapp.echo2.app.Color;
import nextapp.echo2.app.Extent;
import nextapp.echo2.app.Font;
/**
*
*/
public class StyleUtil {
public static final String QUASI_LATIN_TEXT_1 =
"Ymo, lobortis camur qui typicus voco. Jugis similis wisi singularis dolor suscipit. " +
"Fatua premo regula fatua huic, vereor dolus aptent tego, quidne vero valetudo esse enim exerci. " +
"Refero quae ut importunus si sit. Aliquam illum, nostrud qui duis nimis refero esse jugis " +
"sit jus, duis, tum vel capio. Quadrum pertineo dignissim diam in ut adipiscing magna eros " +
"neque exerci vulputate commodo indoles. Sed dolor, oppeto pala eu veniam. Ullamcorper typicus " +
"hos erat neque suscipere defui feugiat velit acsi pneum vel comis luptatum." +
"Zelus quidem, natu, delenit, veniam, tristique eligo transverbero. Ea, plaga vel et illum " +
"sed diam quia iriure. Ludus quidem, tation pecus, interdico quis sit mos cui ideo feugait nutus " +
"utinam at iriure. Secundum vulputate inhibeo wisi pneum fatua facilisi fatua consequat facilisi " +
"lucidus. Validus verto vel sudo letalis molior eum exerci epulae nostrud haero esse. Utrum " +
"aliquip, pneum typicus similis minim sed laoreet, quidem. Oppeto ille nutus neque veniam, et, " +
"abdo, conventio sit, ea wisi neo dolore. At, inhibeo laoreet validus nulla, delenit nimis et " +
"quis turpis neo dignissim abigo adsum. Aliquam illum, nostrud qui duis nimis refero esse jugis " +
"sit jus, duis, tum vel capio. Nobis vero refero valetudo huic enim nobis wisi comis haero " +
"validus. Consequat foras, opto torqueo illum, adipiscing nobis. Te patria, feugiat, feugiat ut " +
"tincidunt ventosus nisl amet lucidus, premo vel illum exerci. Exerci imputo meus ut ingenium " +
"tincidunt vulpes, multo ut, vindico luptatum. Duis hendrerit brevitas tristique esse abluo in " +
"persto praesent, in ibidem augue melior delenit quadrum. Veniam lobortis duis wisi gilvus immitto " +
"defui amet importunus indoles pneum odio hos minim. Olim nimis suscipere ullamcorper, utinam ut " +
"odio, praemitto, praesent facilisi ad consequat facilisi. Duis hendrerit brevitas tristique esse " +
"abluo in persto praesent, in ibidem augue melior delenit quadrum. Sudo bis, inhibeo exerci proprius " +
"magna macto feugiat autem vel veniam vulputate ut. Aliquip, multo tego, esse letalis similis, " +
"abbas abluo elit aliquam qui olim ymo, torqueo. Jus suscipit valetudo velit virtus dolore autem " +
"nulla imputo nostrud minim. Nisl vero sino paratus acsi similis epulae odio euismod refero " +
"tation. Autem conventio regula accumsan fatua virtus.";
// Everyone shares the "next" constants.
private static int nextBorderStyle = 0;
private static int nextBorderSize = 0;
private static Font.Typeface[] TYPEFACES = new Font.Typeface[]{Font.COURIER_NEW, Font.VERDANA, Font.TIMES_NEW_ROMAN};
private static int[] BORDER_SIZES = new int[]{0, 1, 2, 3, 4, 5, 10, 15, 20, 40, 80};
private static int[] FONT_SIZES = new int[]{6, 8, 10, 12, 16, 24, 48, 72};
private static final int[] BORDER_STYLES
= new int[]{Border.STYLE_NONE, Border.STYLE_INSET, Border.STYLE_OUTSET, Border.STYLE_SOLID,
Border.STYLE_DASHED, Border.STYLE_DOTTED, Border.STYLE_DOUBLE, Border.STYLE_RIDGE, Border.STYLE_GROOVE};
/**
* Choices for random horizontal layout data. <code>Alignment.DEFAULT</code>
* listed multiple times to create bias.
*/
private static final int[] HORIZONTAL_ALIGNMENT_VALUES = new int[] { Alignment.DEFAULT, Alignment.DEFAULT, Alignment.DEFAULT,
Alignment.LEADING, Alignment.LEFT, Alignment.CENTER, Alignment.RIGHT, Alignment.TRAILING };
/**
* Choices for random vertical layout data. <code>Alignment.DEFAULT</code>
* listed multiple times to create bias.
*/
private static final int[] VERTICAL_ALIGNMENT_VALUES = new int[] { Alignment.DEFAULT, Alignment.DEFAULT, Alignment.TOP,
Alignment.CENTER, Alignment.BOTTOM };
public static Alignment randomAlignmentHV() {
return new Alignment(HORIZONTAL_ALIGNMENT_VALUES[(int) (Math.random() * HORIZONTAL_ALIGNMENT_VALUES.length)],
VERTICAL_ALIGNMENT_VALUES[(int) (Math.random() * VERTICAL_ALIGNMENT_VALUES.length)]);
}
public static Border randomBorder() {
return new Border(randomExtent(25), randomColor(), randomBorderStyle());
}
public static int randomBorderStyle() {
return BORDER_STYLES[(int) (Math.random() * BORDER_STYLES.length)];
}
public static Color randomBrightColor() {
return new Color(((int) (16777216 * Math.random())) | 0xb0b0b0);
}
public static Color randomColor() {
return new Color((int) (16777216 * Math.random()));
}
public static Extent randomExtent(int max) {
return new Extent((int) (Math.random() * max), Extent.PX);
}
public static Font randomFont() {
Font.Typeface typeface = TYPEFACES[(int) (Math.random() * TYPEFACES.length)];
Extent size = new Extent(FONT_SIZES[(int) (Math.random() * FONT_SIZES.length)]);
// 1-in-4 chance of each style flag being set:
int style = 0;
style |= (((int) (Math.random() * 4)) == 0) ? Font.BOLD : 0;
style |= (((int) (Math.random() * 4)) == 0) ? Font.ITALIC : 0;
style |= (((int) (Math.random() * 4)) == 0) ? Font.UNDERLINE : 0;
style |= (((int) (Math.random() * 4)) == 0) ? Font.OVERLINE : 0;
style |= (((int) (Math.random() * 4)) == 0) ? Font.LINE_THROUGH : 0;
return new Font(typeface, style, size);
}
public static Border nextBorderStyle(Border border) {
if (border == null) {
return new Border(1, Color.BLACK, Border.STYLE_SOLID);
} else {
return new Border(border.getSize(), border.getColor(),
BORDER_STYLES[nextBorderStyle++ % BORDER_STYLES.length]);
}
}
public static Border nextBorderSize(Border border) {
if (border == null) {
return new Border(1, Color.BLACK, Border.STYLE_SOLID);
} else {
return new Border(BORDER_SIZES[nextBorderSize++ % BORDER_SIZES.length],
border.getColor(), border.getStyle());
}
}
}