Search in sources :

Example 46 with Property

use of com.codename1.rad.models.Property in project CodenameOne by codenameone.

the class AddThemeEntry method initComponents.

/**
 * This method is called from within the constructor to
 * initialize the form.
 * WARNING: Do NOT modify this code. The content of this method is
 * always regenerated by the Form Editor.
 */
// <editor-fold defaultstate="collapsed" desc="Generated Code">//GEN-BEGIN:initComponents
private void initComponents() {
    buttonGroup1 = new javax.swing.ButtonGroup();
    jLabel1 = new javax.swing.JLabel();
    componentName = new javax.swing.JComboBox();
    previewPane = new javax.swing.JPanel();
    jLabel6 = new javax.swing.JLabel();
    addTabs = new javax.swing.JTabbedPane();
    jPanel3 = new javax.swing.JPanel();
    jLabel23 = new javax.swing.JLabel();
    imagesCombo = new javax.swing.JComboBox();
    addNewImage = new javax.swing.JButton();
    jLabel16 = new javax.swing.JLabel();
    backgroundType = new javax.swing.JComboBox();
    jLabel18 = new javax.swing.JLabel();
    gradientStartColor = new javax.swing.JTextField();
    changeGradientStartColorButton = new javax.swing.JButton();
    gradientEndColor = new javax.swing.JTextField();
    changeGradientEndColorButton = new javax.swing.JButton();
    jLabel19 = new javax.swing.JLabel();
    gradientX = new javax.swing.JSpinner();
    gradientY = new javax.swing.JSpinner();
    gradientSize = new javax.swing.JSpinner();
    deriveBackground = new javax.swing.JCheckBox();
    deriveHelp = new javax.swing.JButton();
    backgroundHelp = new javax.swing.JButton();
    jLabel2 = new javax.swing.JLabel();
    jLabel14 = new javax.swing.JLabel();
    jPanel1 = new javax.swing.JPanel();
    colorValueFG = new javax.swing.JTextField();
    changeColorButtonFG = new javax.swing.JButton();
    deriveForegroundColor = new javax.swing.JCheckBox();
    jLabel3 = new javax.swing.JLabel();
    colorValueBG = new javax.swing.JTextField();
    changeColorButtonBG = new javax.swing.JButton();
    jLabel4 = new javax.swing.JLabel();
    deriveBackgroundColor = new javax.swing.JCheckBox();
    deriveTransparency = new javax.swing.JCheckBox();
    jLabel5 = new javax.swing.JLabel();
    transparencyValue = new javax.swing.JSpinner();
    deriveHelp1 = new javax.swing.JButton();
    colorHelp = new javax.swing.JButton();
    jLabel15 = new javax.swing.JLabel();
    jLabel21 = new javax.swing.JLabel();
    jPanel2 = new javax.swing.JPanel();
    jLabel20 = new javax.swing.JLabel();
    alignmentCombo = new javax.swing.JComboBox();
    deriveAlignment = new javax.swing.JCheckBox();
    deriveHelp2 = new javax.swing.JButton();
    alignHelp = new javax.swing.JButton();
    jPanel5 = new javax.swing.JPanel();
    jLabel8 = new javax.swing.JLabel();
    paddingLeft = new javax.swing.JSpinner();
    jLabel9 = new javax.swing.JLabel();
    paddingRight = new javax.swing.JSpinner();
    jLabel10 = new javax.swing.JLabel();
    paddingTop = new javax.swing.JSpinner();
    jLabel11 = new javax.swing.JLabel();
    paddingBottom = new javax.swing.JSpinner();
    derivePadding = new javax.swing.JCheckBox();
    deriveHelp3 = new javax.swing.JButton();
    paddingHelp = new javax.swing.JButton();
    paddingLeftUnit = new javax.swing.JComboBox();
    paddingRightUnit = new javax.swing.JComboBox();
    paddingTopUnit = new javax.swing.JComboBox();
    paddingBottomUnit = new javax.swing.JComboBox();
    jPanel6 = new javax.swing.JPanel();
    jLabel17 = new javax.swing.JLabel();
    marginLeft = new javax.swing.JSpinner();
    jLabel24 = new javax.swing.JLabel();
    marginRight = new javax.swing.JSpinner();
    jLabel25 = new javax.swing.JLabel();
    marginTop = new javax.swing.JSpinner();
    jLabel26 = new javax.swing.JLabel();
    marginBottom = new javax.swing.JSpinner();
    deriveMargin = new javax.swing.JCheckBox();
    deriveHelp4 = new javax.swing.JButton();
    marginHelp = new javax.swing.JButton();
    marginLeftUnit = new javax.swing.JComboBox();
    marginRightUnit = new javax.swing.JComboBox();
    marginTopUnit = new javax.swing.JComboBox();
    marginBottomUnit = new javax.swing.JComboBox();
    jPanel8 = new javax.swing.JPanel();
    borderLabel = new com.codename1.ui.resource.util.CodenameOneComponentWrapper(new com.codename1.ui.Label("Border"));
    customizeBorder = new javax.swing.JButton();
    deriveBorder = new javax.swing.JCheckBox();
    imageBorderWizard = new javax.swing.JButton();
    jScrollPane1 = new javax.swing.JScrollPane();
    jTextArea1 = new javax.swing.JTextArea();
    deriveHelp5 = new javax.swing.JButton();
    borderHelp = new javax.swing.JButton();
    jPanel10 = new javax.swing.JPanel();
    baseStyle = new javax.swing.JComboBox();
    baseStyleType = new javax.swing.JComboBox();
    defineAttribute = new javax.swing.JCheckBox();
    deriveHelp6 = new javax.swing.JButton();
    jLabel22 = new javax.swing.JLabel();
    jPanel7 = new javax.swing.JPanel();
    bitmapFont = new javax.swing.JRadioButton();
    systemFont = new javax.swing.JRadioButton();
    bitmapFontValue = new javax.swing.JComboBox();
    addNewBitmapFont = new javax.swing.JButton();
    fontFace = new javax.swing.JComboBox();
    fontStyle = new javax.swing.JComboBox();
    fontSize = new javax.swing.JComboBox();
    deriveFont = new javax.swing.JCheckBox();
    textDecorationCombo = new javax.swing.JComboBox();
    deriveTextDecoration = new javax.swing.JCheckBox();
    jLabel7 = new javax.swing.JLabel();
    deriveHelp7 = new javax.swing.JButton();
    fontHelp = new javax.swing.JButton();
    jLabel12 = new javax.swing.JLabel();
    trueTypeFont = new javax.swing.JComboBox();
    jLabel13 = new javax.swing.JLabel();
    trueTypeFontSizeOption = new javax.swing.JComboBox();
    trueTypeFontSizeValue = new javax.swing.JSpinner();
    jScrollPane2 = new javax.swing.JScrollPane();
    help = new javax.swing.JTextPane();
    styleType = new javax.swing.JLabel();
    styleHelp = new javax.swing.JButton();
    videoTutorial = new javax.swing.JButton();
    FormListener formListener = new FormListener();
    // NOI18N
    setName("Form");
    jLabel1.setText("Component");
    // NOI18N
    jLabel1.setName("jLabel1");
    componentName.setEditable(true);
    // NOI18N
    componentName.setName("componentName");
    componentName.setPrototypeDisplayValue("XXXXXXXXXXXXXX");
    componentName.addActionListener(formListener);
    // NOI18N
    previewPane.setName("previewPane");
    previewPane.setLayout(new java.awt.BorderLayout());
    jLabel6.setText("Preview");
    // NOI18N
    jLabel6.setName("jLabel6");
    // NOI18N
    addTabs.setName("addTabs");
    // NOI18N
    jPanel3.setName("jPanel3");
    jPanel3.setOpaque(false);
    jLabel23.setText("Image");
    // NOI18N
    jLabel23.setName("jLabel23");
    imagesCombo.setEnabled(false);
    // NOI18N
    imagesCombo.setName("imagesCombo");
    imagesCombo.addActionListener(formListener);
    addNewImage.setText("...");
    addNewImage.setEnabled(false);
    // NOI18N
    addNewImage.setName("addNewImage");
    addNewImage.addActionListener(formListener);
    jLabel16.setText("Type");
    // NOI18N
    jLabel16.setName("jLabel16");
    backgroundType.setModel(new javax.swing.DefaultComboBoxModel(new String[] { "IMAGE_SCALED", "IMAGE_SCALED_FILL", "IMAGE_SCALED_FIT", "IMAGE_TILE_BOTH", "IMAGE_TILE_VERTICAL_ALIGN_LEFT", "IMAGE_TILE_VERTICAL_ALIGN_CENTER", "IMAGE_TILE_VERTICAL_ALIGN_RIGHT", "IMAGE_TILE_HORIZONTAL_ALIGN_TOP", "IMAGE_TILE_HORIZONTAL_ALIGN_CENTER", "IMAGE_TILE_HORIZONTAL_ALIGN_BOTTOM", "IMAGE_ALIGNED_TOP", "IMAGE_ALIGNED_BOTTOM", "IMAGE_ALIGNED_LEFT", "IMAGE_ALIGNED_RIGHT", "IMAGE_ALIGNED_TOP_LEFT", "IMAGE_ALIGNED_TOP_RIGHT", "IMAGE_ALIGNED_BOTTOM_LEFT", "IMAGE_ALIGNED_BOTTOM_RIGHT", "IMAGE_ALIGNED_CENTER", "GRADIENT_LINEAR_HORIZONTAL", "GRADIENT_LINEAR_VERTICAL", "GRADIENT_RADIAL", "NONE" }));
    backgroundType.setEnabled(false);
    // NOI18N
    backgroundType.setName("backgroundType");
    backgroundType.addActionListener(formListener);
    jLabel18.setText("Gradient");
    // NOI18N
    jLabel18.setName("jLabel18");
    gradientStartColor.setText("000000");
    gradientStartColor.setEnabled(false);
    // NOI18N
    gradientStartColor.setName("gradientStartColor");
    changeGradientStartColorButton.setText("...");
    changeGradientStartColorButton.setEnabled(false);
    // NOI18N
    changeGradientStartColorButton.setName("changeGradientStartColorButton");
    changeGradientStartColorButton.addActionListener(formListener);
    gradientEndColor.setText("000000");
    gradientEndColor.setEnabled(false);
    // NOI18N
    gradientEndColor.setName("gradientEndColor");
    changeGradientEndColorButton.setText("...");
    changeGradientEndColorButton.setEnabled(false);
    // NOI18N
    changeGradientEndColorButton.setName("changeGradientEndColorButton");
    changeGradientEndColorButton.addActionListener(formListener);
    jLabel19.setText("Gradient X/Y");
    // NOI18N
    jLabel19.setName("jLabel19");
    gradientX.setToolTipText("Gradient Relative X");
    gradientX.setEnabled(false);
    // NOI18N
    gradientX.setName("gradientX");
    gradientX.addChangeListener(formListener);
    gradientY.setToolTipText("Gradient Relative Y");
    gradientY.setEnabled(false);
    // NOI18N
    gradientY.setName("gradientY");
    gradientY.addChangeListener(formListener);
    gradientSize.setToolTipText("Gradient Relaitve Size");
    gradientSize.setEnabled(false);
    // NOI18N
    gradientSize.setName("gradientSize");
    gradientSize.addChangeListener(formListener);
    deriveBackground.setSelected(true);
    deriveBackground.setText("Derive");
    // NOI18N
    deriveBackground.setName("deriveBackground");
    deriveBackground.addActionListener(formListener);
    deriveHelp.setText("Derive Help");
    // NOI18N
    deriveHelp.setName("deriveHelp");
    deriveHelp.addActionListener(formListener);
    backgroundHelp.setText("Background Help");
    // NOI18N
    backgroundHelp.setName("backgroundHelp");
    backgroundHelp.addActionListener(formListener);
    jLabel2.setText("Gradient Size");
    // NOI18N
    jLabel2.setName("jLabel2");
    jLabel14.setText("<html><body><b>Notice:</b> If a border is defined the background will have no effect! Set the border<br>property to Empty to override the border of a base style");
    // NOI18N
    jLabel14.setName("jLabel14");
    org.jdesktop.layout.GroupLayout jPanel3Layout = new org.jdesktop.layout.GroupLayout(jPanel3);
    jPanel3.setLayout(jPanel3Layout);
    jPanel3Layout.setHorizontalGroup(jPanel3Layout.createParallelGroup(org.jdesktop.layout.GroupLayout.LEADING).add(jPanel3Layout.createSequentialGroup().addContainerGap().add(jPanel3Layout.createParallelGroup(org.jdesktop.layout.GroupLayout.LEADING).add(jLabel14, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE).add(jPanel3Layout.createSequentialGroup().add(jPanel3Layout.createParallelGroup(org.jdesktop.layout.GroupLayout.LEADING).add(jLabel16).add(jLabel23).add(jLabel18).add(jLabel19).add(jLabel2)).addPreferredGap(org.jdesktop.layout.LayoutStyle.RELATED).add(jPanel3Layout.createParallelGroup(org.jdesktop.layout.GroupLayout.LEADING).add(gradientSize, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE).add(jPanel3Layout.createSequentialGroup().add(imagesCombo, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE, 325, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE).addPreferredGap(org.jdesktop.layout.LayoutStyle.RELATED).add(addNewImage)).add(backgroundType, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE, 325, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE).add(jPanel3Layout.createSequentialGroup().add(gradientStartColor, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE, 54, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE).addPreferredGap(org.jdesktop.layout.LayoutStyle.RELATED).add(changeGradientStartColorButton).addPreferredGap(org.jdesktop.layout.LayoutStyle.RELATED).add(gradientEndColor, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE, 52, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE).addPreferredGap(org.jdesktop.layout.LayoutStyle.RELATED).add(changeGradientEndColorButton)).add(jPanel3Layout.createSequentialGroup().add(gradientX, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE).addPreferredGap(org.jdesktop.layout.LayoutStyle.RELATED).add(gradientY, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE)))).add(deriveBackground)).addPreferredGap(org.jdesktop.layout.LayoutStyle.RELATED, 383, Short.MAX_VALUE).add(jPanel3Layout.createParallelGroup(org.jdesktop.layout.GroupLayout.LEADING).add(org.jdesktop.layout.GroupLayout.TRAILING, backgroundHelp).add(org.jdesktop.layout.GroupLayout.TRAILING, deriveHelp)).addContainerGap()));
    jPanel3Layout.linkSize(new java.awt.Component[] { gradientEndColor, gradientSize, gradientStartColor, gradientX, gradientY }, org.jdesktop.layout.GroupLayout.HORIZONTAL);
    jPanel3Layout.linkSize(new java.awt.Component[] { backgroundType, imagesCombo }, org.jdesktop.layout.GroupLayout.HORIZONTAL);
    jPanel3Layout.linkSize(new java.awt.Component[] { backgroundHelp, deriveHelp }, org.jdesktop.layout.GroupLayout.HORIZONTAL);
    jPanel3Layout.setVerticalGroup(jPanel3Layout.createParallelGroup(org.jdesktop.layout.GroupLayout.LEADING).add(jPanel3Layout.createSequentialGroup().add(jPanel3Layout.createParallelGroup(org.jdesktop.layout.GroupLayout.LEADING).add(jPanel3Layout.createSequentialGroup().add(4, 4, 4).add(deriveHelp).addPreferredGap(org.jdesktop.layout.LayoutStyle.RELATED).add(backgroundHelp)).add(jPanel3Layout.createSequentialGroup().add(15, 15, 15).add(jLabel14, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE).add(18, 18, 18).add(deriveBackground).addPreferredGap(org.jdesktop.layout.LayoutStyle.UNRELATED).add(jPanel3Layout.createParallelGroup(org.jdesktop.layout.GroupLayout.BASELINE).add(jLabel16).add(backgroundType, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE)).addPreferredGap(org.jdesktop.layout.LayoutStyle.RELATED).add(jPanel3Layout.createParallelGroup(org.jdesktop.layout.GroupLayout.BASELINE).add(jLabel23).add(imagesCombo, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE).add(addNewImage)).addPreferredGap(org.jdesktop.layout.LayoutStyle.RELATED).add(jPanel3Layout.createParallelGroup(org.jdesktop.layout.GroupLayout.CENTER).add(jLabel18).add(gradientStartColor, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE).add(changeGradientStartColorButton).add(changeGradientEndColorButton).add(gradientEndColor, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE)).addPreferredGap(org.jdesktop.layout.LayoutStyle.RELATED).add(jPanel3Layout.createParallelGroup(org.jdesktop.layout.GroupLayout.CENTER).add(jLabel19).add(gradientX, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE).add(gradientY, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE)).addPreferredGap(org.jdesktop.layout.LayoutStyle.RELATED).add(jPanel3Layout.createParallelGroup(org.jdesktop.layout.GroupLayout.CENTER).add(jLabel2).add(gradientSize, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE)))).addContainerGap(199, Short.MAX_VALUE)));
    addTabs.addTab("Background", jPanel3);
    // NOI18N
    jPanel1.setName("jPanel1");
    jPanel1.setOpaque(false);
    colorValueFG.setText("000000");
    colorValueFG.setEnabled(false);
    // NOI18N
    colorValueFG.setName("colorValueFG");
    changeColorButtonFG.setText("...");
    changeColorButtonFG.setEnabled(false);
    // NOI18N
    changeColorButtonFG.setName("changeColorButtonFG");
    changeColorButtonFG.addActionListener(formListener);
    deriveForegroundColor.setSelected(true);
    deriveForegroundColor.setText("Derive Foreground");
    // NOI18N
    deriveForegroundColor.setName("deriveForegroundColor");
    deriveForegroundColor.addActionListener(formListener);
    jLabel3.setText("Background");
    // NOI18N
    jLabel3.setName("jLabel3");
    colorValueBG.setText("000000");
    colorValueBG.setEnabled(false);
    // NOI18N
    colorValueBG.setName("colorValueBG");
    changeColorButtonBG.setText("...");
    changeColorButtonBG.setEnabled(false);
    // NOI18N
    changeColorButtonBG.setName("changeColorButtonBG");
    changeColorButtonBG.addActionListener(formListener);
    jLabel4.setText("Foreground");
    // NOI18N
    jLabel4.setName("jLabel4");
    deriveBackgroundColor.setSelected(true);
    deriveBackgroundColor.setText("Derive Background");
    // NOI18N
    deriveBackgroundColor.setName("deriveBackgroundColor");
    deriveBackgroundColor.addActionListener(formListener);
    deriveTransparency.setSelected(true);
    deriveTransparency.setText("Derive Transparency");
    // NOI18N
    deriveTransparency.setName("deriveTransparency");
    deriveTransparency.addActionListener(formListener);
    jLabel5.setText("Transparency");
    // NOI18N
    jLabel5.setName("jLabel5");
    transparencyValue.setEnabled(false);
    // NOI18N
    transparencyValue.setName("transparencyValue");
    transparencyValue.addChangeListener(formListener);
    deriveHelp1.setText("Derive Help");
    // NOI18N
    deriveHelp1.setName("deriveHelp1");
    deriveHelp1.addActionListener(formListener);
    colorHelp.setText("Color Help");
    // NOI18N
    colorHelp.setName("colorHelp");
    colorHelp.addActionListener(formListener);
    jLabel15.setText("<html><body><b>Notice:</b> If a border is defined the background will have no effect! Set the border<br>property to Empty to override the border of a base style");
    // NOI18N
    jLabel15.setName("jLabel15");
    jLabel21.setText("<html><body><b>Notice:</b> some types of backgrounds might override the background color.<br/>Transparency should be 255 to achieve full opacity");
    // NOI18N
    jLabel21.setName("jLabel21");
    org.jdesktop.layout.GroupLayout jPanel1Layout = new org.jdesktop.layout.GroupLayout(jPanel1);
    jPanel1.setLayout(jPanel1Layout);
    jPanel1Layout.setHorizontalGroup(jPanel1Layout.createParallelGroup(org.jdesktop.layout.GroupLayout.LEADING).add(jPanel1Layout.createSequentialGroup().addContainerGap().add(jPanel1Layout.createParallelGroup(org.jdesktop.layout.GroupLayout.LEADING).add(jPanel1Layout.createSequentialGroup().addPreferredGap(org.jdesktop.layout.LayoutStyle.RELATED, 9, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE).add(jPanel1Layout.createParallelGroup(org.jdesktop.layout.GroupLayout.LEADING).add(jLabel4).add(jLabel3).add(jLabel5)).add(12, 12, 12).add(jPanel1Layout.createParallelGroup(org.jdesktop.layout.GroupLayout.LEADING).add(jPanel1Layout.createSequentialGroup().add(colorValueFG, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE, 66, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE).addPreferredGap(org.jdesktop.layout.LayoutStyle.RELATED).add(changeColorButtonFG)).add(jPanel1Layout.createParallelGroup(org.jdesktop.layout.GroupLayout.TRAILING, false).add(org.jdesktop.layout.GroupLayout.LEADING, transparencyValue).add(org.jdesktop.layout.GroupLayout.LEADING, jPanel1Layout.createSequentialGroup().add(colorValueBG, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE, 66, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE).addPreferredGap(org.jdesktop.layout.LayoutStyle.RELATED).add(changeColorButtonBG)))).add(0, 735, Short.MAX_VALUE)).add(jPanel1Layout.createSequentialGroup().add(jPanel1Layout.createParallelGroup(org.jdesktop.layout.GroupLayout.LEADING).add(jLabel15, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE).add(deriveForegroundColor).add(deriveBackgroundColor).add(deriveTransparency).add(jLabel21, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE)).addPreferredGap(org.jdesktop.layout.LayoutStyle.RELATED, 464, Short.MAX_VALUE).add(jPanel1Layout.createParallelGroup(org.jdesktop.layout.GroupLayout.LEADING).add(org.jdesktop.layout.GroupLayout.TRAILING, deriveHelp1).add(org.jdesktop.layout.GroupLayout.TRAILING, colorHelp)))).addContainerGap()));
    jPanel1Layout.linkSize(new java.awt.Component[] { colorHelp, deriveHelp1 }, org.jdesktop.layout.GroupLayout.HORIZONTAL);
    jPanel1Layout.setVerticalGroup(jPanel1Layout.createParallelGroup(org.jdesktop.layout.GroupLayout.LEADING).add(jPanel1Layout.createSequentialGroup().add(jPanel1Layout.createParallelGroup(org.jdesktop.layout.GroupLayout.LEADING).add(jPanel1Layout.createSequentialGroup().addContainerGap().add(jLabel15, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE).addPreferredGap(org.jdesktop.layout.LayoutStyle.RELATED).add(jLabel21, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE).add(20, 20, 20).add(deriveForegroundColor).addPreferredGap(org.jdesktop.layout.LayoutStyle.RELATED).add(jPanel1Layout.createParallelGroup(org.jdesktop.layout.GroupLayout.BASELINE).add(colorValueFG, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE).add(changeColorButtonFG).add(jLabel4)).addPreferredGap(org.jdesktop.layout.LayoutStyle.RELATED).add(deriveBackgroundColor).addPreferredGap(org.jdesktop.layout.LayoutStyle.RELATED).add(jPanel1Layout.createParallelGroup(org.jdesktop.layout.GroupLayout.BASELINE).add(colorValueBG, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE).add(changeColorButtonBG).add(jLabel3)).addPreferredGap(org.jdesktop.layout.LayoutStyle.RELATED).add(deriveTransparency).addPreferredGap(org.jdesktop.layout.LayoutStyle.RELATED).add(jPanel1Layout.createParallelGroup(org.jdesktop.layout.GroupLayout.CENTER).add(jLabel5).add(transparencyValue, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE))).add(jPanel1Layout.createSequentialGroup().add(deriveHelp1).addPreferredGap(org.jdesktop.layout.LayoutStyle.RELATED).add(colorHelp))).addContainerGap(181, Short.MAX_VALUE)));
    addTabs.addTab("Color", jPanel1);
    // NOI18N
    jPanel2.setName("jPanel2");
    jPanel2.setOpaque(false);
    jLabel20.setText("Alignment");
    // NOI18N
    jLabel20.setName("jLabel20");
    alignmentCombo.setModel(new javax.swing.DefaultComboBoxModel(new String[] { "Left", "Right", "Center" }));
    alignmentCombo.setEnabled(false);
    // NOI18N
    alignmentCombo.setName("alignmentCombo");
    alignmentCombo.addActionListener(formListener);
    deriveAlignment.setSelected(true);
    deriveAlignment.setText("Derive");
    // NOI18N
    deriveAlignment.setName("deriveAlignment");
    deriveAlignment.addActionListener(formListener);
    deriveHelp2.setText("Derive Help");
    // NOI18N
    deriveHelp2.setName("deriveHelp2");
    deriveHelp2.addActionListener(formListener);
    alignHelp.setText("Alignment Help");
    // NOI18N
    alignHelp.setName("alignHelp");
    alignHelp.addActionListener(formListener);
    org.jdesktop.layout.GroupLayout jPanel2Layout = new org.jdesktop.layout.GroupLayout(jPanel2);
    jPanel2.setLayout(jPanel2Layout);
    jPanel2Layout.setHorizontalGroup(jPanel2Layout.createParallelGroup(org.jdesktop.layout.GroupLayout.LEADING).add(jPanel2Layout.createSequentialGroup().addContainerGap().add(jPanel2Layout.createParallelGroup(org.jdesktop.layout.GroupLayout.LEADING).add(jPanel2Layout.createSequentialGroup().add(deriveAlignment).addPreferredGap(org.jdesktop.layout.LayoutStyle.RELATED, 779, Short.MAX_VALUE).add(deriveHelp2)).add(org.jdesktop.layout.GroupLayout.TRAILING, jPanel2Layout.createSequentialGroup().add(jLabel20).add(9, 9, 9).add(alignmentCombo, 0, 774, Short.MAX_VALUE).addPreferredGap(org.jdesktop.layout.LayoutStyle.RELATED).add(alignHelp))).addContainerGap()));
    jPanel2Layout.linkSize(new java.awt.Component[] { alignHelp, deriveHelp2 }, org.jdesktop.layout.GroupLayout.HORIZONTAL);
    jPanel2Layout.setVerticalGroup(jPanel2Layout.createParallelGroup(org.jdesktop.layout.GroupLayout.LEADING).add(jPanel2Layout.createSequentialGroup().addContainerGap().add(jPanel2Layout.createParallelGroup(org.jdesktop.layout.GroupLayout.BASELINE).add(deriveAlignment).add(deriveHelp2)).addPreferredGap(org.jdesktop.layout.LayoutStyle.RELATED).add(jPanel2Layout.createParallelGroup(org.jdesktop.layout.GroupLayout.BASELINE).add(jLabel20).add(alignmentCombo, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE).add(alignHelp)).addContainerGap(394, Short.MAX_VALUE)));
    addTabs.addTab("Alignment", jPanel2);
    // NOI18N
    jPanel5.setName("jPanel5");
    jPanel5.setOpaque(false);
    jLabel8.setText("Left");
    // NOI18N
    jLabel8.setName("jLabel8");
    paddingLeft.setEnabled(false);
    // NOI18N
    paddingLeft.setName("paddingLeft");
    paddingLeft.addChangeListener(formListener);
    jLabel9.setText("Right");
    // NOI18N
    jLabel9.setName("jLabel9");
    paddingRight.setEnabled(false);
    // NOI18N
    paddingRight.setName("paddingRight");
    paddingRight.addChangeListener(formListener);
    jLabel10.setText("Top");
    // NOI18N
    jLabel10.setName("jLabel10");
    paddingTop.setEnabled(false);
    // NOI18N
    paddingTop.setName("paddingTop");
    paddingTop.addChangeListener(formListener);
    jLabel11.setText("Bottom");
    // NOI18N
    jLabel11.setName("jLabel11");
    paddingBottom.setEnabled(false);
    // NOI18N
    paddingBottom.setName("paddingBottom");
    paddingBottom.addChangeListener(formListener);
    derivePadding.setSelected(true);
    derivePadding.setText("Derive");
    // NOI18N
    derivePadding.setName("derivePadding");
    derivePadding.addActionListener(formListener);
    deriveHelp3.setText("Derive Help");
    // NOI18N
    deriveHelp3.setName("deriveHelp3");
    deriveHelp3.addActionListener(formListener);
    paddingHelp.setText("Padding Help");
    // NOI18N
    paddingHelp.setName("paddingHelp");
    paddingHelp.addActionListener(formListener);
    paddingLeftUnit.setModel(new javax.swing.DefaultComboBoxModel(new String[] { "Pixels", "Screen Size Percentage", "Millimeters (approximate)" }));
    // NOI18N
    paddingLeftUnit.setName("paddingLeftUnit");
    paddingLeftUnit.addActionListener(formListener);
    paddingRightUnit.setModel(new javax.swing.DefaultComboBoxModel(new String[] { "Pixels", "Screen Size Percentage", "Millimeters (approximate)" }));
    // NOI18N
    paddingRightUnit.setName("paddingRightUnit");
    paddingRightUnit.addActionListener(formListener);
    paddingTopUnit.setModel(new javax.swing.DefaultComboBoxModel(new String[] { "Pixels", "Screen Size Percentage", "Millimeters (approximate)" }));
    // NOI18N
    paddingTopUnit.setName("paddingTopUnit");
    paddingTopUnit.addActionListener(formListener);
    paddingBottomUnit.setModel(new javax.swing.DefaultComboBoxModel(new String[] { "Pixels", "Screen Size Percentage", "Millimeters (approximate)" }));
    // NOI18N
    paddingBottomUnit.setName("paddingBottomUnit");
    paddingBottomUnit.addActionListener(formListener);
    org.jdesktop.layout.GroupLayout jPanel5Layout = new org.jdesktop.layout.GroupLayout(jPanel5);
    jPanel5.setLayout(jPanel5Layout);
    jPanel5Layout.setHorizontalGroup(jPanel5Layout.createParallelGroup(org.jdesktop.layout.GroupLayout.LEADING).add(jPanel5Layout.createSequentialGroup().add(jPanel5Layout.createParallelGroup(org.jdesktop.layout.GroupLayout.LEADING, false).add(jPanel5Layout.createSequentialGroup().add(10, 10, 10).add(derivePadding)).add(jPanel5Layout.createSequentialGroup().addContainerGap().add(jPanel5Layout.createParallelGroup(org.jdesktop.layout.GroupLayout.LEADING).add(jLabel8).add(jLabel9).add(jLabel10).add(jLabel11)).addPreferredGap(org.jdesktop.layout.LayoutStyle.RELATED).add(jPanel5Layout.createParallelGroup(org.jdesktop.layout.GroupLayout.LEADING, false).add(paddingLeft, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, 101, Short.MAX_VALUE).add(paddingRight).add(paddingTop).add(paddingBottom)).add(jPanel5Layout.createParallelGroup(org.jdesktop.layout.GroupLayout.LEADING, false).add(jPanel5Layout.createSequentialGroup().add(7, 7, 7).add(jPanel5Layout.createParallelGroup(org.jdesktop.layout.GroupLayout.LEADING).add(org.jdesktop.layout.GroupLayout.TRAILING, paddingRightUnit, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE).add(org.jdesktop.layout.GroupLayout.TRAILING, paddingTopUnit, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE).add(org.jdesktop.layout.GroupLayout.TRAILING, paddingBottomUnit, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE))).add(jPanel5Layout.createSequentialGroup().addPreferredGap(org.jdesktop.layout.LayoutStyle.RELATED).add(paddingLeftUnit, 0, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))))).addPreferredGap(org.jdesktop.layout.LayoutStyle.RELATED, 553, Short.MAX_VALUE).add(jPanel5Layout.createParallelGroup(org.jdesktop.layout.GroupLayout.LEADING).add(org.jdesktop.layout.GroupLayout.TRAILING, paddingHelp).add(org.jdesktop.layout.GroupLayout.TRAILING, deriveHelp3)).addContainerGap()));
    jPanel5Layout.linkSize(new java.awt.Component[] { deriveHelp3, paddingHelp }, org.jdesktop.layout.GroupLayout.HORIZONTAL);
    jPanel5Layout.setVerticalGroup(jPanel5Layout.createParallelGroup(org.jdesktop.layout.GroupLayout.LEADING).add(jPanel5Layout.createSequentialGroup().addContainerGap().add(jPanel5Layout.createParallelGroup(org.jdesktop.layout.GroupLayout.BASELINE).add(derivePadding).add(deriveHelp3)).addPreferredGap(org.jdesktop.layout.LayoutStyle.RELATED).add(jPanel5Layout.createParallelGroup(org.jdesktop.layout.GroupLayout.BASELINE).add(jLabel8).add(paddingLeft, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE).add(paddingLeftUnit, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE).add(paddingHelp)).addPreferredGap(org.jdesktop.layout.LayoutStyle.RELATED).add(jPanel5Layout.createParallelGroup(org.jdesktop.layout.GroupLayout.BASELINE).add(jLabel9).add(paddingRight, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE).add(paddingRightUnit, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE)).addPreferredGap(org.jdesktop.layout.LayoutStyle.RELATED).add(jPanel5Layout.createParallelGroup(org.jdesktop.layout.GroupLayout.BASELINE).add(jLabel10).add(paddingTop, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE).add(paddingTopUnit, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE)).addPreferredGap(org.jdesktop.layout.LayoutStyle.RELATED).add(jPanel5Layout.createParallelGroup(org.jdesktop.layout.GroupLayout.BASELINE).add(jLabel11).add(paddingBottom, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE).add(paddingBottomUnit, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE)).addContainerGap(288, Short.MAX_VALUE)));
    jPanel5Layout.linkSize(new java.awt.Component[] { paddingBottom, paddingLeft, paddingRight, paddingTop }, org.jdesktop.layout.GroupLayout.VERTICAL);
    addTabs.addTab("Padding", jPanel5);
    // NOI18N
    jPanel6.setName("jPanel6");
    jPanel6.setOpaque(false);
    jLabel17.setText("Left");
    // NOI18N
    jLabel17.setName("jLabel17");
    marginLeft.setEnabled(false);
    // NOI18N
    marginLeft.setName("marginLeft");
    marginLeft.addChangeListener(formListener);
    jLabel24.setText("Right");
    // NOI18N
    jLabel24.setName("jLabel24");
    marginRight.setEnabled(false);
    // NOI18N
    marginRight.setName("marginRight");
    marginRight.addChangeListener(formListener);
    jLabel25.setText("Top");
    // NOI18N
    jLabel25.setName("jLabel25");
    marginTop.setEnabled(false);
    // NOI18N
    marginTop.setName("marginTop");
    marginTop.addChangeListener(formListener);
    jLabel26.setText("Bottom");
    // NOI18N
    jLabel26.setName("jLabel26");
    marginBottom.setEnabled(false);
    // NOI18N
    marginBottom.setName("marginBottom");
    marginBottom.addChangeListener(formListener);
    deriveMargin.setSelected(true);
    deriveMargin.setText("Derive");
    // NOI18N
    deriveMargin.setName("deriveMargin");
    deriveMargin.addActionListener(formListener);
    deriveHelp4.setText("Derive Help");
    // NOI18N
    deriveHelp4.setName("deriveHelp4");
    deriveHelp4.addActionListener(formListener);
    marginHelp.setText("Margin Help");
    // NOI18N
    marginHelp.setName("marginHelp");
    marginHelp.addActionListener(formListener);
    marginLeftUnit.setModel(new javax.swing.DefaultComboBoxModel(new String[] { "Pixels", "Screen Size Percentage", "Millimeters (approximate)" }));
    // NOI18N
    marginLeftUnit.setName("marginLeftUnit");
    marginLeftUnit.addActionListener(formListener);
    marginRightUnit.setModel(new javax.swing.DefaultComboBoxModel(new String[] { "Pixels", "Screen Size Percentage", "Millimeters (approximate)" }));
    // NOI18N
    marginRightUnit.setName("marginRightUnit");
    marginRightUnit.addActionListener(formListener);
    marginTopUnit.setModel(new javax.swing.DefaultComboBoxModel(new String[] { "Pixels", "Screen Size Percentage", "Millimeters (approximate)" }));
    // NOI18N
    marginTopUnit.setName("marginTopUnit");
    marginTopUnit.addActionListener(formListener);
    marginBottomUnit.setModel(new javax.swing.DefaultComboBoxModel(new String[] { "Pixels", "Screen Size Percentage", "Millimeters (approximate)" }));
    // NOI18N
    marginBottomUnit.setName("marginBottomUnit");
    marginBottomUnit.addActionListener(formListener);
    org.jdesktop.layout.GroupLayout jPanel6Layout = new org.jdesktop.layout.GroupLayout(jPanel6);
    jPanel6.setLayout(jPanel6Layout);
    jPanel6Layout.setHorizontalGroup(jPanel6Layout.createParallelGroup(org.jdesktop.layout.GroupLayout.LEADING).add(jPanel6Layout.createSequentialGroup().addContainerGap().add(jPanel6Layout.createParallelGroup(org.jdesktop.layout.GroupLayout.LEADING).add(jLabel17).add(jLabel24).add(jLabel25).add(jLabel26)).addPreferredGap(org.jdesktop.layout.LayoutStyle.RELATED).add(jPanel6Layout.createParallelGroup(org.jdesktop.layout.GroupLayout.LEADING, false).add(marginBottom).add(marginTop).add(marginRight).add(marginLeft, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, 100, Short.MAX_VALUE)).addPreferredGap(org.jdesktop.layout.LayoutStyle.RELATED).add(jPanel6Layout.createParallelGroup(org.jdesktop.layout.GroupLayout.LEADING).add(jPanel6Layout.createSequentialGroup().add(jPanel6Layout.createParallelGroup(org.jdesktop.layout.GroupLayout.LEADING).add(marginBottomUnit, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE).add(marginTopUnit, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE).add(marginRightUnit, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE)).add(454, 660, Short.MAX_VALUE)).add(jPanel6Layout.createSequentialGroup().add(marginLeftUnit, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE).addPreferredGap(org.jdesktop.layout.LayoutStyle.RELATED, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE).add(marginHelp).addContainerGap()))).add(jPanel6Layout.createSequentialGroup().add(10, 10, 10).add(deriveMargin).addPreferredGap(org.jdesktop.layout.LayoutStyle.RELATED, 793, Short.MAX_VALUE).add(deriveHelp4).addContainerGap()));
    jPanel6Layout.linkSize(new java.awt.Component[] { deriveHelp4, marginHelp }, org.jdesktop.layout.GroupLayout.HORIZONTAL);
    jPanel6Layout.linkSize(new java.awt.Component[] { marginBottomUnit, marginLeftUnit, marginRightUnit, marginTopUnit }, org.jdesktop.layout.GroupLayout.HORIZONTAL);
    jPanel6Layout.setVerticalGroup(jPanel6Layout.createParallelGroup(org.jdesktop.layout.GroupLayout.LEADING).add(jPanel6Layout.createSequentialGroup().addContainerGap().add(jPanel6Layout.createParallelGroup(org.jdesktop.layout.GroupLayout.BASELINE).add(deriveMargin).add(deriveHelp4)).addPreferredGap(org.jdesktop.layout.LayoutStyle.RELATED).add(jPanel6Layout.createParallelGroup(org.jdesktop.layout.GroupLayout.CENTER).add(marginLeftUnit, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE).add(marginLeft, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE).add(jLabel17).add(marginHelp)).addPreferredGap(org.jdesktop.layout.LayoutStyle.RELATED).add(jPanel6Layout.createParallelGroup(org.jdesktop.layout.GroupLayout.CENTER).add(jLabel24).add(marginRight, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE).add(marginRightUnit, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE)).addPreferredGap(org.jdesktop.layout.LayoutStyle.RELATED).add(jPanel6Layout.createParallelGroup(org.jdesktop.layout.GroupLayout.CENTER).add(jLabel25).add(marginTop, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE).add(marginTopUnit, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE)).addPreferredGap(org.jdesktop.layout.LayoutStyle.RELATED).add(jPanel6Layout.createParallelGroup(org.jdesktop.layout.GroupLayout.CENTER).add(jLabel26).add(marginBottom, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE).add(marginBottomUnit, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE)).addContainerGap(316, Short.MAX_VALUE)));
    jPanel6Layout.linkSize(new java.awt.Component[] { marginBottom, marginLeft, marginRight, marginTop }, org.jdesktop.layout.GroupLayout.VERTICAL);
    jPanel6Layout.linkSize(new java.awt.Component[] { marginBottomUnit, marginLeftUnit, marginRightUnit, marginTopUnit }, org.jdesktop.layout.GroupLayout.VERTICAL);
    addTabs.addTab("Margin", jPanel6);
    // NOI18N
    jPanel8.setName("jPanel8");
    jPanel8.setOpaque(false);
    borderLabel.setText("Border");
    // NOI18N
    borderLabel.setName("borderLabel");
    customizeBorder.setText("...");
    customizeBorder.setEnabled(false);
    // NOI18N
    customizeBorder.setName("customizeBorder");
    customizeBorder.addActionListener(formListener);
    deriveBorder.setSelected(true);
    deriveBorder.setText("Derive");
    // NOI18N
    deriveBorder.setName("deriveBorder");
    deriveBorder.addActionListener(formListener);
    imageBorderWizard.setText("Image Border Wizard");
    // NOI18N
    imageBorderWizard.setName("imageBorderWizard");
    imageBorderWizard.addActionListener(formListener);
    jScrollPane1.setBorder(null);
    // NOI18N
    jScrollPane1.setName("jScrollPane1");
    jScrollPane1.setOpaque(false);
    jTextArea1.setColumns(20);
    jTextArea1.setEditable(false);
    jTextArea1.setLineWrap(true);
    jTextArea1.setRows(5);
    jTextArea1.setText("Please notice when using the image border wizard to generate images you are in effect creating additional images in the theme. This means that if you use this wizard you MUST NOT cancel this dialog since the images created by the wizard would remain! You would need to go and delete them (try the \"delete unused images\" option in the menu).\nHaving too many images in the theme can be expensive so try to reuse the same images for multiple component types rather than recreate these images over and over again.");
    jTextArea1.setWrapStyleWord(true);
    jTextArea1.setBorder(null);
    // NOI18N
    jTextArea1.setName("jTextArea1");
    jTextArea1.setOpaque(false);
    jScrollPane1.setViewportView(jTextArea1);
    deriveHelp5.setText("Derive Help");
    // NOI18N
    deriveHelp5.setName("deriveHelp5");
    deriveHelp5.addActionListener(formListener);
    borderHelp.setText("Border Help");
    // NOI18N
    borderHelp.setName("borderHelp");
    borderHelp.addActionListener(formListener);
    org.jdesktop.layout.GroupLayout jPanel8Layout = new org.jdesktop.layout.GroupLayout(jPanel8);
    jPanel8.setLayout(jPanel8Layout);
    jPanel8Layout.setHorizontalGroup(jPanel8Layout.createParallelGroup(org.jdesktop.layout.GroupLayout.LEADING).add(jPanel8Layout.createSequentialGroup().addContainerGap().add(jPanel8Layout.createParallelGroup(org.jdesktop.layout.GroupLayout.LEADING).add(jScrollPane1, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, 939, Short.MAX_VALUE).add(imageBorderWizard).add(org.jdesktop.layout.GroupLayout.TRAILING, jPanel8Layout.createSequentialGroup().add(jPanel8Layout.createParallelGroup(org.jdesktop.layout.GroupLayout.LEADING).add(jPanel8Layout.createSequentialGroup().add(deriveBorder).addPreferredGap(org.jdesktop.layout.LayoutStyle.RELATED, 681, Short.MAX_VALUE)).add(jPanel8Layout.createSequentialGroup().add(borderLabel, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, 715, Short.MAX_VALUE).add(23, 23, 23))).add(61, 61, 61).add(jPanel8Layout.createParallelGroup(org.jdesktop.layout.GroupLayout.LEADING).add(org.jdesktop.layout.GroupLayout.TRAILING, jPanel8Layout.createSequentialGroup().add(customizeBorder).addPreferredGap(org.jdesktop.layout.LayoutStyle.RELATED).add(borderHelp)).add(org.jdesktop.layout.GroupLayout.TRAILING, deriveHelp5)))).addContainerGap()));
    jPanel8Layout.linkSize(new java.awt.Component[] { borderHelp, deriveHelp5 }, org.jdesktop.layout.GroupLayout.HORIZONTAL);
    jPanel8Layout.setVerticalGroup(jPanel8Layout.createParallelGroup(org.jdesktop.layout.GroupLayout.LEADING).add(jPanel8Layout.createSequentialGroup().addContainerGap().add(jPanel8Layout.createParallelGroup(org.jdesktop.layout.GroupLayout.BASELINE).add(deriveBorder).add(deriveHelp5)).addPreferredGap(org.jdesktop.layout.LayoutStyle.RELATED).add(jPanel8Layout.createParallelGroup(org.jdesktop.layout.GroupLayout.BASELINE).add(borderLabel).add(customizeBorder).add(borderHelp)).addPreferredGap(org.jdesktop.layout.LayoutStyle.RELATED).add(imageBorderWizard).addPreferredGap(org.jdesktop.layout.LayoutStyle.RELATED).add(jScrollPane1, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, 347, Short.MAX_VALUE).addContainerGap()));
    addTabs.addTab("Border", jPanel8);
    // NOI18N
    jPanel10.setName("jPanel10");
    jPanel10.setOpaque(false);
    baseStyle.setEditable(true);
    baseStyle.setEnabled(false);
    // NOI18N
    baseStyle.setName("baseStyle");
    baseStyleType.setModel(new javax.swing.DefaultComboBoxModel(new String[] { "Unselected", "Selected", "Pressed", "Disabled" }));
    baseStyleType.setEnabled(false);
    // NOI18N
    baseStyleType.setName("baseStyleType");
    defineAttribute.setSelected(true);
    defineAttribute.setText("Override Attribute");
    // NOI18N
    defineAttribute.setName("defineAttribute");
    defineAttribute.addActionListener(formListener);
    deriveHelp6.setText("Derive Help");
    // NOI18N
    deriveHelp6.setName("deriveHelp6");
    deriveHelp6.addActionListener(formListener);
    jLabel22.setText("Please note that deriving to/from builtin components e.g. Button, TextField etc. is unreliable due to cyclic dependencies");
    // NOI18N
    jLabel22.setName("jLabel22");
    org.jdesktop.layout.GroupLayout jPanel10Layout = new org.jdesktop.layout.GroupLayout(jPanel10);
    jPanel10.setLayout(jPanel10Layout);
    jPanel10Layout.setHorizontalGroup(jPanel10Layout.createParallelGroup(org.jdesktop.layout.GroupLayout.LEADING).add(jPanel10Layout.createSequentialGroup().addContainerGap().add(jPanel10Layout.createParallelGroup(org.jdesktop.layout.GroupLayout.LEADING).add(jPanel10Layout.createSequentialGroup().add(defineAttribute).addPreferredGap(org.jdesktop.layout.LayoutStyle.RELATED, 739, Short.MAX_VALUE).add(deriveHelp6)).add(org.jdesktop.layout.GroupLayout.TRAILING, jPanel10Layout.createSequentialGroup().add(baseStyle, 0, 843, Short.MAX_VALUE).add(18, 18, 18).add(baseStyleType, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE)).add(jPanel10Layout.createSequentialGroup().add(jLabel22).add(0, 0, Short.MAX_VALUE))).addContainerGap()));
    jPanel10Layout.setVerticalGroup(jPanel10Layout.createParallelGroup(org.jdesktop.layout.GroupLayout.LEADING).add(jPanel10Layout.createSequentialGroup().addContainerGap().add(jPanel10Layout.createParallelGroup(org.jdesktop.layout.GroupLayout.BASELINE).add(defineAttribute).add(deriveHelp6)).addPreferredGap(org.jdesktop.layout.LayoutStyle.RELATED).add(jPanel10Layout.createParallelGroup(org.jdesktop.layout.GroupLayout.BASELINE).add(baseStyle, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE).add(baseStyleType, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE)).add(18, 18, 18).add(jLabel22).addContainerGap(360, Short.MAX_VALUE)));
    addTabs.addTab("Derive", jPanel10);
    // NOI18N
    jPanel7.setName("jPanel7");
    jPanel7.setOpaque(false);
    buttonGroup1.add(bitmapFont);
    bitmapFont.setText("Bitmap Fonts (deprecated!)");
    bitmapFont.setEnabled(false);
    // NOI18N
    bitmapFont.setName("bitmapFont");
    bitmapFont.addActionListener(formListener);
    buttonGroup1.add(systemFont);
    systemFont.setSelected(true);
    systemFont.setText("Standard Font");
    systemFont.setEnabled(false);
    // NOI18N
    systemFont.setName("systemFont");
    systemFont.addActionListener(formListener);
    bitmapFontValue.setEnabled(false);
    // NOI18N
    bitmapFontValue.setName("bitmapFontValue");
    bitmapFontValue.setPrototypeDisplayValue("XXXXXXXXXXXXXXXX");
    bitmapFontValue.addActionListener(formListener);
    addNewBitmapFont.setText("...");
    addNewBitmapFont.setEnabled(false);
    // NOI18N
    addNewBitmapFont.setName("addNewBitmapFont");
    addNewBitmapFont.addActionListener(formListener);
    fontFace.setModel(new javax.swing.DefaultComboBoxModel(new String[] { "SYSTEM", "MONOSPACE", "PROPORTIONAL" }));
    fontFace.setEnabled(false);
    // NOI18N
    fontFace.setName("fontFace");
    fontFace.addActionListener(formListener);
    fontStyle.setModel(new javax.swing.DefaultComboBoxModel(new String[] { "PLAIN", "BOLD", "ITALIC", "BOLD ITALIC" }));
    fontStyle.setEnabled(false);
    // NOI18N
    fontStyle.setName("fontStyle");
    fontStyle.addActionListener(formListener);
    fontSize.setModel(new javax.swing.DefaultComboBoxModel(new String[] { "MEDIUM", "SMALL", "LARGE" }));
    fontSize.setEnabled(false);
    // NOI18N
    fontSize.setName("fontSize");
    fontSize.addActionListener(formListener);
    deriveFont.setSelected(true);
    deriveFont.setText("Derive Font");
    // NOI18N
    deriveFont.setName("deriveFont");
    deriveFont.addActionListener(formListener);
    textDecorationCombo.setModel(new javax.swing.DefaultComboBoxModel(new String[] { "None", "Underline", "Strike Through,", "3D Text Raised", "3D Text Lowered", "3D Shadow North" }));
    textDecorationCombo.setEnabled(false);
    // NOI18N
    textDecorationCombo.setName("textDecorationCombo");
    textDecorationCombo.addActionListener(formListener);
    deriveTextDecoration.setSelected(true);
    deriveTextDecoration.setText("Derive Text Decoration");
    // NOI18N
    deriveTextDecoration.setName("deriveTextDecoration");
    deriveTextDecoration.addActionListener(formListener);
    jLabel7.setText("Text Decoration");
    // NOI18N
    jLabel7.setName("jLabel7");
    deriveHelp7.setText("Derive Help");
    // NOI18N
    deriveHelp7.setName("deriveHelp7");
    deriveHelp7.addActionListener(formListener);
    fontHelp.setText("Font Help");
    // NOI18N
    fontHelp.setName("fontHelp");
    fontHelp.addActionListener(formListener);
    jLabel12.setText("True Type");
    jLabel12.setToolTipText("<html><body>\nTruetype fonts are only supported on some platforms (iOS/Android)<br>\nto use them you need to place the file in the src directory next to the<br>\nresource file and make sure the name of the font is correct in the<br>\ntext field (for iOS). When unavailable the standard fonts will be used.<br>\n<b>Important</b> the file name must have a .ttf extension!");
    // NOI18N
    jLabel12.setName("jLabel12");
    trueTypeFont.setToolTipText("<html><body>\nTruetype fonts are only supported on some platforms (iOS/Android)<br>\nto use them you need to place the file in the src directory next to the<br>\nresource file and make sure the name of the font is correct in the<br>\ntext field (for iOS). When unavailable the standard fonts will be used.<br>\n<b>Important</b> the file name must have a .ttf extension!");
    trueTypeFont.setEnabled(false);
    // NOI18N
    trueTypeFont.setName("trueTypeFont");
    trueTypeFont.addActionListener(formListener);
    jLabel13.setText("True Type Size");
    // NOI18N
    jLabel13.setToolTipText("<html><body>\nTruetype fonts are only supported on some platforms (iOS/Android)<br>\nto use them you need to place the file in the src directory next to the<br>\nresource file and make sure the name of the font is correct in the<br>\ntext field (for iOS). When unavailable the standard fonts will be used.<br>\n<b>Important</b> the file name must have a .ttf extension!");
    // NOI18N
    jLabel13.setName("jLabel13");
    trueTypeFontSizeOption.setModel(new javax.swing.DefaultComboBoxModel(new String[] { "Small", "Medium", "Large", "Millimeters", "Pixels", "rem", "vw", "vh", "vmin", "vmax" }));
    trueTypeFontSizeOption.setSelectedIndex(1);
    trueTypeFontSizeOption.setToolTipText("<html><body>\nTruetype fonts are only supported on some platforms (iOS/Android)<br>\nto use them you need to place the file in the src directory next to the<br>\nresource file and make sure the name of the font is correct in the<br>\ntext field (for iOS). When unavailable the standard fonts will be used.<br>\n<b>Important</b> the file name must have a .ttf extension!");
    trueTypeFontSizeOption.setEnabled(false);
    // NOI18N
    trueTypeFontSizeOption.setName("trueTypeFontSizeOption");
    trueTypeFontSizeOption.addActionListener(formListener);
    trueTypeFontSizeValue.setToolTipText("<html><body>\nTruetype fonts are only supported on some platforms (iOS/Android)<br>\nto use them you need to place the file in the src directory next to the<br>\nresource file and make sure the name of the font is correct in the<br>\ntext field (for iOS). When unavailable the standard fonts will be used.<br>\n<b>Important</b> the file name must have a .ttf extension!");
    trueTypeFontSizeValue.setEnabled(false);
    // NOI18N
    trueTypeFontSizeValue.setName("trueTypeFontSizeValue");
    trueTypeFontSizeValue.addChangeListener(formListener);
    org.jdesktop.layout.GroupLayout jPanel7Layout = new org.jdesktop.layout.GroupLayout(jPanel7);
    jPanel7.setLayout(jPanel7Layout);
    jPanel7Layout.setHorizontalGroup(jPanel7Layout.createParallelGroup(org.jdesktop.layout.GroupLayout.LEADING).add(jPanel7Layout.createSequentialGroup().addContainerGap().add(jPanel7Layout.createParallelGroup(org.jdesktop.layout.GroupLayout.LEADING).add(jPanel7Layout.createSequentialGroup().add(jPanel7Layout.createParallelGroup(org.jdesktop.layout.GroupLayout.TRAILING).add(org.jdesktop.layout.GroupLayout.LEADING, deriveFont).add(org.jdesktop.layout.GroupLayout.LEADING, jPanel7Layout.createSequentialGroup().add(systemFont).addPreferredGap(org.jdesktop.layout.LayoutStyle.RELATED).add(bitmapFont))).addPreferredGap(org.jdesktop.layout.LayoutStyle.RELATED, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE).add(jPanel7Layout.createParallelGroup(org.jdesktop.layout.GroupLayout.TRAILING).add(fontHelp).add(deriveHelp7)).addContainerGap()).add(jPanel7Layout.createSequentialGroup().add(deriveTextDecoration).addContainerGap(812, Short.MAX_VALUE)).add(org.jdesktop.layout.GroupLayout.TRAILING, jPanel7Layout.createSequentialGroup().add(jPanel7Layout.createParallelGroup(org.jdesktop.layout.GroupLayout.TRAILING).add(jPanel7Layout.createSequentialGroup().add(jLabel7).addPreferredGap(org.jdesktop.layout.LayoutStyle.RELATED).add(textDecorationCombo, 0, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)).add(org.jdesktop.layout.GroupLayout.LEADING, jPanel7Layout.createSequentialGroup().add(jPanel7Layout.createParallelGroup(org.jdesktop.layout.GroupLayout.LEADING).add(jLabel13).add(jLabel12).add(fontFace, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE, 157, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE)).addPreferredGap(org.jdesktop.layout.LayoutStyle.RELATED).add(jPanel7Layout.createParallelGroup(org.jdesktop.layout.GroupLayout.LEADING).add(trueTypeFont, 0, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE).add(trueTypeFontSizeOption, 0, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE).add(fontStyle, 0, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)).addPreferredGap(org.jdesktop.layout.LayoutStyle.RELATED).add(jPanel7Layout.createParallelGroup(org.jdesktop.layout.GroupLayout.LEADING).add(fontSize, 0, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE).add(trueTypeFontSizeValue))).add(org.jdesktop.layout.GroupLayout.LEADING, bitmapFontValue, 0, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)).addPreferredGap(org.jdesktop.layout.LayoutStyle.RELATED).add(addNewBitmapFont).add(387, 387, 387)))));
    jPanel7Layout.linkSize(new java.awt.Component[] { bitmapFont, systemFont }, org.jdesktop.layout.GroupLayout.HORIZONTAL);
    jPanel7Layout.linkSize(new java.awt.Component[] { deriveHelp7, fontHelp }, org.jdesktop.layout.GroupLayout.HORIZONTAL);
    jPanel7Layout.setVerticalGroup(jPanel7Layout.createParallelGroup(org.jdesktop.layout.GroupLayout.LEADING).add(jPanel7Layout.createSequentialGroup().addContainerGap().add(jPanel7Layout.createParallelGroup(org.jdesktop.layout.GroupLayout.TRAILING).add(jPanel7Layout.createSequentialGroup().add(deriveFont).addPreferredGap(org.jdesktop.layout.LayoutStyle.RELATED).add(jPanel7Layout.createParallelGroup(org.jdesktop.layout.GroupLayout.BASELINE).add(bitmapFont).add(systemFont))).add(jPanel7Layout.createSequentialGroup().add(deriveHelp7).addPreferredGap(org.jdesktop.layout.LayoutStyle.RELATED).add(fontHelp))).addPreferredGap(org.jdesktop.layout.LayoutStyle.RELATED).add(jPanel7Layout.createParallelGroup(org.jdesktop.layout.GroupLayout.BASELINE).add(fontFace, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE).add(fontSize, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE).add(fontStyle, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE)).addPreferredGap(org.jdesktop.layout.LayoutStyle.RELATED).add(jPanel7Layout.createParallelGroup(org.jdesktop.layout.GroupLayout.BASELINE).add(jLabel12).add(trueTypeFont, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE)).add(9, 9, 9).add(jPanel7Layout.createParallelGroup(org.jdesktop.layout.GroupLayout.CENTER).add(trueTypeFontSizeValue, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE).add(trueTypeFontSizeOption, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE).add(jLabel13)).addPreferredGap(org.jdesktop.layout.LayoutStyle.RELATED).add(jPanel7Layout.createParallelGroup(org.jdesktop.layout.GroupLayout.BASELINE).add(addNewBitmapFont).add(bitmapFontValue, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE)).addPreferredGap(org.jdesktop.layout.LayoutStyle.UNRELATED).add(deriveTextDecoration).addPreferredGap(org.jdesktop.layout.LayoutStyle.UNRELATED).add(jPanel7Layout.createParallelGroup(org.jdesktop.layout.GroupLayout.BASELINE).add(jLabel7).add(textDecorationCombo, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE)).addContainerGap(227, Short.MAX_VALUE)));
    addTabs.addTab("Font", jPanel7);
    // NOI18N
    jScrollPane2.setName("jScrollPane2");
    // NOI18N
    help.setContentType("text/html");
    help.setEditable(false);
    // NOI18N
    help.setName("help");
    jScrollPane2.setViewportView(help);
    addTabs.addTab("Help", jScrollPane2);
    styleType.setText("Unselected");
    // NOI18N
    styleType.setName("styleType");
    styleHelp.setText("Component Help");
    // NOI18N
    styleHelp.setName("styleHelp");
    styleHelp.addActionListener(formListener);
    videoTutorial.setText("Video Tutorial");
    // NOI18N
    videoTutorial.setName("videoTutorial");
    videoTutorial.addActionListener(formListener);
    org.jdesktop.layout.GroupLayout layout = new org.jdesktop.layout.GroupLayout(this);
    this.setLayout(layout);
    layout.setHorizontalGroup(layout.createParallelGroup(org.jdesktop.layout.GroupLayout.LEADING).add(org.jdesktop.layout.GroupLayout.TRAILING, layout.createSequentialGroup().addContainerGap().add(layout.createParallelGroup(org.jdesktop.layout.GroupLayout.TRAILING).add(org.jdesktop.layout.GroupLayout.LEADING, previewPane, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE).add(org.jdesktop.layout.GroupLayout.LEADING, addTabs).add(org.jdesktop.layout.GroupLayout.LEADING, layout.createSequentialGroup().add(jLabel1).addPreferredGap(org.jdesktop.layout.LayoutStyle.UNRELATED).add(componentName, 0, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE).add(18, 18, 18).add(styleType).addPreferredGap(org.jdesktop.layout.LayoutStyle.RELATED).add(styleHelp).addPreferredGap(org.jdesktop.layout.LayoutStyle.RELATED).add(videoTutorial)).add(org.jdesktop.layout.GroupLayout.LEADING, jLabel6)).addContainerGap()));
    layout.setVerticalGroup(layout.createParallelGroup(org.jdesktop.layout.GroupLayout.LEADING).add(layout.createSequentialGroup().addContainerGap().add(layout.createParallelGroup(org.jdesktop.layout.GroupLayout.BASELINE).add(jLabel1).add(componentName, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE).add(styleType).add(styleHelp).add(videoTutorial)).addPreferredGap(org.jdesktop.layout.LayoutStyle.RELATED).add(addTabs).addPreferredGap(org.jdesktop.layout.LayoutStyle.RELATED).add(jLabel6).addPreferredGap(org.jdesktop.layout.LayoutStyle.UNRELATED).add(previewPane, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE, 92, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE).addContainerGap()));
}
Also used : JTabbedPane(javax.swing.JTabbedPane) DefaultComboBoxModel(javax.swing.DefaultComboBoxModel) JComboBox(javax.swing.JComboBox) BorderLayout(java.awt.BorderLayout) JButton(javax.swing.JButton) CodenameOneComponentWrapper(com.codename1.ui.resource.util.CodenameOneComponentWrapper)

