17ba0605dc97fb81bde8311510d27b3ccba170008Ceki Gulcu/** 27ba0605dc97fb81bde8311510d27b3ccba170008Ceki Gulcu * Copyright (c) 2004-2011 QOS.ch 3f54c28dddc46da1ceb61f60d587113aa0bd79fe1Ceki Gulcu * All rights reserved. 47ba0605dc97fb81bde8311510d27b3ccba170008Ceki Gulcu * 5f54c28dddc46da1ceb61f60d587113aa0bd79fe1Ceki Gulcu * Permission is hereby granted, free of charge, to any person obtaining 6f54c28dddc46da1ceb61f60d587113aa0bd79fe1Ceki Gulcu * a copy of this software and associated documentation files (the 7f54c28dddc46da1ceb61f60d587113aa0bd79fe1Ceki Gulcu * "Software"), to deal in the Software without restriction, including 8f54c28dddc46da1ceb61f60d587113aa0bd79fe1Ceki Gulcu * without limitation the rights to use, copy, modify, merge, publish, 9f54c28dddc46da1ceb61f60d587113aa0bd79fe1Ceki Gulcu * distribute, sublicense, and/or sell copies of the Software, and to 10f54c28dddc46da1ceb61f60d587113aa0bd79fe1Ceki Gulcu * permit persons to whom the Software is furnished to do so, subject to 11f54c28dddc46da1ceb61f60d587113aa0bd79fe1Ceki Gulcu * the following conditions: 127ba0605dc97fb81bde8311510d27b3ccba170008Ceki Gulcu * 13f54c28dddc46da1ceb61f60d587113aa0bd79fe1Ceki Gulcu * The above copyright notice and this permission notice shall be 14f54c28dddc46da1ceb61f60d587113aa0bd79fe1Ceki Gulcu * included in all copies or substantial portions of the Software. 157ba0605dc97fb81bde8311510d27b3ccba170008Ceki Gulcu * 16f54c28dddc46da1ceb61f60d587113aa0bd79fe1Ceki Gulcu * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, 17f54c28dddc46da1ceb61f60d587113aa0bd79fe1Ceki Gulcu * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF 18f54c28dddc46da1ceb61f60d587113aa0bd79fe1Ceki Gulcu * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND 19f54c28dddc46da1ceb61f60d587113aa0bd79fe1Ceki Gulcu * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE 20f54c28dddc46da1ceb61f60d587113aa0bd79fe1Ceki Gulcu * LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION 21f54c28dddc46da1ceb61f60d587113aa0bd79fe1Ceki Gulcu * OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION 22f54c28dddc46da1ceb61f60d587113aa0bd79fe1Ceki Gulcu * WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. 237ba0605dc97fb81bde8311510d27b3ccba170008Ceki Gulcu * 24f54c28dddc46da1ceb61f60d587113aa0bd79fe1Ceki Gulcu */ 2508d80efdfe56b525934e979431fa86449cb7a44bCeki Gulcupackage org.slf4j.migrator.internal; 2693e9c733a5c00843909fc68c683fb3f2c9d741d0Ceki Gulcu 2793e9c733a5c00843909fc68c683fb3f2c9d741d0Ceki Gulcuimport java.awt.event.ActionEvent; 2893e9c733a5c00843909fc68c683fb3f2c9d741d0Ceki Gulcuimport java.awt.event.ActionListener; 2993e9c733a5c00843909fc68c683fb3f2c9d741d0Ceki Gulcuimport java.io.File; 3093e9c733a5c00843909fc68c683fb3f2c9d741d0Ceki Gulcuimport java.util.ArrayList; 3193e9c733a5c00843909fc68c683fb3f2c9d741d0Ceki Gulcuimport java.util.List; 3293e9c733a5c00843909fc68c683fb3f2c9d741d0Ceki Gulcu 3393e9c733a5c00843909fc68c683fb3f2c9d741d0Ceki Gulcuimport javax.swing.ButtonGroup; 3493e9c733a5c00843909fc68c683fb3f2c9d741d0Ceki Gulcuimport javax.swing.JButton; 3593e9c733a5c00843909fc68c683fb3f2c9d741d0Ceki Gulcuimport javax.swing.JCheckBox; 3693e9c733a5c00843909fc68c683fb3f2c9d741d0Ceki Gulcuimport javax.swing.JFileChooser; 3793e9c733a5c00843909fc68c683fb3f2c9d741d0Ceki Gulcuimport javax.swing.JFrame; 3893e9c733a5c00843909fc68c683fb3f2c9d741d0Ceki Gulcuimport javax.swing.JLabel; 3993e9c733a5c00843909fc68c683fb3f2c9d741d0Ceki Gulcuimport javax.swing.JOptionPane; 40d9f9dd9227026e8113fe5e3b4fa056e435e0fa7dCeki Gulcuimport javax.swing.JProgressBar; 4193e9c733a5c00843909fc68c683fb3f2c9d741d0Ceki Gulcuimport javax.swing.JRadioButton; 4293e9c733a5c00843909fc68c683fb3f2c9d741d0Ceki Gulcuimport javax.swing.JTextField; 4393e9c733a5c00843909fc68c683fb3f2c9d741d0Ceki Gulcuimport javax.swing.SpringLayout; 4493e9c733a5c00843909fc68c683fb3f2c9d741d0Ceki Gulcuimport javax.swing.WindowConstants; 4593e9c733a5c00843909fc68c683fb3f2c9d741d0Ceki Gulcu 4608d80efdfe56b525934e979431fa86449cb7a44bCeki Gulcuimport org.slf4j.migrator.Constant; 4708d80efdfe56b525934e979431fa86449cb7a44bCeki Gulcuimport org.slf4j.migrator.helper.SpringLayoutHelper; 4893e9c733a5c00843909fc68c683fb3f2c9d741d0Ceki Gulcu 4993e9c733a5c00843909fc68c683fb3f2c9d741d0Ceki Gulcu/** 5093e9c733a5c00843909fc68c683fb3f2c9d741d0Ceki Gulcu * This code was edited or generated using CloudGarden's Jigloo SWT/Swing GUI 5193e9c733a5c00843909fc68c683fb3f2c9d741d0Ceki Gulcu * Builder, which is free for non-commercial use. If Jigloo is being used 5293e9c733a5c00843909fc68c683fb3f2c9d741d0Ceki Gulcu * commercially (ie, by a corporation, company or business for any purpose 5393e9c733a5c00843909fc68c683fb3f2c9d741d0Ceki Gulcu * whatever) then you should purchase a license for each developer using Jigloo. 5493e9c733a5c00843909fc68c683fb3f2c9d741d0Ceki Gulcu * Please visit www.cloudgarden.com for details. Use of Jigloo implies 5593e9c733a5c00843909fc68c683fb3f2c9d741d0Ceki Gulcu * acceptance of these licensing terms. A COMMERCIAL LICENSE HAS NOT BEEN 5693e9c733a5c00843909fc68c683fb3f2c9d741d0Ceki Gulcu * PURCHASED FOR THIS MACHINE, SO JIGLOO OR THIS CODE CANNOT BE USED LEGALLY FOR 5793e9c733a5c00843909fc68c683fb3f2c9d741d0Ceki Gulcu * ANY CORPORATE OR COMMERCIAL PURPOSE. 5893e9c733a5c00843909fc68c683fb3f2c9d741d0Ceki Gulcu */ 59d9f9dd9227026e8113fe5e3b4fa056e435e0fa7dCeki Gulcupublic class MigratorFrame extends JFrame implements ActionListener { 6031212435723e2dfd5d6716d1f6a7b0e66a1e6b38Ceki Gulcu private static final long serialVersionUID = 1L; 6131212435723e2dfd5d6716d1f6a7b0e66a1e6b38Ceki Gulcu 6231212435723e2dfd5d6716d1f6a7b0e66a1e6b38Ceki Gulcu private static final int BASIC_PADDING = 10; 6331212435723e2dfd5d6716d1f6a7b0e66a1e6b38Ceki Gulcu private static final int FOLDER_COLUMNS = 40; 6431212435723e2dfd5d6716d1f6a7b0e66a1e6b38Ceki Gulcu private static final String MIGRATE_COMMAND = "MIGRATE_COMMAND"; 6531212435723e2dfd5d6716d1f6a7b0e66a1e6b38Ceki Gulcu private static final String BROWSE_COMMAND = "BROWSE_COMMAND"; 6631212435723e2dfd5d6716d1f6a7b0e66a1e6b38Ceki Gulcu static final String EXIT_COMMAND = "EXIT_COMMAND"; 6731212435723e2dfd5d6716d1f6a7b0e66a1e6b38Ceki Gulcu 6831212435723e2dfd5d6716d1f6a7b0e66a1e6b38Ceki Gulcu static final int X_SIZE = 700; 6931212435723e2dfd5d6716d1f6a7b0e66a1e6b38Ceki Gulcu static final int Y_SIZE = 400; 7031212435723e2dfd5d6716d1f6a7b0e66a1e6b38Ceki Gulcu 7131212435723e2dfd5d6716d1f6a7b0e66a1e6b38Ceki Gulcu private SpringLayout layoutManager = new SpringLayout(); 7231212435723e2dfd5d6716d1f6a7b0e66a1e6b38Ceki Gulcu private SpringLayoutHelper slh = new SpringLayoutHelper(layoutManager, BASIC_PADDING); 7331212435723e2dfd5d6716d1f6a7b0e66a1e6b38Ceki Gulcu 7431212435723e2dfd5d6716d1f6a7b0e66a1e6b38Ceki Gulcu private JLabel migrationLabel; 7531212435723e2dfd5d6716d1f6a7b0e66a1e6b38Ceki Gulcu 7631212435723e2dfd5d6716d1f6a7b0e66a1e6b38Ceki Gulcu private JRadioButton radioLog4j; 7731212435723e2dfd5d6716d1f6a7b0e66a1e6b38Ceki Gulcu private JRadioButton radioJCL; 7831212435723e2dfd5d6716d1f6a7b0e66a1e6b38Ceki Gulcu private JRadioButton radioJUL; 7931212435723e2dfd5d6716d1f6a7b0e66a1e6b38Ceki Gulcu private ButtonGroup buttonGroup; 8031212435723e2dfd5d6716d1f6a7b0e66a1e6b38Ceki Gulcu 8131212435723e2dfd5d6716d1f6a7b0e66a1e6b38Ceki Gulcu private JTextField folderTextField; 8231212435723e2dfd5d6716d1f6a7b0e66a1e6b38Ceki Gulcu private JLabel warningLabel; 8331212435723e2dfd5d6716d1f6a7b0e66a1e6b38Ceki Gulcu JButton migrateButton; 8431212435723e2dfd5d6716d1f6a7b0e66a1e6b38Ceki Gulcu private JButton browseButton; 8531212435723e2dfd5d6716d1f6a7b0e66a1e6b38Ceki Gulcu private JLabel folderLabel; 8631212435723e2dfd5d6716d1f6a7b0e66a1e6b38Ceki Gulcu 8731212435723e2dfd5d6716d1f6a7b0e66a1e6b38Ceki Gulcu private JCheckBox awareCheckBox; 8831212435723e2dfd5d6716d1f6a7b0e66a1e6b38Ceki Gulcu private JLabel awareLabel; 8931212435723e2dfd5d6716d1f6a7b0e66a1e6b38Ceki Gulcu 9031212435723e2dfd5d6716d1f6a7b0e66a1e6b38Ceki Gulcu JLabel otherLabel; 9131212435723e2dfd5d6716d1f6a7b0e66a1e6b38Ceki Gulcu JProgressBar progressBar; 9231212435723e2dfd5d6716d1f6a7b0e66a1e6b38Ceki Gulcu private JFileChooser fileChooser; 9331212435723e2dfd5d6716d1f6a7b0e66a1e6b38Ceki Gulcu 9431212435723e2dfd5d6716d1f6a7b0e66a1e6b38Ceki Gulcu public MigratorFrame() { 9531212435723e2dfd5d6716d1f6a7b0e66a1e6b38Ceki Gulcu super(); 9631212435723e2dfd5d6716d1f6a7b0e66a1e6b38Ceki Gulcu initGUI(); 9793e9c733a5c00843909fc68c683fb3f2c9d741d0Ceki Gulcu } 9831212435723e2dfd5d6716d1f6a7b0e66a1e6b38Ceki Gulcu 9931212435723e2dfd5d6716d1f6a7b0e66a1e6b38Ceki Gulcu private void initGUI() { 10031212435723e2dfd5d6716d1f6a7b0e66a1e6b38Ceki Gulcu try { 10131212435723e2dfd5d6716d1f6a7b0e66a1e6b38Ceki Gulcu setDefaultCloseOperation(WindowConstants.DISPOSE_ON_CLOSE); 10231212435723e2dfd5d6716d1f6a7b0e66a1e6b38Ceki Gulcu getContentPane().setLayout(layoutManager); 10331212435723e2dfd5d6716d1f6a7b0e66a1e6b38Ceki Gulcu this.setTitle("SLF4J migrator"); 10431212435723e2dfd5d6716d1f6a7b0e66a1e6b38Ceki Gulcu 10531212435723e2dfd5d6716d1f6a7b0e66a1e6b38Ceki Gulcu createComponents(); 10631212435723e2dfd5d6716d1f6a7b0e66a1e6b38Ceki Gulcu constrainAll(); 10731212435723e2dfd5d6716d1f6a7b0e66a1e6b38Ceki Gulcu addAllComponentsToContextPane(); 10831212435723e2dfd5d6716d1f6a7b0e66a1e6b38Ceki Gulcu pack(); 10931212435723e2dfd5d6716d1f6a7b0e66a1e6b38Ceki Gulcu this.setSize(700, 400); 11031212435723e2dfd5d6716d1f6a7b0e66a1e6b38Ceki Gulcu } catch (Exception e) { 11131212435723e2dfd5d6716d1f6a7b0e66a1e6b38Ceki Gulcu e.printStackTrace(); 112c5f9e2fcd9bcadb541d6f5bc601dfc298faac063Ceki Gulcu } 11393e9c733a5c00843909fc68c683fb3f2c9d741d0Ceki Gulcu } 114ef85615b647feea2efce398ae6e545199cf00282Ceki Gulcu 11531212435723e2dfd5d6716d1f6a7b0e66a1e6b38Ceki Gulcu private void createComponents() { 11631212435723e2dfd5d6716d1f6a7b0e66a1e6b38Ceki Gulcu createMigrationLabel(); 11731212435723e2dfd5d6716d1f6a7b0e66a1e6b38Ceki Gulcu createRadioJCL(); 11831212435723e2dfd5d6716d1f6a7b0e66a1e6b38Ceki Gulcu createRadioLog4j(); 11931212435723e2dfd5d6716d1f6a7b0e66a1e6b38Ceki Gulcu createRadioJUL(); 12031212435723e2dfd5d6716d1f6a7b0e66a1e6b38Ceki Gulcu createButtonGroup(); 12131212435723e2dfd5d6716d1f6a7b0e66a1e6b38Ceki Gulcu createFolderLabel(); 12231212435723e2dfd5d6716d1f6a7b0e66a1e6b38Ceki Gulcu createFolderTextField(); 12331212435723e2dfd5d6716d1f6a7b0e66a1e6b38Ceki Gulcu createBrowseButton(); 12431212435723e2dfd5d6716d1f6a7b0e66a1e6b38Ceki Gulcu createMigrateButton(); 12531212435723e2dfd5d6716d1f6a7b0e66a1e6b38Ceki Gulcu createAwareCheckbox(); 12631212435723e2dfd5d6716d1f6a7b0e66a1e6b38Ceki Gulcu createAwareLabel(); 12731212435723e2dfd5d6716d1f6a7b0e66a1e6b38Ceki Gulcu createWarningLabel(); 12831212435723e2dfd5d6716d1f6a7b0e66a1e6b38Ceki Gulcu createFileChooser(); 12931212435723e2dfd5d6716d1f6a7b0e66a1e6b38Ceki Gulcu 13031212435723e2dfd5d6716d1f6a7b0e66a1e6b38Ceki Gulcu otherLabel = new JLabel(); 13131212435723e2dfd5d6716d1f6a7b0e66a1e6b38Ceki Gulcu otherLabel.setText(""); 13231212435723e2dfd5d6716d1f6a7b0e66a1e6b38Ceki Gulcu createProgressBar(); 13331212435723e2dfd5d6716d1f6a7b0e66a1e6b38Ceki Gulcu 13431212435723e2dfd5d6716d1f6a7b0e66a1e6b38Ceki Gulcu } 13531212435723e2dfd5d6716d1f6a7b0e66a1e6b38Ceki Gulcu 13631212435723e2dfd5d6716d1f6a7b0e66a1e6b38Ceki Gulcu /** 13731212435723e2dfd5d6716d1f6a7b0e66a1e6b38Ceki Gulcu * 13831212435723e2dfd5d6716d1f6a7b0e66a1e6b38Ceki Gulcu */ 13931212435723e2dfd5d6716d1f6a7b0e66a1e6b38Ceki Gulcu private void constrainAll() { 14031212435723e2dfd5d6716d1f6a7b0e66a1e6b38Ceki Gulcu 14131212435723e2dfd5d6716d1f6a7b0e66a1e6b38Ceki Gulcu // contrain migration label 14231212435723e2dfd5d6716d1f6a7b0e66a1e6b38Ceki Gulcu layoutManager.putConstraint(SpringLayout.WEST, migrationLabel, BASIC_PADDING, SpringLayout.EAST, this); 14331212435723e2dfd5d6716d1f6a7b0e66a1e6b38Ceki Gulcu 14431212435723e2dfd5d6716d1f6a7b0e66a1e6b38Ceki Gulcu layoutManager.putConstraint(SpringLayout.NORTH, migrationLabel, BASIC_PADDING, SpringLayout.NORTH, this); 14531212435723e2dfd5d6716d1f6a7b0e66a1e6b38Ceki Gulcu 14631212435723e2dfd5d6716d1f6a7b0e66a1e6b38Ceki Gulcu slh.placeToTheRight(migrationLabel, radioJCL, BASIC_PADDING, -BASIC_PADDING / 2); 14731212435723e2dfd5d6716d1f6a7b0e66a1e6b38Ceki Gulcu slh.placeBelow(radioJCL, radioLog4j, 0, 0); 14831212435723e2dfd5d6716d1f6a7b0e66a1e6b38Ceki Gulcu 14931212435723e2dfd5d6716d1f6a7b0e66a1e6b38Ceki Gulcu slh.placeBelow(radioLog4j, radioJUL, 0, 0); 15031212435723e2dfd5d6716d1f6a7b0e66a1e6b38Ceki Gulcu 15131212435723e2dfd5d6716d1f6a7b0e66a1e6b38Ceki Gulcu slh.placeBelow(migrationLabel, folderLabel, 0, BASIC_PADDING * 6); 15231212435723e2dfd5d6716d1f6a7b0e66a1e6b38Ceki Gulcu slh.placeToTheRight(folderLabel, folderTextField); 15331212435723e2dfd5d6716d1f6a7b0e66a1e6b38Ceki Gulcu slh.placeToTheRight(folderTextField, browseButton, BASIC_PADDING, -BASIC_PADDING / 2); 15431212435723e2dfd5d6716d1f6a7b0e66a1e6b38Ceki Gulcu 15531212435723e2dfd5d6716d1f6a7b0e66a1e6b38Ceki Gulcu slh.placeBelow(folderLabel, warningLabel, 0, BASIC_PADDING * 3); 15631212435723e2dfd5d6716d1f6a7b0e66a1e6b38Ceki Gulcu 15731212435723e2dfd5d6716d1f6a7b0e66a1e6b38Ceki Gulcu slh.placeBelow(warningLabel, awareCheckBox, 0, (int) (BASIC_PADDING * 1.5)); 15831212435723e2dfd5d6716d1f6a7b0e66a1e6b38Ceki Gulcu slh.placeToTheRight(awareCheckBox, awareLabel); 15931212435723e2dfd5d6716d1f6a7b0e66a1e6b38Ceki Gulcu 16031212435723e2dfd5d6716d1f6a7b0e66a1e6b38Ceki Gulcu slh.placeBelow(awareCheckBox, migrateButton, 0, BASIC_PADDING * 3); 16131212435723e2dfd5d6716d1f6a7b0e66a1e6b38Ceki Gulcu 16231212435723e2dfd5d6716d1f6a7b0e66a1e6b38Ceki Gulcu slh.placeBelow(migrateButton, otherLabel, 0, BASIC_PADDING * 2); 16331212435723e2dfd5d6716d1f6a7b0e66a1e6b38Ceki Gulcu 16431212435723e2dfd5d6716d1f6a7b0e66a1e6b38Ceki Gulcu slh.placeBelow(otherLabel, progressBar, 0, BASIC_PADDING); 16531212435723e2dfd5d6716d1f6a7b0e66a1e6b38Ceki Gulcu } 16631212435723e2dfd5d6716d1f6a7b0e66a1e6b38Ceki Gulcu 16731212435723e2dfd5d6716d1f6a7b0e66a1e6b38Ceki Gulcu private void addAllComponentsToContextPane() { 16831212435723e2dfd5d6716d1f6a7b0e66a1e6b38Ceki Gulcu getContentPane().add(migrationLabel); 16931212435723e2dfd5d6716d1f6a7b0e66a1e6b38Ceki Gulcu getContentPane().add(radioJCL); 17031212435723e2dfd5d6716d1f6a7b0e66a1e6b38Ceki Gulcu getContentPane().add(radioLog4j); 17131212435723e2dfd5d6716d1f6a7b0e66a1e6b38Ceki Gulcu getContentPane().add(radioJUL); 17231212435723e2dfd5d6716d1f6a7b0e66a1e6b38Ceki Gulcu 17331212435723e2dfd5d6716d1f6a7b0e66a1e6b38Ceki Gulcu getContentPane().add(folderLabel); 17431212435723e2dfd5d6716d1f6a7b0e66a1e6b38Ceki Gulcu getContentPane().add(folderTextField); 17531212435723e2dfd5d6716d1f6a7b0e66a1e6b38Ceki Gulcu getContentPane().add(browseButton); 17631212435723e2dfd5d6716d1f6a7b0e66a1e6b38Ceki Gulcu getContentPane().add(migrateButton); 17731212435723e2dfd5d6716d1f6a7b0e66a1e6b38Ceki Gulcu 17831212435723e2dfd5d6716d1f6a7b0e66a1e6b38Ceki Gulcu getContentPane().add(awareCheckBox); 17931212435723e2dfd5d6716d1f6a7b0e66a1e6b38Ceki Gulcu getContentPane().add(awareLabel); 18031212435723e2dfd5d6716d1f6a7b0e66a1e6b38Ceki Gulcu 18131212435723e2dfd5d6716d1f6a7b0e66a1e6b38Ceki Gulcu getContentPane().add(warningLabel); 18231212435723e2dfd5d6716d1f6a7b0e66a1e6b38Ceki Gulcu 18331212435723e2dfd5d6716d1f6a7b0e66a1e6b38Ceki Gulcu getContentPane().add(otherLabel); 18431212435723e2dfd5d6716d1f6a7b0e66a1e6b38Ceki Gulcu getContentPane().add(progressBar); 18531212435723e2dfd5d6716d1f6a7b0e66a1e6b38Ceki Gulcu } 18631212435723e2dfd5d6716d1f6a7b0e66a1e6b38Ceki Gulcu 18731212435723e2dfd5d6716d1f6a7b0e66a1e6b38Ceki Gulcu private void createButtonGroup() { 18831212435723e2dfd5d6716d1f6a7b0e66a1e6b38Ceki Gulcu buttonGroup = new ButtonGroup(); 18931212435723e2dfd5d6716d1f6a7b0e66a1e6b38Ceki Gulcu buttonGroup.add(radioJCL); 19031212435723e2dfd5d6716d1f6a7b0e66a1e6b38Ceki Gulcu buttonGroup.add(radioLog4j); 19131212435723e2dfd5d6716d1f6a7b0e66a1e6b38Ceki Gulcu buttonGroup.add(radioJUL); 19231212435723e2dfd5d6716d1f6a7b0e66a1e6b38Ceki Gulcu } 19331212435723e2dfd5d6716d1f6a7b0e66a1e6b38Ceki Gulcu 19431212435723e2dfd5d6716d1f6a7b0e66a1e6b38Ceki Gulcu private void createMigrationLabel() { 19531212435723e2dfd5d6716d1f6a7b0e66a1e6b38Ceki Gulcu migrationLabel = new JLabel(); 19631212435723e2dfd5d6716d1f6a7b0e66a1e6b38Ceki Gulcu migrationLabel.setText("Migration Type"); 19731212435723e2dfd5d6716d1f6a7b0e66a1e6b38Ceki Gulcu } 19831212435723e2dfd5d6716d1f6a7b0e66a1e6b38Ceki Gulcu 19931212435723e2dfd5d6716d1f6a7b0e66a1e6b38Ceki Gulcu private void createRadioJCL() { 20031212435723e2dfd5d6716d1f6a7b0e66a1e6b38Ceki Gulcu radioJCL = new JRadioButton(); 20131212435723e2dfd5d6716d1f6a7b0e66a1e6b38Ceki Gulcu radioJCL.setText("from Jakarta Commons Logging to SLF4J"); 20231212435723e2dfd5d6716d1f6a7b0e66a1e6b38Ceki Gulcu radioJCL.setToolTipText("Select this button if you wish to migrate a Java project using Jakarta Commons Logging to use SLF4J."); 20331212435723e2dfd5d6716d1f6a7b0e66a1e6b38Ceki Gulcu } 20431212435723e2dfd5d6716d1f6a7b0e66a1e6b38Ceki Gulcu 20531212435723e2dfd5d6716d1f6a7b0e66a1e6b38Ceki Gulcu private void createRadioLog4j() { 20631212435723e2dfd5d6716d1f6a7b0e66a1e6b38Ceki Gulcu radioLog4j = new JRadioButton(); 20731212435723e2dfd5d6716d1f6a7b0e66a1e6b38Ceki Gulcu radioLog4j.setText("from log4j to SLF4J "); 20831212435723e2dfd5d6716d1f6a7b0e66a1e6b38Ceki Gulcu radioLog4j.setToolTipText("Select this button if you wish to migrate a Java project using log4j to use SLF4J."); 20931212435723e2dfd5d6716d1f6a7b0e66a1e6b38Ceki Gulcu } 21031212435723e2dfd5d6716d1f6a7b0e66a1e6b38Ceki Gulcu 21131212435723e2dfd5d6716d1f6a7b0e66a1e6b38Ceki Gulcu private void createRadioJUL() { 21231212435723e2dfd5d6716d1f6a7b0e66a1e6b38Ceki Gulcu radioJUL = new JRadioButton(); 21331212435723e2dfd5d6716d1f6a7b0e66a1e6b38Ceki Gulcu radioJUL.setText("from JUL to SLF4J "); 21431212435723e2dfd5d6716d1f6a7b0e66a1e6b38Ceki Gulcu radioJUL.setToolTipText("Select this button if you wish to migrate a Java project using java.utl.logging (JUL) to use SLF4J."); 21531212435723e2dfd5d6716d1f6a7b0e66a1e6b38Ceki Gulcu } 21631212435723e2dfd5d6716d1f6a7b0e66a1e6b38Ceki Gulcu 21731212435723e2dfd5d6716d1f6a7b0e66a1e6b38Ceki Gulcu private void createFolderLabel() { 21831212435723e2dfd5d6716d1f6a7b0e66a1e6b38Ceki Gulcu folderLabel = new JLabel(); 21931212435723e2dfd5d6716d1f6a7b0e66a1e6b38Ceki Gulcu folderLabel.setText("Project Directory"); 22093e9c733a5c00843909fc68c683fb3f2c9d741d0Ceki Gulcu } 221ef85615b647feea2efce398ae6e545199cf00282Ceki Gulcu 22231212435723e2dfd5d6716d1f6a7b0e66a1e6b38Ceki Gulcu private void createFolderTextField() { 22331212435723e2dfd5d6716d1f6a7b0e66a1e6b38Ceki Gulcu folderTextField = new JTextField(); 22431212435723e2dfd5d6716d1f6a7b0e66a1e6b38Ceki Gulcu folderTextField.setColumns(FOLDER_COLUMNS); 22531212435723e2dfd5d6716d1f6a7b0e66a1e6b38Ceki Gulcu } 22693e9c733a5c00843909fc68c683fb3f2c9d741d0Ceki Gulcu 22731212435723e2dfd5d6716d1f6a7b0e66a1e6b38Ceki Gulcu private void createBrowseButton() { 22831212435723e2dfd5d6716d1f6a7b0e66a1e6b38Ceki Gulcu browseButton = new JButton(); 22931212435723e2dfd5d6716d1f6a7b0e66a1e6b38Ceki Gulcu browseButton.setText("Browse"); 23031212435723e2dfd5d6716d1f6a7b0e66a1e6b38Ceki Gulcu browseButton.addActionListener(this); 23131212435723e2dfd5d6716d1f6a7b0e66a1e6b38Ceki Gulcu browseButton.setActionCommand(BROWSE_COMMAND); 23231212435723e2dfd5d6716d1f6a7b0e66a1e6b38Ceki Gulcu browseButton.setToolTipText("Click this button to browse the file systems on your computer."); 23393e9c733a5c00843909fc68c683fb3f2c9d741d0Ceki Gulcu } 234ef85615b647feea2efce398ae6e545199cf00282Ceki Gulcu 23531212435723e2dfd5d6716d1f6a7b0e66a1e6b38Ceki Gulcu private void createAwareCheckbox() { 23631212435723e2dfd5d6716d1f6a7b0e66a1e6b38Ceki Gulcu awareCheckBox = new JCheckBox(); 23731212435723e2dfd5d6716d1f6a7b0e66a1e6b38Ceki Gulcu awareCheckBox.setToolTipText("<html><p>Check this box of you understand that the migration tool<p>will <b>not</b> backup your Java source files.</html>"); 23831212435723e2dfd5d6716d1f6a7b0e66a1e6b38Ceki Gulcu } 239ef85615b647feea2efce398ae6e545199cf00282Ceki Gulcu 24031212435723e2dfd5d6716d1f6a7b0e66a1e6b38Ceki Gulcu private void createAwareLabel() { 24131212435723e2dfd5d6716d1f6a7b0e66a1e6b38Ceki Gulcu awareLabel = new JLabel(); 24231212435723e2dfd5d6716d1f6a7b0e66a1e6b38Ceki Gulcu awareLabel.setText("<html>" + "<p>I am aware that this tool will directly modify all Java source files</p>" 24331212435723e2dfd5d6716d1f6a7b0e66a1e6b38Ceki Gulcu + "<p>in the selected folder without creating backup files.</p>" + "</html>"); 24493e9c733a5c00843909fc68c683fb3f2c9d741d0Ceki Gulcu } 245ef85615b647feea2efce398ae6e545199cf00282Ceki Gulcu 24631212435723e2dfd5d6716d1f6a7b0e66a1e6b38Ceki Gulcu private void createWarningLabel() { 24731212435723e2dfd5d6716d1f6a7b0e66a1e6b38Ceki Gulcu warningLabel = new JLabel(); 24831212435723e2dfd5d6716d1f6a7b0e66a1e6b38Ceki Gulcu warningLabel.setText("<html>" + "<p><span color=\"red\">WARNING:</span> This SLF4J migration tool will directly modify all Java source files</p>" 24931212435723e2dfd5d6716d1f6a7b0e66a1e6b38Ceki Gulcu + "<p>in the selected project folder without creating a backup of the original files.</p>" + "</html>"); 25093e9c733a5c00843909fc68c683fb3f2c9d741d0Ceki Gulcu } 25131212435723e2dfd5d6716d1f6a7b0e66a1e6b38Ceki Gulcu 25231212435723e2dfd5d6716d1f6a7b0e66a1e6b38Ceki Gulcu private void createMigrateButton() { 25331212435723e2dfd5d6716d1f6a7b0e66a1e6b38Ceki Gulcu migrateButton = new JButton(); 25431212435723e2dfd5d6716d1f6a7b0e66a1e6b38Ceki Gulcu migrateButton.setText("Migrate Project to SLF4J"); 25531212435723e2dfd5d6716d1f6a7b0e66a1e6b38Ceki Gulcu migrateButton.setToolTipText("Click this button to initiate migration of your project."); 25631212435723e2dfd5d6716d1f6a7b0e66a1e6b38Ceki Gulcu migrateButton.addActionListener(this); 25731212435723e2dfd5d6716d1f6a7b0e66a1e6b38Ceki Gulcu migrateButton.setActionCommand(MIGRATE_COMMAND); 25893e9c733a5c00843909fc68c683fb3f2c9d741d0Ceki Gulcu } 259ef85615b647feea2efce398ae6e545199cf00282Ceki Gulcu 26031212435723e2dfd5d6716d1f6a7b0e66a1e6b38Ceki Gulcu private void createFileChooser() { 26131212435723e2dfd5d6716d1f6a7b0e66a1e6b38Ceki Gulcu fileChooser = new JFileChooser(); 26231212435723e2dfd5d6716d1f6a7b0e66a1e6b38Ceki Gulcu fileChooser.setDialogTitle("Source folder selector"); 26331212435723e2dfd5d6716d1f6a7b0e66a1e6b38Ceki Gulcu fileChooser.setFileSelectionMode(JFileChooser.DIRECTORIES_ONLY); 26431212435723e2dfd5d6716d1f6a7b0e66a1e6b38Ceki Gulcu } 265ef85615b647feea2efce398ae6e545199cf00282Ceki Gulcu 26631212435723e2dfd5d6716d1f6a7b0e66a1e6b38Ceki Gulcu private void createProgressBar() { 26731212435723e2dfd5d6716d1f6a7b0e66a1e6b38Ceki Gulcu progressBar = new JProgressBar(0, 1); 26831212435723e2dfd5d6716d1f6a7b0e66a1e6b38Ceki Gulcu progressBar.setPreferredSize(new java.awt.Dimension((int) (X_SIZE * 0.8), 5)); 26931212435723e2dfd5d6716d1f6a7b0e66a1e6b38Ceki Gulcu progressBar.setVisible(false); 27093e9c733a5c00843909fc68c683fb3f2c9d741d0Ceki Gulcu } 27131212435723e2dfd5d6716d1f6a7b0e66a1e6b38Ceki Gulcu 27231212435723e2dfd5d6716d1f6a7b0e66a1e6b38Ceki Gulcu public void disableInput() { 27331212435723e2dfd5d6716d1f6a7b0e66a1e6b38Ceki Gulcu radioJCL.setEnabled(false); 27431212435723e2dfd5d6716d1f6a7b0e66a1e6b38Ceki Gulcu radioLog4j.setEnabled(false); 27531212435723e2dfd5d6716d1f6a7b0e66a1e6b38Ceki Gulcu 27631212435723e2dfd5d6716d1f6a7b0e66a1e6b38Ceki Gulcu browseButton.setEnabled(false); 27731212435723e2dfd5d6716d1f6a7b0e66a1e6b38Ceki Gulcu 27831212435723e2dfd5d6716d1f6a7b0e66a1e6b38Ceki Gulcu folderTextField.setEnabled(false); 27931212435723e2dfd5d6716d1f6a7b0e66a1e6b38Ceki Gulcu awareCheckBox.setEnabled(false); 28031212435723e2dfd5d6716d1f6a7b0e66a1e6b38Ceki Gulcu migrateButton.setText("Migration in progress"); 28131212435723e2dfd5d6716d1f6a7b0e66a1e6b38Ceki Gulcu migrateButton.setEnabled(false); 28231212435723e2dfd5d6716d1f6a7b0e66a1e6b38Ceki Gulcu 28331212435723e2dfd5d6716d1f6a7b0e66a1e6b38Ceki Gulcu } 28431212435723e2dfd5d6716d1f6a7b0e66a1e6b38Ceki Gulcu 28531212435723e2dfd5d6716d1f6a7b0e66a1e6b38Ceki Gulcu public void actionPerformed(ActionEvent e) { 28631212435723e2dfd5d6716d1f6a7b0e66a1e6b38Ceki Gulcu 28731212435723e2dfd5d6716d1f6a7b0e66a1e6b38Ceki Gulcu if (MIGRATE_COMMAND.equals(e.getActionCommand())) { 28831212435723e2dfd5d6716d1f6a7b0e66a1e6b38Ceki Gulcu 28931212435723e2dfd5d6716d1f6a7b0e66a1e6b38Ceki Gulcu List<String> errorList = doSanityAnalysis(); 29031212435723e2dfd5d6716d1f6a7b0e66a1e6b38Ceki Gulcu if (errorList.size() > 0) { 29131212435723e2dfd5d6716d1f6a7b0e66a1e6b38Ceki Gulcu showDialogBox(errorList); 29231212435723e2dfd5d6716d1f6a7b0e66a1e6b38Ceki Gulcu } else { 29331212435723e2dfd5d6716d1f6a7b0e66a1e6b38Ceki Gulcu 29431212435723e2dfd5d6716d1f6a7b0e66a1e6b38Ceki Gulcu File projectFolder = new File(folderTextField.getText()); 29531212435723e2dfd5d6716d1f6a7b0e66a1e6b38Ceki Gulcu int conversionType; 29631212435723e2dfd5d6716d1f6a7b0e66a1e6b38Ceki Gulcu if (radioJCL.isSelected()) { 29731212435723e2dfd5d6716d1f6a7b0e66a1e6b38Ceki Gulcu conversionType = Constant.JCL_TO_SLF4J; 29831212435723e2dfd5d6716d1f6a7b0e66a1e6b38Ceki Gulcu } else if (radioLog4j.isSelected()) { 29931212435723e2dfd5d6716d1f6a7b0e66a1e6b38Ceki Gulcu conversionType = Constant.LOG4J_TO_SLF4J; 30031212435723e2dfd5d6716d1f6a7b0e66a1e6b38Ceki Gulcu } else if (radioJUL.isSelected()) { 30131212435723e2dfd5d6716d1f6a7b0e66a1e6b38Ceki Gulcu conversionType = Constant.JUL_TO_SLF4J; 30231212435723e2dfd5d6716d1f6a7b0e66a1e6b38Ceki Gulcu } else { 30331212435723e2dfd5d6716d1f6a7b0e66a1e6b38Ceki Gulcu // we cannot possibly reach here 30431212435723e2dfd5d6716d1f6a7b0e66a1e6b38Ceki Gulcu throw new IllegalStateException("One of JCL or log4j project must have been previously chosen."); 30531212435723e2dfd5d6716d1f6a7b0e66a1e6b38Ceki Gulcu } 30631212435723e2dfd5d6716d1f6a7b0e66a1e6b38Ceki Gulcu ConversionTask task = new ConversionTask(projectFolder, this, conversionType); 30731212435723e2dfd5d6716d1f6a7b0e66a1e6b38Ceki Gulcu task.launch(); 30831212435723e2dfd5d6716d1f6a7b0e66a1e6b38Ceki Gulcu } 30931212435723e2dfd5d6716d1f6a7b0e66a1e6b38Ceki Gulcu } else if (BROWSE_COMMAND.equals(e.getActionCommand())) { 31031212435723e2dfd5d6716d1f6a7b0e66a1e6b38Ceki Gulcu showFileChooser(); 31131212435723e2dfd5d6716d1f6a7b0e66a1e6b38Ceki Gulcu } else if (EXIT_COMMAND.equals(e.getActionCommand())) { 31231212435723e2dfd5d6716d1f6a7b0e66a1e6b38Ceki Gulcu this.dispose(); 31331212435723e2dfd5d6716d1f6a7b0e66a1e6b38Ceki Gulcu } 31431212435723e2dfd5d6716d1f6a7b0e66a1e6b38Ceki Gulcu } 31531212435723e2dfd5d6716d1f6a7b0e66a1e6b38Ceki Gulcu 31631212435723e2dfd5d6716d1f6a7b0e66a1e6b38Ceki Gulcu void showFileChooser() { 31731212435723e2dfd5d6716d1f6a7b0e66a1e6b38Ceki Gulcu int returnVal = fileChooser.showOpenDialog(this); 31831212435723e2dfd5d6716d1f6a7b0e66a1e6b38Ceki Gulcu if (returnVal == JFileChooser.APPROVE_OPTION) { 31931212435723e2dfd5d6716d1f6a7b0e66a1e6b38Ceki Gulcu File selectedFile = fileChooser.getSelectedFile(); 32031212435723e2dfd5d6716d1f6a7b0e66a1e6b38Ceki Gulcu folderTextField.setText(selectedFile.getAbsolutePath()); 32131212435723e2dfd5d6716d1f6a7b0e66a1e6b38Ceki Gulcu } 32231212435723e2dfd5d6716d1f6a7b0e66a1e6b38Ceki Gulcu } 32331212435723e2dfd5d6716d1f6a7b0e66a1e6b38Ceki Gulcu 32431212435723e2dfd5d6716d1f6a7b0e66a1e6b38Ceki Gulcu List<String> doSanityAnalysis() { 32531212435723e2dfd5d6716d1f6a7b0e66a1e6b38Ceki Gulcu 32631212435723e2dfd5d6716d1f6a7b0e66a1e6b38Ceki Gulcu List<String> errorList = new ArrayList<String>(); 32731212435723e2dfd5d6716d1f6a7b0e66a1e6b38Ceki Gulcu if (!radioJCL.isSelected() && !radioLog4j.isSelected() && !radioJUL.isSelected()) { 32831212435723e2dfd5d6716d1f6a7b0e66a1e6b38Ceki Gulcu errorList.add("Please select the migration type: JCL, log4j, or JUL to SLF4J."); 32931212435723e2dfd5d6716d1f6a7b0e66a1e6b38Ceki Gulcu } 33031212435723e2dfd5d6716d1f6a7b0e66a1e6b38Ceki Gulcu 33131212435723e2dfd5d6716d1f6a7b0e66a1e6b38Ceki Gulcu String folder = folderTextField.getText(); 33231212435723e2dfd5d6716d1f6a7b0e66a1e6b38Ceki Gulcu 33331212435723e2dfd5d6716d1f6a7b0e66a1e6b38Ceki Gulcu if (folder == null || folder.length() == 0) { 33431212435723e2dfd5d6716d1f6a7b0e66a1e6b38Ceki Gulcu errorList.add("Please select the folder of the project to migrate"); 33531212435723e2dfd5d6716d1f6a7b0e66a1e6b38Ceki Gulcu } else if (!isDirectory(folder)) { 33631212435723e2dfd5d6716d1f6a7b0e66a1e6b38Ceki Gulcu errorList.add("[" + folder + "] does not look like a valid folder"); 33731212435723e2dfd5d6716d1f6a7b0e66a1e6b38Ceki Gulcu } 33831212435723e2dfd5d6716d1f6a7b0e66a1e6b38Ceki Gulcu 33931212435723e2dfd5d6716d1f6a7b0e66a1e6b38Ceki Gulcu if (!awareCheckBox.isSelected()) { 34031212435723e2dfd5d6716d1f6a7b0e66a1e6b38Ceki Gulcu errorList.add("Cannot initiate migration unless you acknowledge<p>that files will be modified without creating backup files"); 34131212435723e2dfd5d6716d1f6a7b0e66a1e6b38Ceki Gulcu } 34231212435723e2dfd5d6716d1f6a7b0e66a1e6b38Ceki Gulcu return errorList; 34331212435723e2dfd5d6716d1f6a7b0e66a1e6b38Ceki Gulcu } 34431212435723e2dfd5d6716d1f6a7b0e66a1e6b38Ceki Gulcu 34531212435723e2dfd5d6716d1f6a7b0e66a1e6b38Ceki Gulcu void showDialogBox(List<String> errorList) { 34631212435723e2dfd5d6716d1f6a7b0e66a1e6b38Ceki Gulcu StringBuilder buf = new StringBuilder(); 34731212435723e2dfd5d6716d1f6a7b0e66a1e6b38Ceki Gulcu buf.append("<html>"); 34831212435723e2dfd5d6716d1f6a7b0e66a1e6b38Ceki Gulcu int i = 1; 34931212435723e2dfd5d6716d1f6a7b0e66a1e6b38Ceki Gulcu for (String msg : errorList) { 35031212435723e2dfd5d6716d1f6a7b0e66a1e6b38Ceki Gulcu buf.append("<p>"); 35131212435723e2dfd5d6716d1f6a7b0e66a1e6b38Ceki Gulcu buf.append(i); 35231212435723e2dfd5d6716d1f6a7b0e66a1e6b38Ceki Gulcu buf.append(". "); 35331212435723e2dfd5d6716d1f6a7b0e66a1e6b38Ceki Gulcu buf.append(msg); 35431212435723e2dfd5d6716d1f6a7b0e66a1e6b38Ceki Gulcu buf.append("</p>"); 35531212435723e2dfd5d6716d1f6a7b0e66a1e6b38Ceki Gulcu i++; 35631212435723e2dfd5d6716d1f6a7b0e66a1e6b38Ceki Gulcu } 35731212435723e2dfd5d6716d1f6a7b0e66a1e6b38Ceki Gulcu buf.append("</html>"); 35831212435723e2dfd5d6716d1f6a7b0e66a1e6b38Ceki Gulcu 35931212435723e2dfd5d6716d1f6a7b0e66a1e6b38Ceki Gulcu JOptionPane.showMessageDialog(this, buf.toString(), "", JOptionPane.ERROR_MESSAGE); 36031212435723e2dfd5d6716d1f6a7b0e66a1e6b38Ceki Gulcu } 36131212435723e2dfd5d6716d1f6a7b0e66a1e6b38Ceki Gulcu 36231212435723e2dfd5d6716d1f6a7b0e66a1e6b38Ceki Gulcu boolean isDirectory(String filename) { 36331212435723e2dfd5d6716d1f6a7b0e66a1e6b38Ceki Gulcu if (filename == null) { 36431212435723e2dfd5d6716d1f6a7b0e66a1e6b38Ceki Gulcu return false; 36531212435723e2dfd5d6716d1f6a7b0e66a1e6b38Ceki Gulcu } 36631212435723e2dfd5d6716d1f6a7b0e66a1e6b38Ceki Gulcu File file = new File(filename); 36731212435723e2dfd5d6716d1f6a7b0e66a1e6b38Ceki Gulcu if (file.exists() && file.isDirectory()) { 36831212435723e2dfd5d6716d1f6a7b0e66a1e6b38Ceki Gulcu return true; 36931212435723e2dfd5d6716d1f6a7b0e66a1e6b38Ceki Gulcu } else { 37031212435723e2dfd5d6716d1f6a7b0e66a1e6b38Ceki Gulcu return false; 37131212435723e2dfd5d6716d1f6a7b0e66a1e6b38Ceki Gulcu } 37293e9c733a5c00843909fc68c683fb3f2c9d741d0Ceki Gulcu } 37393e9c733a5c00843909fc68c683fb3f2c9d741d0Ceki Gulcu} 374