se.trixon.pacoma.ui.PropertiesPanel.java Source code

Java tutorial

Introduction

Here is the source code for se.trixon.pacoma.ui.PropertiesPanel.java

Source

/*
 * Copyright 2017 Patrik Karlsson.
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *      http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */
package se.trixon.pacoma.ui;

import java.awt.Dimension;
import java.util.ArrayList;
import java.util.ResourceBundle;
import javax.swing.DefaultComboBoxModel;
import javax.swing.JSpinner;
import org.apache.commons.lang3.StringUtils;
import se.trixon.almond.util.Dict;
import se.trixon.almond.util.SystemHelper;
import se.trixon.pacoma.collage.Collage;

/**
 *
 * @author Patrik Karlsson
 */
public class PropertiesPanel extends javax.swing.JPanel {

    private final ResourceBundle mBundleUI = SystemHelper.getBundle(MainFrame.class, "Bundle");
    private final Collage mCollage;
    private final ArrayList<Dimension> mDimensions = new ArrayList<>();

    /**
     * Creates new form PropertiesPanel
     */
    public PropertiesPanel(Collage collage) {
        initComponents();
        mCollage = collage;
        init();
    }

    public void store() {
        mCollage.setWidth((int) widthSpinner.getValue());
        mCollage.setHeight((int) heightSpinner.getValue());
        mCollage.setBorderThickness((double) thicknessSpinner.getValue() / 100);
        mCollage.setBorderColor(colorPanel.getColor());
    }

    private void init() {
        mDimensions.add(new Dimension(0, 0));
        mDimensions.add(new Dimension(800, 600));
        mDimensions.add(new Dimension(1600, 1200));
        mDimensions.add(new Dimension(3508, 2480));
        mDimensions.add(new Dimension(2480, 3508));
        mDimensions.add(new Dimension(4960, 3508));
        mDimensions.add(new Dimension(3508, 4960));
        mDimensions.add(new Dimension(3300, 2550));
        mDimensions.add(new Dimension(2550, 3300));

        templateComboBox.setModel(new DefaultComboBoxModel<>(
                StringUtils.splitPreserveAllTokens(mBundleUI.getString("image_template"), ";")));
        widthSpinner.setEditor(new JSpinner.NumberEditor(widthSpinner, "#"));
        heightSpinner.setEditor(new JSpinner.NumberEditor(heightSpinner, "#"));

        widthSpinner.setValue(mCollage.getWidth());
        heightSpinner.setValue(mCollage.getHeight());

        colorPanel.setColor(mCollage.getBorderColor());
        thicknessSpinner.setValue(mCollage.getBorderThickness() * 100);
    }