Example 47 with Property

use of com.codename1.rad.models.Property in project CodenameOne by codenameone.

the class RADActionBoundUIIDSample method start.

public void start() {
    if (current != null) {
        current.show();
        return;
    }
    Form hi = new Form("Toggled Actions Sample", new BorderLayout());
    // Create a tag fo the online status property.
    Tag TAG_ONLINE = new Tag("online");
    // Create an action that will indicte the online/offline status
    ActionNode status = UI.action(// on state of TAG_ONLINE property.
    UI.label(person -> {
        if (person.isFalsey(TAG_ONLINE)) {
            return "Offline";
        } else {
            return "Online";
        }
    }), // Depending on state of TAG_ONLINE property
    UI.uiid(person -> {
        if (person.isFalsey(TAG_ONLINE)) {
            return "LoggedOutStatusButton";
        } else {
            return "LoggedInStatusButton";
        }
    }), // Icon for the action
    UI.icon(FontImage.MATERIAL_PERSON), // define it to always return true so action is always visible.
    UI.condition(person -> {
        return true;
    }));
    // A User entity we use for the models.
    class User extends Entity {
    }
    entityTypeBuilder(User.class).Boolean(TAG_ONLINE).string(Thing.name).factory(cls -> {
        return new User();
    }).build();
    // Create an entity list that will hold several users.
    EntityList el = new EntityList();
    for (int i = 0; i < 200; i++) {
        User u = new User();
        u.set(Thing.name, "User " + i);
        u.set(TAG_ONLINE, i % 2 == 0);
        el.add(u);
    }
    // The ListNode is a wrapper that will be passed to our View so that
    // they can access our action.
    ListNode node = new ListNode(// for each row.
    UI.actions(ProfileListView.ACCOUNT_LIST_ROW_ACTIONS, status));
    // Use a ProfileListView to display all of the users
    // https://shannah.github.io/CodeRAD/javadoc/com/codename1/rad/ui/entityviews/ProfileListView.html
    ProfileListView plv = new ProfileListView(el, node, 8);
    plv.setScrollableY(true);
    // In order to respond to events raised by the action, our view needs to be wrapped
    // in a controller.  Normally our form would have a FormViewController so we could
    // just use FormController, but this sample is compressed to be inside
    // a single method here so we'll create a dedicated ViewController for the list
    ViewController ctrl = new ViewController(null);
    ctrl.setView(plv);
    ctrl.addActionListener(status, evt -> {
        // The action was pressed by the user
        // Update the model's online status
        User u = (User) evt.getEntity();
        u.set(TAG_ONLINE, u.isFalsey(TAG_ONLINE));
    // This will trigger a property change in the model which will update the view.
    });
    hi.add(CENTER, plv);
    hi.show();
}
Also used : ViewNode(com.codename1.rad.nodes.ViewNode) Toolbar(com.codename1.ui.Toolbar) BoxLayout(com.codename1.ui.layouts.BoxLayout) EntityTypeBuilder.entityTypeBuilder(com.codename1.rad.models.EntityTypeBuilder.entityTypeBuilder) Form(com.codename1.ui.Form) NetworkEvent(com.codename1.io.NetworkEvent) ListNode(com.codename1.rad.nodes.ListNode) Display(com.codename1.ui.Display) FontImage(com.codename1.ui.FontImage) Label(com.codename1.ui.Label) CN(com.codename1.ui.CN) ViewController(com.codename1.rad.controllers.ViewController) UI(com.codename1.rad.ui.UI) Entity(com.codename1.rad.models.Entity) Tag(com.codename1.rad.models.Tag) Resources(com.codename1.ui.util.Resources) EntityList(com.codename1.rad.models.EntityList) IOException(java.io.IOException) ActionNode(com.codename1.rad.nodes.ActionNode) Log(com.codename1.io.Log) BorderLayout(com.codename1.ui.layouts.BorderLayout) ProfileListView(com.codename1.rad.ui.entityviews.ProfileListView) UIManager(com.codename1.ui.plaf.UIManager) Dialog(com.codename1.ui.Dialog) Thing(com.codename1.rad.schemas.Thing) EntityListView(com.codename1.rad.ui.entityviews.EntityListView) Entity(com.codename1.rad.models.Entity) BorderLayout(com.codename1.ui.layouts.BorderLayout) Form(com.codename1.ui.Form) ViewController(com.codename1.rad.controllers.ViewController) ActionNode(com.codename1.rad.nodes.ActionNode) EntityList(com.codename1.rad.models.EntityList) ProfileListView(com.codename1.rad.ui.entityviews.ProfileListView) Tag(com.codename1.rad.models.Tag) ListNode(com.codename1.rad.nodes.ListNode)

