/** * Copyright 2014 Comcast Cable Communications Management, LLC * * This file is part of CATS. * * CATS is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * CATS is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with CATS. If not, see <http://www.gnu.org/licenses/>. */ package com.comcast.cats.vision.panel.imagecompare; import java.awt.GridBagConstraints; import java.awt.GridBagLayout; import java.awt.Insets; import javax.swing.BorderFactory; import javax.swing.JLabel; import javax.swing.JPanel; import javax.swing.JSlider; import javax.swing.JTextField; import javax.swing.SwingConstants; import javax.swing.event.ChangeEvent; import javax.swing.event.ChangeListener; import com.comcast.cats.image.OCRRegionInfo; public class OCRSettingsPanel extends JPanel{ private static final long serialVersionUID = 2089684606227092226L; private JLabel lblOCRExpectedText; private JLabel lblTimeout; private JLabel lblMatchPct; private JTextField txtExpectedOCRText; private JTextField txtOCRMatchPct; private JTextField txtTimeout; private JSlider sldOCRMatchPercentage; private JSlider sldTimeout; private static final int MATCH_PCT_MIN = 1; private static final int MATCH_PCT_MAX = 100; private static final int TIMEOUT_MIN = 0; private static final int TIMEOUT_MAX = 60; public OCRSettingsPanel(){ setLayout( new GridBagLayout() ); setBorder( BorderFactory.createTitledBorder( "OCR Settings" ) ); // Constraints for Text label GridBagConstraints textConstraints = new GridBagConstraints(); textConstraints.anchor = GridBagConstraints.LINE_END; textConstraints.gridx = 0; textConstraints.gridy = 0; // Add Text label lblOCRExpectedText = ImageCompareUtil.createLabel( "Text:", SwingConstants.RIGHT, SwingConstants.RIGHT ); add( lblOCRExpectedText, textConstraints ); // Constraints for OCRText text field textConstraints.anchor = GridBagConstraints.LINE_START; textConstraints.gridx = 1; textConstraints.gridy = 0; textConstraints.gridwidth = 2; textConstraints.fill = GridBagConstraints.HORIZONTAL; textConstraints.insets = new Insets( 10,10, 10, 0 ); // Add OCRText text field txtExpectedOCRText = ImageCompareUtil.createTextField( 10, "The OCR Text", "", true ); add( txtExpectedOCRText, textConstraints ); // Constraints for 'Match %:' label GridBagConstraints matchPercentageConstraints = new GridBagConstraints(); matchPercentageConstraints.anchor = GridBagConstraints.LINE_END; matchPercentageConstraints.gridx = 0; matchPercentageConstraints.gridy = 1; // Add label for 'Match %:' lblMatchPct = ImageCompareUtil.createLabel( "Match %:", SwingConstants.RIGHT, SwingConstants.RIGHT ); add( lblMatchPct, matchPercentageConstraints ); // Constraints for 'Match %:' slider matchPercentageConstraints.gridx = 1; matchPercentageConstraints.gridy = 1; // Add Slider for 'Match %:' sldOCRMatchPercentage = ImageCompareUtil.createSlider( JSlider.HORIZONTAL, MATCH_PCT_MIN, MATCH_PCT_MAX, ( int ) OCRRegionInfo.DEFAULT_SUCCESS_TOLERANCE, "The percentage of the region that must match to result in a pass" ); add( sldOCRMatchPercentage, matchPercentageConstraints ); // Constraints for 'Match %:' text field matchPercentageConstraints.gridx = 2; matchPercentageConstraints.gridy = 1; matchPercentageConstraints.ipadx = 5; // Add text field for 'Match %:' txtOCRMatchPct = ImageCompareUtil.createTextField( 2, sldOCRMatchPercentage.getToolTipText(), String.valueOf( sldOCRMatchPercentage .getValue() ), false ); add( txtOCRMatchPct, matchPercentageConstraints ); // Constraints for 'Timeout:' label GridBagConstraints timeOutConstraints = new GridBagConstraints(); timeOutConstraints.anchor = GridBagConstraints.LINE_END; timeOutConstraints.gridx = 0; timeOutConstraints.gridy = 2; // Add label for 'Timeout:' lblTimeout = ImageCompareUtil.createLabel( "Timeout:", SwingConstants.RIGHT, SwingConstants.RIGHT ); add( lblTimeout, timeOutConstraints ); // Constraints for 'Timeout:' slider timeOutConstraints.gridx = 1; timeOutConstraints.gridy = 2; // Add Slider for 'Timeout:' sldTimeout = ImageCompareUtil.createSlider( JSlider.HORIZONTAL, TIMEOUT_MIN, TIMEOUT_MAX, ( int ) OCRRegionInfo.DEFAULT_TIMEOUT, "The percentage of the region that must match to result in a pass" ); add( sldTimeout, timeOutConstraints ); // Constraints for 'Timeout:' text field timeOutConstraints.gridx = 2; timeOutConstraints.gridy = 2; timeOutConstraints.ipadx = 5; // Add text field for 'Timeout:' txtTimeout = ImageCompareUtil.createTextField( 2, sldTimeout.getToolTipText(), String.valueOf( sldTimeout .getValue() ), false ); add( txtTimeout, timeOutConstraints ); setupListeners(); } public void setExpectedText(String expectedOCRText){ txtExpectedOCRText.setText(expectedOCRText); } public void setMatchPct(int matchPct){ sldOCRMatchPercentage.setValue( matchPct); txtOCRMatchPct.setText( String.valueOf( sldOCRMatchPercentage.getValue() ) ); } public void setTimeout(int timeout){ sldTimeout.setValue( timeout); txtTimeout.setText( String.valueOf( sldTimeout.getValue() ) ); } public String getExpectedText(){ return txtExpectedOCRText.getText(); } public int getMatchPct(){ return Integer.parseInt(txtOCRMatchPct.getText()); } public int getTimeOut(){ return Integer.parseInt(txtTimeout.getText()); } public void clearValues() { txtExpectedOCRText.setText(""); sldOCRMatchPercentage.setValue((int) OCRRegionInfo.DEFAULT_SUCCESS_TOLERANCE); txtOCRMatchPct.setText(String.valueOf(sldOCRMatchPercentage.getValue())); sldTimeout.setValue((int) OCRRegionInfo.DEFAULT_TIMEOUT); txtTimeout.setText(String.valueOf(sldTimeout.getValue())); } private void setupListeners(){ // OCR Match Percent slider sldOCRMatchPercentage.addChangeListener( new ChangeListener() { @Override public void stateChanged( ChangeEvent e ) { txtOCRMatchPct.setText( String.valueOf( sldOCRMatchPercentage.getValue() ) ); } } ); // Timeout slider sldTimeout.addChangeListener( new ChangeListener() { @Override public void stateChanged( ChangeEvent e ) { txtTimeout.setText( String.valueOf( sldTimeout.getValue() ) ); } } ); } }