    /**
     * 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.
     */
    @SuppressWarnings("unchecked")
    // <editor-fold defaultstate="collapsed" desc="Generated Code">//GEN-BEGIN:initComponents
    private void initComponents() {
        java.awt.GridBagConstraints gridBagConstraints;

        templateLabel = new javax.swing.JLabel();
        templateComboBox = new javax.swing.JComboBox<>();
        imageSizeLabel = new javax.swing.JLabel();
        widthLabel = new javax.swing.JLabel();
        heightLabel = new javax.swing.JLabel();
        widthSpinner = new javax.swing.JSpinner();
        heightSpinner = new javax.swing.JSpinner();
        borderLabel = new javax.swing.JLabel();
        thicknessLabel = new javax.swing.JLabel();
        colorLabel = new javax.swing.JLabel();
        thicknessSpinner = new javax.swing.JSpinner();
        colorPanel = new se.trixon.almond.util.swing.ColorPanel();
        jPanel1 = new javax.swing.JPanel();
        jLabel1 = new javax.swing.JLabel();

        setLayout(new java.awt.GridBagLayout());

        templateLabel.setText(Dict.TEMPLATE.toString());
        gridBagConstraints = new java.awt.GridBagConstraints();
        gridBagConstraints.gridx = 0;
        gridBagConstraints.gridy = 0;
        gridBagConstraints.gridwidth = java.awt.GridBagConstraints.REMAINDER;
        gridBagConstraints.anchor = java.awt.GridBagConstraints.NORTHWEST;
        add(templateLabel, gridBagConstraints);

        templateComboBox.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                templateComboBoxActionPerformed(evt);
            }
        });
        gridBagConstraints = new java.awt.GridBagConstraints();
        gridBagConstraints.gridx = 0;
        gridBagConstraints.gridy = 1;
        gridBagConstraints.gridwidth = java.awt.GridBagConstraints.REMAINDER;
        gridBagConstraints.fill = java.awt.GridBagConstraints.HORIZONTAL;
        gridBagConstraints.anchor = java.awt.GridBagConstraints.NORTHWEST;
        add(templateComboBox, gridBagConstraints);

        imageSizeLabel.setFont(imageSizeLabel.getFont().deriveFont(imageSizeLabel.getFont().getSize() + 3f));
        imageSizeLabel.setText(Dict.IMAGE_SIZE.toString());
        gridBagConstraints = new java.awt.GridBagConstraints();
        gridBagConstraints.gridx = 0;
        gridBagConstraints.gridy = 2;
        gridBagConstraints.gridwidth = java.awt.GridBagConstraints.REMAINDER;
        gridBagConstraints.anchor = java.awt.GridBagConstraints.NORTHWEST;
        gridBagConstraints.insets = new java.awt.Insets(8, 0, 0, 0);
        add(imageSizeLabel, gridBagConstraints);

        widthLabel.setText(Dict.WIDTH.toString());
        gridBagConstraints = new java.awt.GridBagConstraints();
        gridBagConstraints.gridx = 0;
        gridBagConstraints.gridy = 3;
        gridBagConstraints.anchor = java.awt.GridBagConstraints.EAST;
        gridBagConstraints.insets = new java.awt.Insets(0, 16, 0, 0);
        add(widthLabel, gridBagConstraints);

        heightLabel.setText(Dict.HEIGHT.toString());
        gridBagConstraints = new java.awt.GridBagConstraints();
        gridBagConstraints.gridx = 0;
        gridBagConstraints.gridy = 4;
        gridBagConstraints.anchor = java.awt.GridBagConstraints.EAST;
        gridBagConstraints.insets = new java.awt.Insets(0, 16, 0, 0);
        add(heightLabel, gridBagConstraints);

        widthSpinner.setModel(new javax.swing.SpinnerNumberModel(256, 256, null, 1));
        gridBagConstraints = new java.awt.GridBagConstraints();
        gridBagConstraints.gridx = 1;
        gridBagConstraints.gridy = 3;
        gridBagConstraints.anchor = java.awt.GridBagConstraints.WEST;
        gridBagConstraints.insets = new java.awt.Insets(0, 8, 0, 0);
        add(widthSpinner, gridBagConstraints);

        heightSpinner.setModel(new javax.swing.SpinnerNumberModel(256, 256, null, 1));
        gridBagConstraints = new java.awt.GridBagConstraints();
        gridBagConstraints.gridx = 1;
        gridBagConstraints.gridy = 4;
        gridBagConstraints.anchor = java.awt.GridBagConstraints.WEST;
        gridBagConstraints.insets = new java.awt.Insets(0, 8, 0, 0);
        add(heightSpinner, gridBagConstraints);

        borderLabel.setFont(borderLabel.getFont().deriveFont(borderLabel.getFont().getSize() + 3f));
        borderLabel.setText(Dict.BORDER.toString());
        gridBagConstraints = new java.awt.GridBagConstraints();
        gridBagConstraints.gridx = 0;
        gridBagConstraints.gridy = 5;
        gridBagConstraints.anchor = java.awt.GridBagConstraints.LINE_START;
        gridBagConstraints.insets = new java.awt.Insets(8, 0, 0, 0);
        add(borderLabel, gridBagConstraints);

        thicknessLabel.setText(Dict.THICKNESS.toString());
        gridBagConstraints = new java.awt.GridBagConstraints();
        gridBagConstraints.gridx = 0;
        gridBagConstraints.gridy = 6;
        gridBagConstraints.anchor = java.awt.GridBagConstraints.LINE_END;
        add(thicknessLabel, gridBagConstraints);

        colorLabel.setText(Dict.COLOR.toString());
        gridBagConstraints = new java.awt.GridBagConstraints();
        gridBagConstraints.gridx = 0;
        gridBagConstraints.gridy = 7;
        gridBagConstraints.anchor = java.awt.GridBagConstraints.EAST;
        gridBagConstraints.insets = new java.awt.Insets(8, 0, 0, 0);
        add(colorLabel, gridBagConstraints);

        thicknessSpinner.setModel(new javax.swing.SpinnerNumberModel(1.0d, 0.0d, 100.0d, 1.0d));
        gridBagConstraints = new java.awt.GridBagConstraints();
        gridBagConstraints.gridx = 1;
        gridBagConstraints.gridy = 6;
        gridBagConstraints.anchor = java.awt.GridBagConstraints.WEST;
        gridBagConstraints.insets = new java.awt.Insets(0, 8, 0, 0);
        add(thicknessSpinner, gridBagConstraints);

        javax.swing.GroupLayout colorPanelLayout = new javax.swing.GroupLayout(colorPanel);
        colorPanel.setLayout(colorPanelLayout);
        colorPanelLayout.setHorizontalGroup(colorPanelLayout
                .createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING).addGap(0, 0, Short.MAX_VALUE));
        colorPanelLayout.setVerticalGroup(colorPanelLayout
                .createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING).addGap(0, 0, Short.MAX_VALUE));

        gridBagConstraints = new java.awt.GridBagConstraints();
        gridBagConstraints.gridx = 1;
        gridBagConstraints.gridy = 7;
        gridBagConstraints.fill = java.awt.GridBagConstraints.BOTH;
        gridBagConstraints.insets = new java.awt.Insets(8, 8, 0, 0);
        add(colorPanel, gridBagConstraints);

        javax.swing.GroupLayout jPanel1Layout = new javax.swing.GroupLayout(jPanel1);
        jPanel1.setLayout(jPanel1Layout);
        jPanel1Layout.setHorizontalGroup(jPanel1Layout
                .createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING).addGap(0, 0, Short.MAX_VALUE));
        jPanel1Layout.setVerticalGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                .addGap(0, 0, Short.MAX_VALUE));

        gridBagConstraints = new java.awt.GridBagConstraints();
        gridBagConstraints.gridx = 2;
        gridBagConstraints.gridy = 8;
        gridBagConstraints.weightx = 1.0;
        gridBagConstraints.weighty = 1.0;
        add(jPanel1, gridBagConstraints);

        jLabel1.setText("%"); // NOI18N
        gridBagConstraints = new java.awt.GridBagConstraints();
        gridBagConstraints.gridx = 2;
        gridBagConstraints.gridy = 6;
        gridBagConstraints.anchor = java.awt.GridBagConstraints.LINE_START;
        add(jLabel1, gridBagConstraints);
    }// </editor-fold>//GEN-END:initComponents

    private void templateComboBoxActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_templateComboBoxActionPerformed
        Dimension d = mDimensions.get(templateComboBox.getSelectedIndex());
        if (d.height > 0 && d.width > 0) {
            widthSpinner.setValue(d.width);
            heightSpinner.setValue(d.height);
        }
    }//GEN-LAST:event_templateComboBoxActionPerformed

    // Variables declaration - do not modify//GEN-BEGIN:variables
    private javax.swing.JLabel borderLabel;
    private javax.swing.JLabel colorLabel;
    private se.trixon.almond.util.swing.ColorPanel colorPanel;
    private javax.swing.JLabel heightLabel;
    private javax.swing.JSpinner heightSpinner;
    private javax.swing.JLabel imageSizeLabel;
    private javax.swing.JLabel jLabel1;
    private javax.swing.JPanel jPanel1;
    private javax.swing.JComboBox<String> templateComboBox;
    private javax.swing.JLabel templateLabel;
    private javax.swing.JLabel thicknessLabel;
    private javax.swing.JSpinner thicknessSpinner;
    private javax.swing.JLabel widthLabel;
    private javax.swing.JSpinner widthSpinner;
    // End of variables declaration//GEN-END:variables
}