Example 48 with Property

use of com.codename1.rad.models.Property in project CodenameOne by codenameone.

the class RADStatusViewSample method start.

public void start() {
    if (current != null) {
        current.show();
        return;
    }
    Form hi = new Form("Hi World", BoxLayout.y());
    Tag TAG_ONLINE = new Tag("online");
    class User extends Entity {
    }
    entityTypeBuilder(User.class).Boolean(TAG_ONLINE).string(Thing.name).factory(cls -> {
        return new User();
    }).build();
    /**
     * A view that displays the status (online/offline) of an entity using
     * the TAG_ONLINE tag.
     */
    class StatusView extends AbstractEntityView {

        // ViewNode.  Not used;
        ViewNode node;

        // Flag to indicate the current state online/offline of the view
        private boolean online;

        // Label used
        private Label label = new Label();

        /**
         * Creates a new StatusView for user model.
         */
        StatusView(User user) {
            super(user);
            this.node = new ViewNode(new Attribute[] {});
            setLayout(new BorderLayout());
            $(this).setMargin(0).setPadding(0);
            this.add(CENTER, label);
            update();
        }

        @Override
        public void update() {
            // Check to see if the model is online.
            boolean modelOnline = !getEntity().isFalsey(TAG_ONLINE);
            if (modelOnline != online) {
                // Model state has changed since last update
                online = modelOnline;
                if (online) {
                    label.setText("Online");
                    label.setUIID("OnlineLabel");
                    FontImage.setMaterialIcon(label, FontImage.MATERIAL_CONNECTED_TV);
                } else {
                    label.setText("Offline");
                    label.setUIID("OfflineLabel");
                    FontImage.setMaterialIcon(label, FontImage.MATERIAL_OFFLINE_BOLT);
                }
                Form f = getComponentForm();
                if (f != null) {
                    // Changing the text in this case may change the layout size
                    // of the status view here, so it is best to just issue a revalidate
                    // for the whole form.  If the status change didn't change
                    // the layout size, then we could have just skipped this step.
                    f.revalidateWithAnimationSafety();
                }
            }
        }

        @Override
        public void commit() {
        // Don't need to implement commit() because this view doesn't
        // "update" the model - it only shows model stats.
        }

        @Override
        public Node getViewNode() {
            return node;
        }
    }
    // Create a new user
    User user = new User();
    // Create a status view for the user
    StatusView statusView = new StatusView(user);
    // Add a UI switch to toggle user state between online and offline
    Switch onlineSwitch = new Switch("Online");
    onlineSwitch.addChangeListener(e -> {
        // Set the user TAG_ONLINE status.  This will trigger a property
        // change in the model and update the view.
        user.set(TAG_ONLINE, onlineSwitch.isOn());
    });
    hi.add(onlineSwitch);
    hi.add(statusView);
    hi.show();
}
Also used : Switch(com.codename1.components.Switch) ViewNode(com.codename1.rad.nodes.ViewNode) Toolbar(com.codename1.ui.Toolbar) BoxLayout(com.codename1.ui.layouts.BoxLayout) Resources(com.codename1.ui.util.Resources) AbstractEntityView(com.codename1.rad.ui.AbstractEntityView) EntityTypeBuilder.entityTypeBuilder(com.codename1.rad.models.EntityTypeBuilder.entityTypeBuilder) Form(com.codename1.ui.Form) Log(com.codename1.io.Log) BorderLayout(com.codename1.ui.layouts.BorderLayout) UIManager(com.codename1.ui.plaf.UIManager) ComponentSelector.$(com.codename1.ui.ComponentSelector.$) Dialog(com.codename1.ui.Dialog) FontImage(com.codename1.ui.FontImage) Label(com.codename1.ui.Label) Node(com.codename1.rad.nodes.Node) CN(com.codename1.ui.CN) Thing(com.codename1.rad.schemas.Thing) Attribute(com.codename1.rad.models.Attribute) Entity(com.codename1.rad.models.Entity) Tag(com.codename1.rad.models.Tag) Entity(com.codename1.rad.models.Entity) Form(com.codename1.ui.Form) Attribute(com.codename1.rad.models.Attribute) AbstractEntityView(com.codename1.rad.ui.AbstractEntityView) Label(com.codename1.ui.Label) BorderLayout(com.codename1.ui.layouts.BorderLayout) Switch(com.codename1.components.Switch) ViewNode(com.codename1.rad.nodes.ViewNode) Tag(com.codename1.rad.models.Tag)

