/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You 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 org.jenetics.example.image; import java.awt.Dimension; import javax.swing.JPanel; import javax.swing.SpinnerNumberModel; /** * Panel for showing/changing the engine parameters. */ final class EngineParamPanel extends JPanel { /** * Creates new form EngineParamPanel */ public EngineParamPanel() { initComponents(); _populationSizeSpinner.setModel(new SpinnerNumberModel( EngineParam.DEFAULT.getPopulationSize(), EngineParam.MIN_POPULATION_SIZE, EngineParam.MAX_POPULATION_SIZE, 1 )); _tournamentSizeSpinner.setModel(new SpinnerNumberModel( EngineParam.DEFAULT.getTournamentSize(), EngineParam.MIN_TOURNAMENT_SIZE, EngineParam.MAX_TOURNAMENT_SIZE, 1 )); _mutationRateSpinner.setModel(new SpinnerNumberModel( EngineParam.DEFAULT.getMutationRate(), EngineParam.MIN_MUTATION_RATE, EngineParam.MAX_MUTATION_RATE, 0.001 )); _mutationChangeSpinner.setModel(new SpinnerNumberModel( EngineParam.DEFAULT.getMutationMultitude(), EngineParam.MIN_MUTATION_CHANGE, EngineParam.MAX_MUTATION_CHANGE, 0.001 )); _polygonLengthSpinner.setModel(new SpinnerNumberModel( EngineParam.DEFAULT.getPolygonLength(), EngineParam.MIN_POLYGON_LENGTH, EngineParam.MAX_POLYGON_LENGTH, 1 )); _polygonCountSpinner.setModel(new SpinnerNumberModel( EngineParam.DEFAULT.getPolygonCount(), EngineParam.MIN_POLYGON_COUNT, EngineParam.MAX_POLYGON_COUNT, 1 )); _referenceImageWidthSpinner.setModel(new SpinnerNumberModel( EngineParam.DEFAULT.getReferenceImageSize().width, EngineParam.MIN_REF_IMAGE_SIZE.width, EngineParam.MAX_REF_IMAGE_SIZE.width, 1 )); _referenceImageHeightSpinner.setModel(new SpinnerNumberModel( EngineParam.DEFAULT.getReferenceImageSize().height, EngineParam.MIN_REF_IMAGE_SIZE.height, EngineParam.MAX_REF_IMAGE_SIZE.height, 1 )); } void setEngineParam(final EngineParam param) { _populationSizeSpinner.setValue(param.getPopulationSize()); _tournamentSizeSpinner.setValue(param.getTournamentSize()); _mutationRateSpinner.setValue(param.getMutationRate()); _mutationChangeSpinner.setValue(param.getMutationMultitude()); _polygonLengthSpinner.setValue(param.getPolygonLength()); _polygonCountSpinner.setValue(param.getPolygonCount()); _referenceImageWidthSpinner.setValue(param.getReferenceImageSize().width); _referenceImageHeightSpinner.setValue(param.getReferenceImageSize().height); } EngineParam getEngineParam() { return EngineParam.of( (Integer)_populationSizeSpinner.getValue(), (Integer)_tournamentSizeSpinner.getValue(), ((Number)_mutationRateSpinner.getValue()).floatValue(), ((Number)_mutationChangeSpinner.getValue()).floatValue(), (Integer)_polygonLengthSpinner.getValue(), (Integer)_polygonCountSpinner.getValue(), new Dimension( (Integer)_referenceImageWidthSpinner.getValue(), (Integer)_referenceImageHeightSpinner.getValue() ) ); } @Override public void setEnabled(boolean enabled) { super.setEnabled(enabled); _populationSizeSpinner.setEnabled(enabled); _tournamentSizeSpinner.setEnabled(enabled); _mutationRateSpinner.setEnabled(enabled); _mutationChangeSpinner.setEnabled(enabled); _polygonLengthSpinner.setEnabled(enabled); _polygonCountSpinner.setEnabled(enabled); _referenceImageWidthSpinner.setEnabled(enabled); _referenceImageHeightSpinner.setEnabled(enabled); } /** * 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; _populationSizeLabel = new javax.swing.JLabel(); _populationSizeSpinner = new javax.swing.JSpinner(); _tournamentSizeLabel = new javax.swing.JLabel(); _tournamentSizeSpinner = new javax.swing.JSpinner(); _mutationRateLabel = new javax.swing.JLabel(); _mutationChangeLabel = new javax.swing.JLabel(); _polygonLengthLabel = new javax.swing.JLabel(); _polygonLengthSpinner = new javax.swing.JSpinner(); _polygonCountLabel = new javax.swing.JLabel(); _polygonCountSpinner = new javax.swing.JSpinner(); _referenceImageSizeLabel = new javax.swing.JLabel(); _mutationRateSpinner = new javax.swing.JSpinner(); _mutationChangeSpinner = new javax.swing.JSpinner(); _referenceImageWidthSpinner = new javax.swing.JSpinner(); _referenceImageHeightSpinner = new javax.swing.JSpinner(); setLayout(new java.awt.GridBagLayout()); _populationSizeLabel.setText("Population size:"); gridBagConstraints = new java.awt.GridBagConstraints(); gridBagConstraints.anchor = java.awt.GridBagConstraints.LINE_START; gridBagConstraints.insets = new java.awt.Insets(2, 2, 2, 2); add(_populationSizeLabel, gridBagConstraints); gridBagConstraints = new java.awt.GridBagConstraints(); gridBagConstraints.gridx = 1; gridBagConstraints.gridy = 0; gridBagConstraints.gridwidth = 2; gridBagConstraints.fill = java.awt.GridBagConstraints.HORIZONTAL; gridBagConstraints.weightx = 1.0; gridBagConstraints.insets = new java.awt.Insets(2, 2, 2, 2); add(_populationSizeSpinner, gridBagConstraints); _tournamentSizeLabel.setText("Tournament size"); gridBagConstraints = new java.awt.GridBagConstraints(); gridBagConstraints.gridx = 3; gridBagConstraints.gridy = 0; gridBagConstraints.anchor = java.awt.GridBagConstraints.LINE_START; gridBagConstraints.insets = new java.awt.Insets(2, 2, 2, 2); add(_tournamentSizeLabel, gridBagConstraints); gridBagConstraints = new java.awt.GridBagConstraints(); gridBagConstraints.gridx = 4; gridBagConstraints.gridy = 0; gridBagConstraints.fill = java.awt.GridBagConstraints.HORIZONTAL; gridBagConstraints.weightx = 1.0; gridBagConstraints.insets = new java.awt.Insets(2, 2, 2, 2); add(_tournamentSizeSpinner, gridBagConstraints); _mutationRateLabel.setText("Mutation rate:"); gridBagConstraints = new java.awt.GridBagConstraints(); gridBagConstraints.gridx = 0; gridBagConstraints.gridy = 1; gridBagConstraints.anchor = java.awt.GridBagConstraints.LINE_START; gridBagConstraints.insets = new java.awt.Insets(2, 2, 2, 2); add(_mutationRateLabel, gridBagConstraints); _mutationChangeLabel.setText("Mutation change:"); gridBagConstraints = new java.awt.GridBagConstraints(); gridBagConstraints.gridx = 3; gridBagConstraints.gridy = 1; gridBagConstraints.anchor = java.awt.GridBagConstraints.LINE_START; gridBagConstraints.insets = new java.awt.Insets(2, 2, 2, 2); add(_mutationChangeLabel, gridBagConstraints); _polygonLengthLabel.setText("Polygon length:"); gridBagConstraints = new java.awt.GridBagConstraints(); gridBagConstraints.gridx = 0; gridBagConstraints.gridy = 3; gridBagConstraints.anchor = java.awt.GridBagConstraints.LINE_START; gridBagConstraints.insets = new java.awt.Insets(2, 2, 2, 2); add(_polygonLengthLabel, gridBagConstraints); gridBagConstraints = new java.awt.GridBagConstraints(); gridBagConstraints.gridx = 1; gridBagConstraints.gridy = 3; gridBagConstraints.gridwidth = 2; gridBagConstraints.fill = java.awt.GridBagConstraints.HORIZONTAL; gridBagConstraints.weightx = 1.0; gridBagConstraints.insets = new java.awt.Insets(2, 2, 2, 2); add(_polygonLengthSpinner, gridBagConstraints); _polygonCountLabel.setText("Polygon count:"); gridBagConstraints = new java.awt.GridBagConstraints(); gridBagConstraints.gridx = 3; gridBagConstraints.gridy = 3; gridBagConstraints.anchor = java.awt.GridBagConstraints.LINE_START; gridBagConstraints.insets = new java.awt.Insets(2, 2, 2, 2); add(_polygonCountLabel, gridBagConstraints); gridBagConstraints = new java.awt.GridBagConstraints(); gridBagConstraints.gridx = 4; gridBagConstraints.gridy = 3; gridBagConstraints.fill = java.awt.GridBagConstraints.HORIZONTAL; gridBagConstraints.weightx = 1.0; gridBagConstraints.insets = new java.awt.Insets(2, 2, 2, 2); add(_polygonCountSpinner, gridBagConstraints); _referenceImageSizeLabel.setText("Reference image size:"); gridBagConstraints = new java.awt.GridBagConstraints(); gridBagConstraints.gridx = 0; gridBagConstraints.gridy = 4; gridBagConstraints.anchor = java.awt.GridBagConstraints.LINE_START; gridBagConstraints.insets = new java.awt.Insets(2, 2, 2, 2); add(_referenceImageSizeLabel, gridBagConstraints); gridBagConstraints = new java.awt.GridBagConstraints(); gridBagConstraints.gridx = 1; gridBagConstraints.gridy = 1; gridBagConstraints.gridwidth = 2; gridBagConstraints.fill = java.awt.GridBagConstraints.HORIZONTAL; gridBagConstraints.weightx = 1.0; gridBagConstraints.insets = new java.awt.Insets(2, 2, 2, 2); add(_mutationRateSpinner, gridBagConstraints); gridBagConstraints = new java.awt.GridBagConstraints(); gridBagConstraints.gridx = 4; gridBagConstraints.gridy = 1; gridBagConstraints.fill = java.awt.GridBagConstraints.HORIZONTAL; gridBagConstraints.weightx = 0.2; gridBagConstraints.insets = new java.awt.Insets(2, 2, 2, 2); add(_mutationChangeSpinner, gridBagConstraints); gridBagConstraints = new java.awt.GridBagConstraints(); gridBagConstraints.gridx = 1; gridBagConstraints.gridy = 4; gridBagConstraints.fill = java.awt.GridBagConstraints.HORIZONTAL; gridBagConstraints.weightx = 0.5; gridBagConstraints.insets = new java.awt.Insets(2, 2, 2, 2); add(_referenceImageWidthSpinner, gridBagConstraints); gridBagConstraints = new java.awt.GridBagConstraints(); gridBagConstraints.gridx = 2; gridBagConstraints.gridy = 4; gridBagConstraints.fill = java.awt.GridBagConstraints.HORIZONTAL; gridBagConstraints.weightx = 0.5; gridBagConstraints.insets = new java.awt.Insets(2, 2, 2, 2); add(_referenceImageHeightSpinner, gridBagConstraints); }// </editor-fold>//GEN-END:initComponents // Variables declaration - do not modify//GEN-BEGIN:variables private javax.swing.JLabel _mutationChangeLabel; private javax.swing.JSpinner _mutationChangeSpinner; private javax.swing.JLabel _mutationRateLabel; private javax.swing.JSpinner _mutationRateSpinner; private javax.swing.JLabel _polygonCountLabel; private javax.swing.JSpinner _polygonCountSpinner; private javax.swing.JLabel _polygonLengthLabel; private javax.swing.JSpinner _polygonLengthSpinner; private javax.swing.JLabel _populationSizeLabel; private javax.swing.JSpinner _populationSizeSpinner; private javax.swing.JSpinner _referenceImageHeightSpinner; private javax.swing.JLabel _referenceImageSizeLabel; private javax.swing.JSpinner _referenceImageWidthSpinner; private javax.swing.JLabel _tournamentSizeLabel; private javax.swing.JSpinner _tournamentSizeSpinner; // End of variables declaration//GEN-END:variables }