1b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato/* 2b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato * ProGuard -- shrinking, optimization, obfuscation, and preverification 3b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato * of Java bytecode. 4b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato * 5b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato * Copyright (c) 2002-2009 Eric Lafortune (eric@graphics.cornell.edu) 6b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato * 7b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato * This program is free software; you can redistribute it and/or modify it 8b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato * under the terms of the GNU General Public License as published by the Free 9b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato * Software Foundation; either version 2 of the License, or (at your option) 10b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato * any later version. 11b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato * 12b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato * This program is distributed in the hope that it will be useful, but WITHOUT 13b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or 14b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for 15b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato * more details. 16b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato * 17b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato * You should have received a copy of the GNU General Public License along 18b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato * with this program; if not, write to the Free Software Foundation, Inc., 19b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato * 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA 20b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato */ 21b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onoratopackage proguard.gui; 22b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato 23b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onoratoimport proguard.*; 24b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato 25b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onoratoimport javax.swing.*; 26b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato 27b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato/** 28b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato * This <code>ListPanel</code> allows the user to add, edit, move, and remove 29b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato * KeepClassSpecification entries in a list. 30b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato * 31b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato * @author Eric Lafortune 32b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato */ 33b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onoratofinal class KeepSpecificationsPanel extends ClassSpecificationsPanel 34b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato{ 35b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato private final boolean markClasses; 36b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato private final boolean markConditionally; 37b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato private final boolean allowShrinking; 38b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato private final boolean allowOptimization; 39b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato private final boolean allowObfuscation; 40b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato 41b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato 42b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato public KeepSpecificationsPanel(JFrame owner, 43b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato boolean markClasses, 44b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato boolean markConditionally, 45b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato boolean allowShrinking, 46b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato boolean allowOptimization, 47b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato boolean allowObfuscation) 48b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato { 49b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato super(owner, true); 50b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato 51b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato this.markClasses = markClasses; 52b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato this.markConditionally = markConditionally; 53b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato this.allowShrinking = allowShrinking; 54b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato this.allowOptimization = allowOptimization; 55b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato this.allowObfuscation = allowObfuscation; 56b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato } 57b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato 58b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato 59b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato // Factory methods for ClassSpecificationsPanel. 60b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato 61b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato protected ClassSpecification createClassSpecification() 62b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato { 63b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato return new KeepClassSpecification(markClasses, 64b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato markConditionally, 65b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato allowShrinking, 66b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato allowOptimization, 67b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato allowObfuscation); 68b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato } 69b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato 70b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato 71b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato protected void setClassSpecification(ClassSpecification classSpecification) 72b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato { 73b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato classSpecificationDialog.setKeepSpecification((KeepClassSpecification)classSpecification); 74b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato } 75b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato 76b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato 77b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato protected ClassSpecification getClassSpecification() 78b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato { 79b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato return classSpecificationDialog.getKeepSpecification(); 80b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato } 81b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato} 82