Example 49 with Property

use of com.codename1.rad.models.Property in project CodenameOne by codenameone.

the class LayoutTests method boxLayoutTests.

public boolean boxLayoutTests() throws Exception {
    System.out.println("BoxLayout Tests");
    BoxLayout l = new BoxLayout(BoxLayout.Y_AXIS);
    Container cnt = new Container(l);
    cnt.setRTL(false);
    int w = 500;
    int h = 500;
    cnt.setWidth(w);
    cnt.setHeight(h);
    Component child1 = createEmptyComponent(100, 100);
    Component child2 = createEmptyComponent(200, 50);
    cnt.add(child1).add(child2);
    $(child1, child2, cnt).setPadding(0).setMargin(0);
    cnt.layoutContainer();
    assertEqual(0, child1.getY(), "child1 should be aligned top");
    assertEqual(100, child2.getY(), "child 2 should be aligned top just after child1 ");
    assertEqual(0, child1.getX(), "Child1 not aligned left");
    assertEqual(w, child1.getWidth(), "Child1 not taking full width");
    assertEqual(0, child2.getX(), "Child2 not aligned left");
    assertEqual(w, child2.getWidth(), "Child2 not taking full width");
    l.setAlign(BOTTOM);
    cnt.setShouldCalcPreferredSize(true);
    cnt.layoutContainer();
    assertEqual(500, child2.getY() + child2.getHeight(), "Child2 should be aligned bottom");
    assertEqual(450, child1.getY() + child1.getHeight(), "child 1 should be aligned bottom just above child2");
    assertEqual(0, child1.getX(), "Child1 not aligned left");
    assertEqual(w, child1.getWidth(), "Child1 not taking full width");
    assertEqual(0, child2.getX(), "Child2 not aligned left");
    assertEqual(w, child2.getWidth(), "Child2 not taking full width");
    l.setAlign(CENTER);
    cnt.setShouldCalcPreferredSize(true);
    cnt.layoutContainer();
    assertEqual(325, child2.getY() + child2.getHeight(), "Child2 should be aligned bottom");
    assertEqual(175, child1.getY(), "child 1 should be aligned bottom just above child2");
    assertEqual(0, child1.getX(), "Child1 not aligned left");
    assertEqual(w, child1.getWidth(), "Child1 not taking full width");
    assertEqual(0, child2.getX(), "Child2 not aligned left");
    assertEqual(w, child2.getWidth(), "Child2 not taking full width");
    Component child3 = createEmptyComponent(500, 500);
    $(child3).setPadding(0).setMargin(0);
    cnt.add(child3);
    // This is a component to tip it over the edge.
    // NOTICE:  When the children fill the height of the container, the align property
    // ceases to have meaning.  We do NOT try to align the components once the container is filled.
    cnt.setShouldCalcPreferredSize(true);
    cnt.layoutContainer();
    assertEqual(0, child1.getY(), "Child1 should be aligned top");
    assertEqual(100, child2.getY(), "Child 2 should be aligned just after");
    assertEqual(150, child3.getY(), "Child 3 should be just after");
    assertEqual(0, child1.getX(), "Child1 not aligned left");
    assertEqual(w, child1.getWidth(), "Child1 not taking full width");
    assertEqual(0, child2.getX(), "Child2 not aligned left");
    assertEqual(w, child2.getWidth(), "Child2 not taking full width");
    l.setAlign(BOTTOM);
    cnt.setShouldCalcPreferredSize(true);
    cnt.layoutContainer();
    assertEqual(0, child1.getY(), "Child1 should be aligned top");
    assertEqual(100, child2.getY(), "Child 2 should be aligned just after");
    assertEqual(150, child3.getY(), "Child 3 should be just after");
    assertEqual(0, child1.getX(), "Child1 not aligned left");
    assertEqual(w, child1.getWidth(), "Child1 not taking full width");
    assertEqual(0, child2.getX(), "Child2 not aligned left");
    assertEqual(w, child2.getWidth(), "Child2 not taking full width");
    // Now test the x axis
    l = BoxLayout.x();
    cnt.setLayout(l);
    cnt.removeComponent(child3);
    cnt.setShouldCalcPreferredSize(true);
    cnt.layoutContainer();
    assertEqual(0, child1.getX(), "Child1 not aligned left");
    assertEqual(100, child1.getWidth(), "Child2 not taking preferred width");
    assertEqual(h, child1.getHeight(), "Child1 not taking full height");
    assertEqual(0, child1.getY(), "Child1 not aligning top");
    assertEqual(100, child2.getX(), "Child2 should be aligned next to child1");
    assertEqual(200, child2.getWidth(), "Child 2 not taking preferred width");
    assertEqual(h, child2.getHeight(), "Child 2 not taking full height of container");
    assertEqual(0, child2.getY(), "Child2 not aligning top");
    l.setAlign(CENTER);
    cnt.setShouldCalcPreferredSize(true);
    cnt.layoutContainer();
    assertEqual(100, child1.getX(), "Child1 not aligned left");
    assertEqual(100, child1.getWidth(), "Child2 not taking preferred width");
    assertEqual(h, child1.getHeight(), "Child1 not taking full height");
    assertEqual(0, child1.getY(), "Child1 not aligning top");
    assertEqual(200, child2.getX(), "Child2 should be aligned next to child1");
    assertEqual(200, child2.getWidth(), "Child 2 not taking preferred width");
    assertEqual(h, child2.getHeight(), "Child 2 not taking full height of container");
    assertEqual(0, child2.getY(), "Child2 not aligning top");
    l.setAlign(RIGHT);
    cnt.setShouldCalcPreferredSize(true);
    cnt.layoutContainer();
    assertEqual(200, child1.getX(), "Child1 not aligned left");
    assertEqual(100, child1.getWidth(), "Child2 not taking preferred width");
    assertEqual(h, child1.getHeight(), "Child1 not taking full height");
    assertEqual(0, child1.getY(), "Child1 not aligning top");
    assertEqual(300, child2.getX(), "Child2 should be aligned next to child1");
    assertEqual(200, child2.getWidth(), "Child 2 not taking preferred width");
    assertEqual(h, child2.getHeight(), "Child 2 not taking full height of container");
    assertEqual(0, child2.getY(), "Child2 not aligning top");
    return true;
}
Also used : BoxLayout(com.codename1.ui.layouts.BoxLayout)

Example 50 with Property

use of com.codename1.rad.models.Property in project CodenameOne by codenameone.

the class Resources method loadTheme.

Hashtable loadTheme(String id, boolean newerVersion) throws IOException {
    Hashtable theme = new Hashtable();
    String densityStr = Display.getInstance().getDensityStr();
    String platformName = Display.getInstance().getPlatformName();
    if ("HTML5".equals(platformName)) {
        platformName = Display.getInstance().getProperty("HTML5.platformName", "mac");
    }
    String deviceType = Display.getInstance().isDesktop() ? "desktop" : Display.getInstance().isTablet() ? "tablet" : "phone";
    String platformPrefix = "platform-" + platformName + "-";
    String densityPrefix = "density-" + densityStr + "-";
    String devicePrefix = "device-" + deviceType + "-";
    String platformDensityPrefix = platformPrefix + densityPrefix;
    String devicePlatformPrefix = devicePrefix + platformPrefix;
    String devicePlatformDensityPrefix = devicePlatformPrefix + densityPrefix;
    theme.put("name", id);
    // marks the theme as uninitialized so we can finish "wiring" cached resources
    theme.put("uninitialized", Boolean.TRUE);
    int size = input.readShort();
    List<String> fontKeys = new ArrayList<String>();
    Map<String, Float> fontScaleRules = null;
    class MediaRule {

        int matchCount;

        int bestMatchScore;

        String rawKey;

        String translatedKey;
    }
    Map<String, MediaRule> mediaRules = new HashMap<String, MediaRule>();
    int defaultFontSizeSetPriority = 0;
    for (int iter = 0; iter < size; iter++) {
        String key = input.readUTF();
        if (key.startsWith("@")) {
            theme.put(key, input.readUTF());
            if (enableMediaQueries) {
                if (key.endsWith("-font-scale")) {
                    if (fontScaleRules == null) {
                        fontScaleRules = new LinkedHashMap<String, Float>();
                    }
                    fontScaleRules.put(key, Float.parseFloat((String) theme.get(key)));
                }
            }
            if (key.equals("@defaultFontSizeInt") && defaultFontSizeSetPriority < 1) {
                int themeMedianFontSize = Integer.parseInt((String) theme.get(key));
                if (themeMedianFontSize > 0) {
                    double adjustedFontSize = themeMedianFontSize * CN.convertToPixels(1f) * 25.4 / (CN.isDesktop() ? 96f : 160f);
                    Font.setDefaultFont(Font.createTrueTypeFont(Font.NATIVE_MAIN_REGULAR, (float) adjustedFontSize / CN.convertToPixels(1f)));
                    defaultFontSizeSetPriority = 1;
                }
            }
            if (CN.isTablet() && key.equals("@defaultTabletFontSizeInt") && defaultFontSizeSetPriority < 2) {
                int themeMedianFontSize = Integer.parseInt((String) theme.get(key));
                if (themeMedianFontSize > 0) {
                    double adjustedFontSize = themeMedianFontSize * CN.convertToPixels(1f) * 25.4 / (CN.isDesktop() ? 96f : 160f);
                    Font.setDefaultFont(Font.createTrueTypeFont(Font.NATIVE_MAIN_REGULAR, (float) adjustedFontSize / CN.convertToPixels(1f)));
                    defaultFontSizeSetPriority = 2;
                }
            }
            if (CN.isDesktop() && key.equals("@defaultDesktopFontSizeInt") && defaultFontSizeSetPriority < 3) {
                int themeMedianFontSize = Integer.parseInt((String) theme.get(key));
                if (themeMedianFontSize > 0) {
                    double adjustedFontSize = themeMedianFontSize * CN.convertToPixels(1f) * 25.4 / (CN.isDesktop() ? 96f : 160f);
                    Font.setDefaultFont(Font.createTrueTypeFont(Font.NATIVE_MAIN_REGULAR, (float) adjustedFontSize / CN.convertToPixels(1f)));
                    defaultFontSizeSetPriority = 3;
                }
            }
            continue;
        }
        if (enableMediaQueries) {
            String subkey = key;
            boolean mediaMatch = true;
            int matchCount = 0;
            int bestMatchScore = 0;
            if (subkey.startsWith("device-")) {
                if (!subkey.startsWith(devicePrefix)) {
                    mediaMatch = false;
                } else {
                    subkey = subkey.substring(devicePrefix.length());
                    matchCount++;
                    bestMatchScore = Math.max(50, bestMatchScore);
                }
            }
            if (mediaMatch && subkey.startsWith("platform-")) {
                if (!subkey.startsWith(platformPrefix)) {
                    mediaMatch = false;
                } else {
                    subkey = subkey.substring(platformPrefix.length());
                    matchCount++;
                    bestMatchScore = Math.max(100, bestMatchScore);
                }
            }
            if (mediaMatch && subkey.startsWith("density-")) {
                if (!subkey.startsWith(densityPrefix)) {
                    mediaMatch = false;
                } else {
                    subkey = subkey.substring(densityPrefix.length());
                    matchCount++;
                    bestMatchScore = Math.max(10, bestMatchScore);
                }
            }
            if (mediaMatch) {
                if (mediaRules == null) {
                    mediaRules = new HashMap<String, MediaRule>();
                }
                MediaRule rule = mediaRules.get(subkey);
                boolean replace = false;
                if (rule == null) {
                    replace = true;
                }
                if (!replace && rule.matchCount <= matchCount) {
                    replace = true;
                }
                if (!replace && rule.bestMatchScore <= bestMatchScore) {
                    replace = true;
                }
                if (replace) {
                    if (rule == null) {
                        rule = new MediaRule();
                        mediaRules.put(subkey, rule);
                    }
                    rule.bestMatchScore = bestMatchScore;
                    rule.matchCount = matchCount;
                    rule.rawKey = key;
                    rule.translatedKey = subkey;
                }
            }
        }
        // if this is a simple numeric value
        if (key.endsWith("Color")) {
            theme.put(key, Integer.toHexString(input.readInt()));
            continue;
        }
        if (key.endsWith("align") || key.endsWith("textDecoration")) {
            theme.put(key, new Integer(input.readShort()));
            continue;
        }
        // if this is a short numeric value for transparency
        if (key.endsWith("ransparency")) {
            theme.put(key, "" + (input.readByte() & 0xff));
            continue;
        }
        if (key.endsWith("fgAlpha")) {
            theme.put(key, (input.readInt() & 0xff));
            continue;
        }
        if (key.endsWith("opacity")) {
            theme.put(key, "" + (input.readInt() & 0xff));
            continue;
        }
        if (key.endsWith("elevation")) {
            theme.put(key, (input.readInt() & 0xff));
            continue;
        }
        if (key.endsWith("iconGap")) {
            theme.put(key, input.readFloat());
            continue;
        }
        if (key.endsWith("iconGapUnit")) {
            theme.put(key, input.readByte());
            continue;
        }
        if (key.endsWith("surface")) {
            theme.put(key, (input.readBoolean()));
            continue;
        }
        // if this is a padding or margin then we will have the 4 values as bytes
        if (key.endsWith("adding") || key.endsWith("argin")) {
            if (minorVersion > 7) {
                float p1 = input.readFloat();
                float p2 = input.readFloat();
                float p3 = input.readFloat();
                float p4 = input.readFloat();
                theme.put(key, "" + p1 + "," + p2 + "," + p3 + "," + p4);
            } else {
                int p1 = input.readByte() & 0xff;
                int p2 = input.readByte() & 0xff;
                int p3 = input.readByte() & 0xff;
                int p4 = input.readByte() & 0xff;
                theme.put(key, "" + p1 + "," + p2 + "," + p3 + "," + p4);
            }
            continue;
        }
        // padding and or margin type
        if (key.endsWith("Unit")) {
            byte p1 = input.readByte();
            byte p2 = input.readByte();
            byte p3 = input.readByte();
            byte p4 = input.readByte();
            theme.put(key, new byte[] { p1, p2, p3, p4 });
            continue;
        }
        // border
        if (key.endsWith("order")) {
            int borderType = input.readShort() & 0xffff;
            Object b = createBorder(input, borderType);
            theme.put(key, b);
            continue;
        }
        // if this is a font
        if (key.endsWith("ont")) {
            Font f;
            // is this a new font?
            if (input.readBoolean()) {
                String fontId = input.readUTF();
                f = (Font) resources.get(fontId);
                // if the font is not yet loaded
                if (f == null) {
                    theme.put(key, fontId);
                    continue;
                }
            } else {
                f = Font.createSystemFont(input.readByte(), input.readByte(), input.readByte());
                if (minorVersion > 4) {
                    boolean hasTTF = input.readBoolean();
                    if (hasTTF) {
                        String fileName = input.readUTF();
                        String fontName = input.readUTF();
                        int sizeSetting = input.readInt();
                        float fontSize = input.readFloat();
                        if (Font.isTrueTypeFileSupported()) {
                            fontKeys.add(key);
                            f = createTrueTypeFont(f, fontName, fileName, fontSize, sizeSetting);
                        }
                    }
                }
            }
            theme.put(key, f);
            continue;
        }
        // the background property
        if (key.endsWith("ackground")) {
            int type = input.readByte() & 0xff;
            int pos = key.indexOf('.');
            if (pos > -1) {
                key = key.substring(0, pos);
            } else {
                key = "";
            }
            theme.put(key + Style.BACKGROUND_TYPE, new Byte((byte) type));
            switch(type) {
                // Scaled Image
                case 0xF1:
                // Tiled Both Image
                case MAGIC_INDEXED_IMAGE_LEGACY:
                    // the image name coupled with the type
                    theme.put(key + Style.BG_IMAGE, input.readUTF());
                    break;
                // Aligned Image
                case 0xf5:
                // Tiled Vertically Image
                case 0xF2:
                // Tiled Horizontally Image
                case 0xF3:
                    // the image name coupled with the type and with alignment information
                    String imageName = input.readUTF();
                    theme.put(key + Style.BG_IMAGE, imageName);
                    byte align = input.readByte();
                    theme.put(key + Style.BACKGROUND_ALIGNMENT, new Byte(align));
                    break;
                // Horizontal Linear Gradient
                case 0xF6:
                // Vertical Linear Gradient
                case 0xF7:
                    Float c = new Float(0.5f);
                    theme.put(key + Style.BACKGROUND_GRADIENT, new Object[] { new Integer(input.readInt()), new Integer(input.readInt()), c, c, new Float(1) });
                    break;
                // Radial Gradient
                case 0xF8:
                    int c1 = input.readInt();
                    int c2 = input.readInt();
                    float f1 = input.readFloat();
                    float f2 = input.readFloat();
                    float radialSize = 1;
                    if (minorVersion > 1) {
                        radialSize = input.readFloat();
                    }
                    theme.put(key + Style.BACKGROUND_GRADIENT, new Object[] { new Integer(c1), new Integer(c2), new Float(f1), new Float(f2), new Float(radialSize) });
                    break;
            }
            continue;
        }
        // if this is a background image bgImage
        if (key.endsWith("derive")) {
            theme.put(key, input.readUTF());
            continue;
        }
        // if this is a background image bgImage
        if (key.endsWith("bgImage")) {
            String imageId = input.readUTF();
            Image i = getImage(imageId);
            // if the font is not yet loaded
            if (i == null) {
                theme.put(key, imageId);
                continue;
            }
            theme.put(key, i);
            continue;
        }
        if (key.endsWith("scaledImage")) {
            if (input.readBoolean()) {
                theme.put(key, "true");
            } else {
                theme.put(key, "false");
            }
            continue;
        }
        if (key.endsWith(Style.BACKGROUND_TYPE) || key.endsWith(Style.BACKGROUND_ALIGNMENT)) {
            theme.put(key, new Byte(input.readByte()));
            continue;
        }
        if (key.endsWith(Style.BACKGROUND_GRADIENT)) {
            if (minorVersion < 2) {
                theme.put(key, new Object[] { new Integer(input.readInt()), new Integer(input.readInt()), new Float(input.readFloat()), new Float(input.readFloat()) });
            } else {
                theme.put(key, new Object[] { new Integer(input.readInt()), new Integer(input.readInt()), new Float(input.readFloat()), new Float(input.readFloat()), new Float(input.readFloat()) });
            }
            continue;
        }
        // thow an exception no idea what this is
        throw new IOException("Error while trying to read theme property: " + key);
    }
    if (enableMediaQueries) {
        if (mediaRules != null && !mediaRules.isEmpty()) {
            for (MediaRule rule : mediaRules.values()) {
                theme.put(rule.translatedKey, theme.get(rule.rawKey));
            }
        }
        if (fontScaleRules != null && !fontKeys.isEmpty()) {
            float scale = 1f;
            for (Map.Entry<String, Float> rule : fontScaleRules.entrySet()) {
                String key = rule.getKey();
                String skey = key.substring(1);
                if (skey.startsWith("device-")) {
                    if (skey.startsWith(devicePrefix)) {
                        skey = skey.substring(devicePrefix.length());
                    } else {
                        continue;
                    }
                }
                if (skey.startsWith("platform-")) {
                    if (skey.startsWith(platformPrefix)) {
                        skey = skey.substring(platformPrefix.length());
                    } else {
                        continue;
                    }
                }
                if (skey.startsWith("density-")) {
                    if (skey.startsWith(densityPrefix)) {
                        skey = skey.substring(densityPrefix.length());
                    } else {
                        continue;
                    }
                }
                if ("font-scale".equals(skey)) {
                    scale *= rule.getValue();
                }
            }
            if (Math.abs(scale - 1f) > 0.01) {
                for (String fontKey : fontKeys) {
                    Font f = (Font) theme.get(fontKey);
                    if (f != null && f.isTTFNativeFont()) {
                        try {
                            f = f.derive(f.getPixelSize() * scale, f.getStyle());
                            theme.put(fontKey, f);
                        } catch (Exception ex) {
                            Log.p("Failed to derive font " + f + " while loading font key " + fontKey + " from resource file. " + ex.getMessage());
                            Log.e(ex);
                        }
                    }
                }
            }
        }
    }
    return theme;
}
Also used : HashMap(java.util.HashMap) LinkedHashMap(java.util.LinkedHashMap) ArrayList(java.util.ArrayList) Hashtable(java.util.Hashtable) IOException(java.io.IOException) IOException(java.io.IOException) UnsupportedEncodingException(java.io.UnsupportedEncodingException) AnimationObject(com.codename1.ui.animations.AnimationObject) HashMap(java.util.HashMap) LinkedHashMap(java.util.LinkedHashMap) Map(java.util.Map)

Aggregations

Entity (com.codename1.rad.models.Entity)22 Property (com.codename1.rad.models.Property)16 IOException (java.io.IOException)11 ResultParser (com.codename1.rad.io.ResultParser)10 ArrayList (java.util.ArrayList)10 SimpleDateFormat (com.codename1.l10n.SimpleDateFormat)9 Component (com.codename1.ui.Component)9 Element (com.codename1.xml.Element)8 ParseException (com.codename1.l10n.ParseException)7 Container (com.codename1.ui.Container)7 Label (com.codename1.ui.Label)7 SortedProperties (com.codename1.ant.SortedProperties)6 Log (com.codename1.io.Log)6 Form (com.codename1.ui.Form)6 AnimationObject (com.codename1.ui.animations.AnimationObject)6 Map (java.util.Map)6 Thing (com.codename1.rad.schemas.Thing)5 XMLParser (com.codename1.xml.XMLParser)5 StringReader (java.io.StringReader)5 List (java.util.List)5