sometsome 3.10.50 → 3.10.50.33

Sign up to get free protection for your applications and to get access to all the features.
Files changed (733) hide show
  1. checksums.yaml +4 -4
  2. metadata +13 -963
  3. data/lib/hola.rb +0 -5
  4. data/lib/proguard4.7/README +0 -33
  5. data/lib/proguard4.7/bin/proguard.bat +0 -14
  6. data/lib/proguard4.7/bin/proguard.sh +0 -11
  7. data/lib/proguard4.7/bin/proguardgui.bat +0 -14
  8. data/lib/proguard4.7/bin/proguardgui.sh +0 -15
  9. data/lib/proguard4.7/bin/retrace.bat +0 -14
  10. data/lib/proguard4.7/bin/retrace.sh +0 -12
  11. data/lib/proguard4.7/build/build.sh +0 -94
  12. data/lib/proguard4.7/build/build.xml +0 -171
  13. data/lib/proguard4.7/build/makefile +0 -94
  14. data/lib/proguard4.7/docs/FAQ.html +0 -253
  15. data/lib/proguard4.7/docs/GPL.html +0 -406
  16. data/lib/proguard4.7/docs/GPL_exception.html +0 -56
  17. data/lib/proguard4.7/docs/acknowledgements.html +0 -76
  18. data/lib/proguard4.7/docs/alternatives.html +0 -699
  19. data/lib/proguard4.7/docs/checkmark.gif +0 -0
  20. data/lib/proguard4.7/docs/downloads.html +0 -623
  21. data/lib/proguard4.7/docs/drop1.gif +0 -0
  22. data/lib/proguard4.7/docs/drop2.gif +0 -0
  23. data/lib/proguard4.7/docs/drop3.gif +0 -0
  24. data/lib/proguard4.7/docs/favicon.ico +0 -0
  25. data/lib/proguard4.7/docs/feedback.html +0 -120
  26. data/lib/proguard4.7/docs/index.html +0 -92
  27. data/lib/proguard4.7/docs/license.html +0 -60
  28. data/lib/proguard4.7/docs/main.html +0 -102
  29. data/lib/proguard4.7/docs/manual/ant.html +0 -634
  30. data/lib/proguard4.7/docs/manual/attention.gif +0 -0
  31. data/lib/proguard4.7/docs/manual/examples.html +0 -1504
  32. data/lib/proguard4.7/docs/manual/gui.html +0 -479
  33. data/lib/proguard4.7/docs/manual/index.html +0 -51
  34. data/lib/proguard4.7/docs/manual/introduction.html +0 -173
  35. data/lib/proguard4.7/docs/manual/limitations.html +0 -69
  36. data/lib/proguard4.7/docs/manual/optimizations.html +0 -172
  37. data/lib/proguard4.7/docs/manual/refcard.html +0 -486
  38. data/lib/proguard4.7/docs/manual/retrace/examples.html +0 -345
  39. data/lib/proguard4.7/docs/manual/retrace/index.html +0 -37
  40. data/lib/proguard4.7/docs/manual/retrace/introduction.html +0 -79
  41. data/lib/proguard4.7/docs/manual/retrace/usage.html +0 -127
  42. data/lib/proguard4.7/docs/manual/sections.html +0 -60
  43. data/lib/proguard4.7/docs/manual/style.css +0 -105
  44. data/lib/proguard4.7/docs/manual/troubleshooting.html +0 -729
  45. data/lib/proguard4.7/docs/manual/usage.html +0 -1243
  46. data/lib/proguard4.7/docs/manual/wtk.html +0 -70
  47. data/lib/proguard4.7/docs/quality.html +0 -56
  48. data/lib/proguard4.7/docs/results.html +0 -170
  49. data/lib/proguard4.7/docs/saikoalogo.png +0 -0
  50. data/lib/proguard4.7/docs/screenshot_console.gif +0 -0
  51. data/lib/proguard4.7/docs/screenshot_console_small.gif +0 -0
  52. data/lib/proguard4.7/docs/screenshot_gui1.gif +0 -0
  53. data/lib/proguard4.7/docs/screenshot_gui2.gif +0 -0
  54. data/lib/proguard4.7/docs/screenshot_gui3.gif +0 -0
  55. data/lib/proguard4.7/docs/screenshot_gui4.gif +0 -0
  56. data/lib/proguard4.7/docs/screenshot_gui5.gif +0 -0
  57. data/lib/proguard4.7/docs/screenshot_gui6.gif +0 -0
  58. data/lib/proguard4.7/docs/screenshot_gui7.gif +0 -0
  59. data/lib/proguard4.7/docs/screenshot_gui8.gif +0 -0
  60. data/lib/proguard4.7/docs/screenshots.html +0 -67
  61. data/lib/proguard4.7/docs/screenshots_gui_small.gif +0 -0
  62. data/lib/proguard4.7/docs/sections.html +0 -64
  63. data/lib/proguard4.7/docs/sflogo.png +0 -0
  64. data/lib/proguard4.7/docs/steel.gif +0 -0
  65. data/lib/proguard4.7/docs/style.css +0 -223
  66. data/lib/proguard4.7/docs/testimonials.html +0 -133
  67. data/lib/proguard4.7/docs/title.gif +0 -0
  68. data/lib/proguard4.7/docs/title.html +0 -17
  69. data/lib/proguard4.7/examples/android.pro +0 -149
  70. data/lib/proguard4.7/examples/annotations/examples.pro +0 -60
  71. data/lib/proguard4.7/examples/annotations/examples/Applet.java +0 -22
  72. data/lib/proguard4.7/examples/annotations/examples/Application.java +0 -20
  73. data/lib/proguard4.7/examples/annotations/examples/Bean.java +0 -56
  74. data/lib/proguard4.7/examples/annotations/examples/NativeCallBack.java +0 -44
  75. data/lib/proguard4.7/examples/annotations/lib/annotations.jar +0 -0
  76. data/lib/proguard4.7/examples/annotations/lib/annotations.pro +0 -118
  77. data/lib/proguard4.7/examples/annotations/src/proguard/annotation/Keep.java +0 -18
  78. data/lib/proguard4.7/examples/annotations/src/proguard/annotation/KeepApplication.java +0 -18
  79. data/lib/proguard4.7/examples/annotations/src/proguard/annotation/KeepClassMemberNames.java +0 -18
  80. data/lib/proguard4.7/examples/annotations/src/proguard/annotation/KeepClassMembers.java +0 -18
  81. data/lib/proguard4.7/examples/annotations/src/proguard/annotation/KeepGettersSetters.java +0 -18
  82. data/lib/proguard4.7/examples/annotations/src/proguard/annotation/KeepImplementations.java +0 -18
  83. data/lib/proguard4.7/examples/annotations/src/proguard/annotation/KeepName.java +0 -18
  84. data/lib/proguard4.7/examples/annotations/src/proguard/annotation/KeepPublicClassMemberNames.java +0 -18
  85. data/lib/proguard4.7/examples/annotations/src/proguard/annotation/KeepPublicClassMembers.java +0 -18
  86. data/lib/proguard4.7/examples/annotations/src/proguard/annotation/KeepPublicGettersSetters.java +0 -18
  87. data/lib/proguard4.7/examples/annotations/src/proguard/annotation/KeepPublicImplementations.java +0 -18
  88. data/lib/proguard4.7/examples/annotations/src/proguard/annotation/KeepPublicProtectedClassMemberNames.java +0 -18
  89. data/lib/proguard4.7/examples/annotations/src/proguard/annotation/KeepPublicProtectedClassMembers.java +0 -19
  90. data/lib/proguard4.7/examples/ant/android-8.xml +0 -177
  91. data/lib/proguard4.7/examples/ant/applets.xml +0 -88
  92. data/lib/proguard4.7/examples/ant/applications1.xml +0 -15
  93. data/lib/proguard4.7/examples/ant/applications2.xml +0 -74
  94. data/lib/proguard4.7/examples/ant/applications3.xml +0 -98
  95. data/lib/proguard4.7/examples/ant/library.xml +0 -102
  96. data/lib/proguard4.7/examples/ant/midlets.xml +0 -52
  97. data/lib/proguard4.7/examples/ant/proguard.xml +0 -78
  98. data/lib/proguard4.7/examples/ant/servlets.xml +0 -88
  99. data/lib/proguard4.7/examples/applets.pro +0 -69
  100. data/lib/proguard4.7/examples/applications.pro +0 -75
  101. data/lib/proguard4.7/examples/dictionaries/compact.txt +0 -18
  102. data/lib/proguard4.7/examples/dictionaries/keywords.txt +0 -58
  103. data/lib/proguard4.7/examples/dictionaries/shakespeare.txt +0 -23
  104. data/lib/proguard4.7/examples/dictionaries/windows.txt +0 -209
  105. data/lib/proguard4.7/examples/library.pro +0 -79
  106. data/lib/proguard4.7/examples/midlets.pro +0 -67
  107. data/lib/proguard4.7/examples/proguard.pro +0 -57
  108. data/lib/proguard4.7/examples/proguardall.pro +0 -62
  109. data/lib/proguard4.7/examples/proguardgui.pro +0 -50
  110. data/lib/proguard4.7/examples/retrace.pro +0 -43
  111. data/lib/proguard4.7/examples/scala.pro +0 -132
  112. data/lib/proguard4.7/examples/servlets.pro +0 -70
  113. data/lib/proguard4.7/lib/proguard.jar +0 -0
  114. data/lib/proguard4.7/lib/proguardgui.jar +0 -0
  115. data/lib/proguard4.7/lib/retrace.jar +0 -0
  116. data/lib/proguard4.7/src/proguard/ArgumentWordReader.java +0 -111
  117. data/lib/proguard4.7/src/proguard/ClassPath.java +0 -94
  118. data/lib/proguard4.7/src/proguard/ClassPathEntry.java +0 -282
  119. data/lib/proguard4.7/src/proguard/ClassSpecification.java +0 -259
  120. data/lib/proguard4.7/src/proguard/ClassSpecificationVisitorFactory.java +0 -503
  121. data/lib/proguard4.7/src/proguard/Configuration.java +0 -328
  122. data/lib/proguard4.7/src/proguard/ConfigurationConstants.java +0 -123
  123. data/lib/proguard4.7/src/proguard/ConfigurationParser.java +0 -1285
  124. data/lib/proguard4.7/src/proguard/ConfigurationWriter.java +0 -651
  125. data/lib/proguard4.7/src/proguard/DataEntryReaderFactory.java +0 -141
  126. data/lib/proguard4.7/src/proguard/DataEntryWriterFactory.java +0 -150
  127. data/lib/proguard4.7/src/proguard/DescriptorKeepChecker.java +0 -169
  128. data/lib/proguard4.7/src/proguard/DuplicateClassPrinter.java +0 -63
  129. data/lib/proguard4.7/src/proguard/FileWordReader.java +0 -55
  130. data/lib/proguard4.7/src/proguard/FullyQualifiedClassNameChecker.java +0 -191
  131. data/lib/proguard4.7/src/proguard/GPL.java +0 -197
  132. data/lib/proguard4.7/src/proguard/Initializer.java +0 -424
  133. data/lib/proguard4.7/src/proguard/InputReader.java +0 -233
  134. data/lib/proguard4.7/src/proguard/KeepClassMemberChecker.java +0 -87
  135. data/lib/proguard4.7/src/proguard/KeepClassSpecification.java +0 -137
  136. data/lib/proguard4.7/src/proguard/LineWordReader.java +0 -74
  137. data/lib/proguard4.7/src/proguard/MANIFEST.MF +0 -2
  138. data/lib/proguard4.7/src/proguard/MemberSpecification.java +0 -114
  139. data/lib/proguard4.7/src/proguard/OutputWriter.java +0 -296
  140. data/lib/proguard4.7/src/proguard/ParseException.java +0 -51
  141. data/lib/proguard4.7/src/proguard/ProGuard.java +0 -512
  142. data/lib/proguard4.7/src/proguard/SeedPrinter.java +0 -97
  143. data/lib/proguard4.7/src/proguard/SubclassedClassFilter.java +0 -62
  144. data/lib/proguard4.7/src/proguard/Targeter.java +0 -88
  145. data/lib/proguard4.7/src/proguard/UpToDateChecker.java +0 -232
  146. data/lib/proguard4.7/src/proguard/WordReader.java +0 -387
  147. data/lib/proguard4.7/src/proguard/ant/ClassPathElement.java +0 -191
  148. data/lib/proguard4.7/src/proguard/ant/ClassSpecificationElement.java +0 -258
  149. data/lib/proguard4.7/src/proguard/ant/ConfigurationElement.java +0 -53
  150. data/lib/proguard4.7/src/proguard/ant/ConfigurationTask.java +0 -441
  151. data/lib/proguard4.7/src/proguard/ant/FilterElement.java +0 -85
  152. data/lib/proguard4.7/src/proguard/ant/KeepSpecificationElement.java +0 -87
  153. data/lib/proguard4.7/src/proguard/ant/MemberSpecificationElement.java +0 -218
  154. data/lib/proguard4.7/src/proguard/ant/ProGuardTask.java +0 -352
  155. data/lib/proguard4.7/src/proguard/ant/package.html +0 -3
  156. data/lib/proguard4.7/src/proguard/ant/task.properties +0 -2
  157. data/lib/proguard4.7/src/proguard/classfile/ClassConstants.java +0 -316
  158. data/lib/proguard4.7/src/proguard/classfile/ClassPool.java +0 -152
  159. data/lib/proguard4.7/src/proguard/classfile/Clazz.java +0 -261
  160. data/lib/proguard4.7/src/proguard/classfile/Field.java +0 -32
  161. data/lib/proguard4.7/src/proguard/classfile/LibraryClass.java +0 -548
  162. data/lib/proguard4.7/src/proguard/classfile/LibraryField.java +0 -77
  163. data/lib/proguard4.7/src/proguard/classfile/LibraryMember.java +0 -108
  164. data/lib/proguard4.7/src/proguard/classfile/LibraryMethod.java +0 -83
  165. data/lib/proguard4.7/src/proguard/classfile/Member.java +0 -57
  166. data/lib/proguard4.7/src/proguard/classfile/Method.java +0 -32
  167. data/lib/proguard4.7/src/proguard/classfile/ProgramClass.java +0 -572
  168. data/lib/proguard4.7/src/proguard/classfile/ProgramField.java +0 -93
  169. data/lib/proguard4.7/src/proguard/classfile/ProgramMember.java +0 -168
  170. data/lib/proguard4.7/src/proguard/classfile/ProgramMethod.java +0 -99
  171. data/lib/proguard4.7/src/proguard/classfile/VisitorAccepter.java +0 -47
  172. data/lib/proguard4.7/src/proguard/classfile/attribute/Attribute.java +0 -142
  173. data/lib/proguard4.7/src/proguard/classfile/attribute/BootstrapMethodInfo.java +0 -89
  174. data/lib/proguard4.7/src/proguard/classfile/attribute/BootstrapMethodsAttribute.java +0 -95
  175. data/lib/proguard4.7/src/proguard/classfile/attribute/CodeAttribute.java +0 -202
  176. data/lib/proguard4.7/src/proguard/classfile/attribute/ConstantValueAttribute.java +0 -62
  177. data/lib/proguard4.7/src/proguard/classfile/attribute/DeprecatedAttribute.java +0 -66
  178. data/lib/proguard4.7/src/proguard/classfile/attribute/EnclosingMethodAttribute.java +0 -132
  179. data/lib/proguard4.7/src/proguard/classfile/attribute/ExceptionInfo.java +0 -100
  180. data/lib/proguard4.7/src/proguard/classfile/attribute/ExceptionsAttribute.java +0 -80
  181. data/lib/proguard4.7/src/proguard/classfile/attribute/InnerClassesAttribute.java +0 -80
  182. data/lib/proguard4.7/src/proguard/classfile/attribute/InnerClassesInfo.java +0 -119
  183. data/lib/proguard4.7/src/proguard/classfile/attribute/LineNumberInfo.java +0 -50
  184. data/lib/proguard4.7/src/proguard/classfile/attribute/LineNumberTableAttribute.java +0 -100
  185. data/lib/proguard4.7/src/proguard/classfile/attribute/LocalVariableInfo.java +0 -99
  186. data/lib/proguard4.7/src/proguard/classfile/attribute/LocalVariableTableAttribute.java +0 -79
  187. data/lib/proguard4.7/src/proguard/classfile/attribute/LocalVariableTypeInfo.java +0 -107
  188. data/lib/proguard4.7/src/proguard/classfile/attribute/LocalVariableTypeTableAttribute.java +0 -79
  189. data/lib/proguard4.7/src/proguard/classfile/attribute/SignatureAttribute.java +0 -100
  190. data/lib/proguard4.7/src/proguard/classfile/attribute/SourceDirAttribute.java +0 -62
  191. data/lib/proguard4.7/src/proguard/classfile/attribute/SourceFileAttribute.java +0 -62
  192. data/lib/proguard4.7/src/proguard/classfile/attribute/SyntheticAttribute.java +0 -66
  193. data/lib/proguard4.7/src/proguard/classfile/attribute/UnknownAttribute.java +0 -82
  194. data/lib/proguard4.7/src/proguard/classfile/attribute/annotation/Annotation.java +0 -143
  195. data/lib/proguard4.7/src/proguard/classfile/attribute/annotation/AnnotationDefaultAttribute.java +0 -73
  196. data/lib/proguard4.7/src/proguard/classfile/attribute/annotation/AnnotationElementValue.java +0 -76
  197. data/lib/proguard4.7/src/proguard/classfile/attribute/annotation/AnnotationsAttribute.java +0 -100
  198. data/lib/proguard4.7/src/proguard/classfile/attribute/annotation/ArrayElementValue.java +0 -82
  199. data/lib/proguard4.7/src/proguard/classfile/attribute/annotation/ClassElementValue.java +0 -95
  200. data/lib/proguard4.7/src/proguard/classfile/attribute/annotation/ConstantElementValue.java +0 -71
  201. data/lib/proguard4.7/src/proguard/classfile/attribute/annotation/ElementValue.java +0 -126
  202. data/lib/proguard4.7/src/proguard/classfile/attribute/annotation/EnumConstantElementValue.java +0 -99
  203. data/lib/proguard4.7/src/proguard/classfile/attribute/annotation/ParameterAnnotationsAttribute.java +0 -83
  204. data/lib/proguard4.7/src/proguard/classfile/attribute/annotation/RuntimeInvisibleAnnotationsAttribute.java +0 -70
  205. data/lib/proguard4.7/src/proguard/classfile/attribute/annotation/RuntimeInvisibleParameterAnnotationsAttribute.java +0 -62
  206. data/lib/proguard4.7/src/proguard/classfile/attribute/annotation/RuntimeVisibleAnnotationsAttribute.java +0 -70
  207. data/lib/proguard4.7/src/proguard/classfile/attribute/annotation/RuntimeVisibleParameterAnnotationsAttribute.java +0 -62
  208. data/lib/proguard4.7/src/proguard/classfile/attribute/annotation/package.html +0 -4
  209. data/lib/proguard4.7/src/proguard/classfile/attribute/annotation/visitor/AllAnnotationVisitor.java +0 -100
  210. data/lib/proguard4.7/src/proguard/classfile/attribute/annotation/visitor/AnnotatedClassVisitor.java +0 -62
  211. data/lib/proguard4.7/src/proguard/classfile/attribute/annotation/visitor/AnnotationToMemberVisitor.java +0 -62
  212. data/lib/proguard4.7/src/proguard/classfile/attribute/annotation/visitor/AnnotationTypeFilter.java +0 -102
  213. data/lib/proguard4.7/src/proguard/classfile/attribute/annotation/visitor/AnnotationVisitor.java +0 -40
  214. data/lib/proguard4.7/src/proguard/classfile/attribute/annotation/visitor/ElementValueVisitor.java +0 -51
  215. data/lib/proguard4.7/src/proguard/classfile/attribute/annotation/visitor/package.html +0 -3
  216. data/lib/proguard4.7/src/proguard/classfile/attribute/package.html +0 -3
  217. data/lib/proguard4.7/src/proguard/classfile/attribute/preverification/DoubleType.java +0 -66
  218. data/lib/proguard4.7/src/proguard/classfile/attribute/preverification/FloatType.java +0 -66
  219. data/lib/proguard4.7/src/proguard/classfile/attribute/preverification/FullFrame.java +0 -202
  220. data/lib/proguard4.7/src/proguard/classfile/attribute/preverification/IntegerType.java +0 -66
  221. data/lib/proguard4.7/src/proguard/classfile/attribute/preverification/LessZeroFrame.java +0 -103
  222. data/lib/proguard4.7/src/proguard/classfile/attribute/preverification/LongType.java +0 -66
  223. data/lib/proguard4.7/src/proguard/classfile/attribute/preverification/MoreZeroFrame.java +0 -161
  224. data/lib/proguard4.7/src/proguard/classfile/attribute/preverification/NullType.java +0 -66
  225. data/lib/proguard4.7/src/proguard/classfile/attribute/preverification/ObjectType.java +0 -107
  226. data/lib/proguard4.7/src/proguard/classfile/attribute/preverification/SameOneFrame.java +0 -115
  227. data/lib/proguard4.7/src/proguard/classfile/attribute/preverification/SameZeroFrame.java +0 -74
  228. data/lib/proguard4.7/src/proguard/classfile/attribute/preverification/StackMapAttribute.java +0 -91
  229. data/lib/proguard4.7/src/proguard/classfile/attribute/preverification/StackMapFrame.java +0 -117
  230. data/lib/proguard4.7/src/proguard/classfile/attribute/preverification/StackMapTableAttribute.java +0 -93
  231. data/lib/proguard4.7/src/proguard/classfile/attribute/preverification/TopType.java +0 -66
  232. data/lib/proguard4.7/src/proguard/classfile/attribute/preverification/UninitializedThisType.java +0 -66
  233. data/lib/proguard4.7/src/proguard/classfile/attribute/preverification/UninitializedType.java +0 -106
  234. data/lib/proguard4.7/src/proguard/classfile/attribute/preverification/VerificationType.java +0 -103
  235. data/lib/proguard4.7/src/proguard/classfile/attribute/preverification/VerificationTypeFactory.java +0 -112
  236. data/lib/proguard4.7/src/proguard/classfile/attribute/preverification/visitor/StackMapFrameVisitor.java +0 -40
  237. data/lib/proguard4.7/src/proguard/classfile/attribute/preverification/visitor/VerificationTypeVisitor.java +0 -65
  238. data/lib/proguard4.7/src/proguard/classfile/attribute/visitor/AllAttributeVisitor.java +0 -117
  239. data/lib/proguard4.7/src/proguard/classfile/attribute/visitor/AllBootstrapMethodInfoVisitor.java +0 -55
  240. data/lib/proguard4.7/src/proguard/classfile/attribute/visitor/AllExceptionInfoVisitor.java +0 -55
  241. data/lib/proguard4.7/src/proguard/classfile/attribute/visitor/AllInnerClassesInfoVisitor.java +0 -55
  242. data/lib/proguard4.7/src/proguard/classfile/attribute/visitor/AttributeNameFilter.java +0 -368
  243. data/lib/proguard4.7/src/proguard/classfile/attribute/visitor/AttributeVisitor.java +0 -90
  244. data/lib/proguard4.7/src/proguard/classfile/attribute/visitor/BootstrapMethodInfoVisitor.java +0 -40
  245. data/lib/proguard4.7/src/proguard/classfile/attribute/visitor/ExceptionInfoVisitor.java +0 -37
  246. data/lib/proguard4.7/src/proguard/classfile/attribute/visitor/InnerClassesInfoVisitor.java +0 -38
  247. data/lib/proguard4.7/src/proguard/classfile/attribute/visitor/LineNumberInfoVisitor.java +0 -38
  248. data/lib/proguard4.7/src/proguard/classfile/attribute/visitor/LocalVariableInfoVisitor.java +0 -38
  249. data/lib/proguard4.7/src/proguard/classfile/attribute/visitor/LocalVariableTypeInfoVisitor.java +0 -38
  250. data/lib/proguard4.7/src/proguard/classfile/attribute/visitor/MultiAttributeVisitor.java +0 -365
  251. data/lib/proguard4.7/src/proguard/classfile/attribute/visitor/NonEmptyAttributeFilter.java +0 -293
  252. data/lib/proguard4.7/src/proguard/classfile/attribute/visitor/RequiredAttributeFilter.java +0 -360
  253. data/lib/proguard4.7/src/proguard/classfile/attribute/visitor/StackSizeComputer.java +0 -378
  254. data/lib/proguard4.7/src/proguard/classfile/attribute/visitor/package.html +0 -3
  255. data/lib/proguard4.7/src/proguard/classfile/constant/ClassConstant.java +0 -105
  256. data/lib/proguard4.7/src/proguard/classfile/constant/Constant.java +0 -68
  257. data/lib/proguard4.7/src/proguard/classfile/constant/DoubleConstant.java +0 -82
  258. data/lib/proguard4.7/src/proguard/classfile/constant/FieldrefConstant.java +0 -71
  259. data/lib/proguard4.7/src/proguard/classfile/constant/FloatConstant.java +0 -82
  260. data/lib/proguard4.7/src/proguard/classfile/constant/IntegerConstant.java +0 -82
  261. data/lib/proguard4.7/src/proguard/classfile/constant/InterfaceMethodrefConstant.java +0 -71
  262. data/lib/proguard4.7/src/proguard/classfile/constant/InvokeDynamicConstant.java +0 -148
  263. data/lib/proguard4.7/src/proguard/classfile/constant/LongConstant.java +0 -82
  264. data/lib/proguard4.7/src/proguard/classfile/constant/MethodHandleConstant.java +0 -124
  265. data/lib/proguard4.7/src/proguard/classfile/constant/MethodTypeConstant.java +0 -93
  266. data/lib/proguard4.7/src/proguard/classfile/constant/MethodrefConstant.java +0 -71
  267. data/lib/proguard4.7/src/proguard/classfile/constant/NameAndTypeConstant.java +0 -119
  268. data/lib/proguard4.7/src/proguard/classfile/constant/RefConstant.java +0 -130
  269. data/lib/proguard4.7/src/proguard/classfile/constant/StringConstant.java +0 -135
  270. data/lib/proguard4.7/src/proguard/classfile/constant/Utf8Constant.java +0 -285
  271. data/lib/proguard4.7/src/proguard/classfile/constant/visitor/AllConstantVisitor.java +0 -53
  272. data/lib/proguard4.7/src/proguard/classfile/constant/visitor/BootstrapMethodHandleTraveler.java +0 -100
  273. data/lib/proguard4.7/src/proguard/classfile/constant/visitor/ConstantTagFilter.java +0 -86
  274. data/lib/proguard4.7/src/proguard/classfile/constant/visitor/ConstantVisitor.java +0 -49
  275. data/lib/proguard4.7/src/proguard/classfile/constant/visitor/ExceptClassConstantFilter.java +0 -69
  276. data/lib/proguard4.7/src/proguard/classfile/constant/visitor/MethodrefTraveler.java +0 -60
  277. data/lib/proguard4.7/src/proguard/classfile/constant/visitor/package.html +0 -3
  278. data/lib/proguard4.7/src/proguard/classfile/editor/AccessFixer.java +0 -180
  279. data/lib/proguard4.7/src/proguard/classfile/editor/AnnotationAdder.java +0 -153
  280. data/lib/proguard4.7/src/proguard/classfile/editor/AnnotationsAttributeEditor.java +0 -67
  281. data/lib/proguard4.7/src/proguard/classfile/editor/AttributeAdder.java +0 -457
  282. data/lib/proguard4.7/src/proguard/classfile/editor/AttributeSorter.java +0 -89
  283. data/lib/proguard4.7/src/proguard/classfile/editor/AttributesEditor.java +0 -269
  284. data/lib/proguard4.7/src/proguard/classfile/editor/BridgeMethodFixer.java +0 -117
  285. data/lib/proguard4.7/src/proguard/classfile/editor/ClassEditor.java +0 -255
  286. data/lib/proguard4.7/src/proguard/classfile/editor/ClassElementSorter.java +0 -52
  287. data/lib/proguard4.7/src/proguard/classfile/editor/ClassMemberSorter.java +0 -69
  288. data/lib/proguard4.7/src/proguard/classfile/editor/ClassReferenceFixer.java +0 -546
  289. data/lib/proguard4.7/src/proguard/classfile/editor/CodeAttributeComposer.java +0 -843
  290. data/lib/proguard4.7/src/proguard/classfile/editor/CodeAttributeEditor.java +0 -1104
  291. data/lib/proguard4.7/src/proguard/classfile/editor/CodeAttributeEditorResetter.java +0 -60
  292. data/lib/proguard4.7/src/proguard/classfile/editor/ComparableConstant.java +0 -249
  293. data/lib/proguard4.7/src/proguard/classfile/editor/ConstantAdder.java +0 -239
  294. data/lib/proguard4.7/src/proguard/classfile/editor/ConstantPoolEditor.java +0 -782
  295. data/lib/proguard4.7/src/proguard/classfile/editor/ConstantPoolRemapper.java +0 -662
  296. data/lib/proguard4.7/src/proguard/classfile/editor/ConstantPoolShrinker.java +0 -578
  297. data/lib/proguard4.7/src/proguard/classfile/editor/ConstantPoolSorter.java +0 -123
  298. data/lib/proguard4.7/src/proguard/classfile/editor/ElementValueAdder.java +0 -217
  299. data/lib/proguard4.7/src/proguard/classfile/editor/ElementValuesEditor.java +0 -238
  300. data/lib/proguard4.7/src/proguard/classfile/editor/ExceptionAdder.java +0 -65
  301. data/lib/proguard4.7/src/proguard/classfile/editor/ExceptionInfoAdder.java +0 -67
  302. data/lib/proguard4.7/src/proguard/classfile/editor/ExceptionsAttributeEditor.java +0 -68
  303. data/lib/proguard4.7/src/proguard/classfile/editor/InnerClassesAccessFixer.java +0 -83
  304. data/lib/proguard4.7/src/proguard/classfile/editor/InstructionAdder.java +0 -76
  305. data/lib/proguard4.7/src/proguard/classfile/editor/InstructionWriter.java +0 -278
  306. data/lib/proguard4.7/src/proguard/classfile/editor/InterfaceAdder.java +0 -62
  307. data/lib/proguard4.7/src/proguard/classfile/editor/InterfaceSorter.java +0 -152
  308. data/lib/proguard4.7/src/proguard/classfile/editor/InterfacesEditor.java +0 -122
  309. data/lib/proguard4.7/src/proguard/classfile/editor/LineNumberInfoAdder.java +0 -59
  310. data/lib/proguard4.7/src/proguard/classfile/editor/LineNumberTableAttributeEditor.java +0 -67
  311. data/lib/proguard4.7/src/proguard/classfile/editor/LocalVariableInfoAdder.java +0 -67
  312. data/lib/proguard4.7/src/proguard/classfile/editor/LocalVariableTableAttributeEditor.java +0 -67
  313. data/lib/proguard4.7/src/proguard/classfile/editor/LocalVariableTypeInfoAdder.java +0 -68
  314. data/lib/proguard4.7/src/proguard/classfile/editor/LocalVariableTypeTableAttributeEditor.java +0 -68
  315. data/lib/proguard4.7/src/proguard/classfile/editor/MemberAdder.java +0 -288
  316. data/lib/proguard4.7/src/proguard/classfile/editor/MemberReferenceFixer.java +0 -447
  317. data/lib/proguard4.7/src/proguard/classfile/editor/MethodInvocationFixer.java +0 -243
  318. data/lib/proguard4.7/src/proguard/classfile/editor/NameAndTypeShrinker.java +0 -188
  319. data/lib/proguard4.7/src/proguard/classfile/editor/NamedAttributeDeleter.java +0 -54
  320. data/lib/proguard4.7/src/proguard/classfile/editor/ParameterAnnotationsAttributeEditor.java +0 -71
  321. data/lib/proguard4.7/src/proguard/classfile/editor/StackSizeUpdater.java +0 -54
  322. data/lib/proguard4.7/src/proguard/classfile/editor/SubclassAdder.java +0 -59
  323. data/lib/proguard4.7/src/proguard/classfile/editor/SubclassToAdder.java +0 -60
  324. data/lib/proguard4.7/src/proguard/classfile/editor/Utf8Shrinker.java +0 -455
  325. data/lib/proguard4.7/src/proguard/classfile/editor/VariableCleaner.java +0 -267
  326. data/lib/proguard4.7/src/proguard/classfile/editor/VariableEditor.java +0 -130
  327. data/lib/proguard4.7/src/proguard/classfile/editor/VariableRemapper.java +0 -156
  328. data/lib/proguard4.7/src/proguard/classfile/editor/VariableSizeUpdater.java +0 -105
  329. data/lib/proguard4.7/src/proguard/classfile/editor/package.html +0 -3
  330. data/lib/proguard4.7/src/proguard/classfile/instruction/BranchInstruction.java +0 -180
  331. data/lib/proguard4.7/src/proguard/classfile/instruction/ConstantInstruction.java +0 -309
  332. data/lib/proguard4.7/src/proguard/classfile/instruction/Instruction.java +0 -920
  333. data/lib/proguard4.7/src/proguard/classfile/instruction/InstructionConstants.java +0 -449
  334. data/lib/proguard4.7/src/proguard/classfile/instruction/InstructionFactory.java +0 -300
  335. data/lib/proguard4.7/src/proguard/classfile/instruction/InstructionUtil.java +0 -67
  336. data/lib/proguard4.7/src/proguard/classfile/instruction/LookUpSwitchInstruction.java +0 -135
  337. data/lib/proguard4.7/src/proguard/classfile/instruction/SimpleInstruction.java +0 -255
  338. data/lib/proguard4.7/src/proguard/classfile/instruction/SwitchInstruction.java +0 -83
  339. data/lib/proguard4.7/src/proguard/classfile/instruction/TableSwitchInstruction.java +0 -139
  340. data/lib/proguard4.7/src/proguard/classfile/instruction/VariableInstruction.java +0 -372
  341. data/lib/proguard4.7/src/proguard/classfile/instruction/package.html +0 -9
  342. data/lib/proguard4.7/src/proguard/classfile/instruction/visitor/AllInstructionVisitor.java +0 -56
  343. data/lib/proguard4.7/src/proguard/classfile/instruction/visitor/InstructionCounter.java +0 -59
  344. data/lib/proguard4.7/src/proguard/classfile/instruction/visitor/InstructionVisitor.java +0 -42
  345. data/lib/proguard4.7/src/proguard/classfile/instruction/visitor/MultiInstructionVisitor.java +0 -131
  346. data/lib/proguard4.7/src/proguard/classfile/instruction/visitor/package.html +0 -3
  347. data/lib/proguard4.7/src/proguard/classfile/io/LibraryClassReader.java +0 -383
  348. data/lib/proguard4.7/src/proguard/classfile/io/ProgramClassReader.java +0 -919
  349. data/lib/proguard4.7/src/proguard/classfile/io/ProgramClassWriter.java +0 -735
  350. data/lib/proguard4.7/src/proguard/classfile/io/RuntimeDataInput.java +0 -223
  351. data/lib/proguard4.7/src/proguard/classfile/io/RuntimeDataOutput.java +0 -224
  352. data/lib/proguard4.7/src/proguard/classfile/io/package.html +0 -3
  353. data/lib/proguard4.7/src/proguard/classfile/package.html +0 -15
  354. data/lib/proguard4.7/src/proguard/classfile/util/AccessUtil.java +0 -105
  355. data/lib/proguard4.7/src/proguard/classfile/util/ClassReferenceInitializer.java +0 -559
  356. data/lib/proguard4.7/src/proguard/classfile/util/ClassSubHierarchyInitializer.java +0 -77
  357. data/lib/proguard4.7/src/proguard/classfile/util/ClassSuperHierarchyInitializer.java +0 -163
  358. data/lib/proguard4.7/src/proguard/classfile/util/ClassUtil.java +0 -1227
  359. data/lib/proguard4.7/src/proguard/classfile/util/DescriptorClassEnumeration.java +0 -236
  360. data/lib/proguard4.7/src/proguard/classfile/util/DynamicClassReferenceInitializer.java +0 -485
  361. data/lib/proguard4.7/src/proguard/classfile/util/DynamicMemberReferenceInitializer.java +0 -944
  362. data/lib/proguard4.7/src/proguard/classfile/util/ExternalTypeEnumeration.java +0 -106
  363. data/lib/proguard4.7/src/proguard/classfile/util/InstructionSequenceMatcher.java +0 -754
  364. data/lib/proguard4.7/src/proguard/classfile/util/InternalTypeEnumeration.java +0 -204
  365. data/lib/proguard4.7/src/proguard/classfile/util/MemberFinder.java +0 -197
  366. data/lib/proguard4.7/src/proguard/classfile/util/MethodLinker.java +0 -160
  367. data/lib/proguard4.7/src/proguard/classfile/util/SimplifiedVisitor.java +0 -834
  368. data/lib/proguard4.7/src/proguard/classfile/util/StringReferenceInitializer.java +0 -90
  369. data/lib/proguard4.7/src/proguard/classfile/util/StringSharer.java +0 -172
  370. data/lib/proguard4.7/src/proguard/classfile/util/WarningPrinter.java +0 -136
  371. data/lib/proguard4.7/src/proguard/classfile/util/package.html +0 -3
  372. data/lib/proguard4.7/src/proguard/classfile/visitor/AllClassVisitor.java +0 -47
  373. data/lib/proguard4.7/src/proguard/classfile/visitor/AllFieldVisitor.java +0 -55
  374. data/lib/proguard4.7/src/proguard/classfile/visitor/AllMemberVisitor.java +0 -57
  375. data/lib/proguard4.7/src/proguard/classfile/visitor/AllMethodVisitor.java +0 -55
  376. data/lib/proguard4.7/src/proguard/classfile/visitor/BottomClassFilter.java +0 -69
  377. data/lib/proguard4.7/src/proguard/classfile/visitor/ClassAccessFilter.java +0 -88
  378. data/lib/proguard4.7/src/proguard/classfile/visitor/ClassCleaner.java +0 -275
  379. data/lib/proguard4.7/src/proguard/classfile/visitor/ClassCollector.java +0 -58
  380. data/lib/proguard4.7/src/proguard/classfile/visitor/ClassCounter.java +0 -56
  381. data/lib/proguard4.7/src/proguard/classfile/visitor/ClassHierarchyTraveler.java +0 -91
  382. data/lib/proguard4.7/src/proguard/classfile/visitor/ClassNameFilter.java +0 -112
  383. data/lib/proguard4.7/src/proguard/classfile/visitor/ClassPoolFiller.java +0 -55
  384. data/lib/proguard4.7/src/proguard/classfile/visitor/ClassPoolVisitor.java +0 -37
  385. data/lib/proguard4.7/src/proguard/classfile/visitor/ClassPresenceFilter.java +0 -93
  386. data/lib/proguard4.7/src/proguard/classfile/visitor/ClassPrinter.java +0 -1011
  387. data/lib/proguard4.7/src/proguard/classfile/visitor/ClassVersionFilter.java +0 -85
  388. data/lib/proguard4.7/src/proguard/classfile/visitor/ClassVersionSetter.java +0 -83
  389. data/lib/proguard4.7/src/proguard/classfile/visitor/ClassVisitor.java +0 -36
  390. data/lib/proguard4.7/src/proguard/classfile/visitor/ConcreteClassDownTraveler.java +0 -100
  391. data/lib/proguard4.7/src/proguard/classfile/visitor/DotClassClassVisitor.java +0 -89
  392. data/lib/proguard4.7/src/proguard/classfile/visitor/ExceptClassFilter.java +0 -69
  393. data/lib/proguard4.7/src/proguard/classfile/visitor/ExceptClassesFilter.java +0 -90
  394. data/lib/proguard4.7/src/proguard/classfile/visitor/ExceptionCounter.java +0 -52
  395. data/lib/proguard4.7/src/proguard/classfile/visitor/ExceptionExcludedOffsetFilter.java +0 -64
  396. data/lib/proguard4.7/src/proguard/classfile/visitor/ExceptionHandlerConstantVisitor.java +0 -62
  397. data/lib/proguard4.7/src/proguard/classfile/visitor/ExceptionHandlerFilter.java +0 -70
  398. data/lib/proguard4.7/src/proguard/classfile/visitor/ExceptionOffsetFilter.java +0 -64
  399. data/lib/proguard4.7/src/proguard/classfile/visitor/ExceptionRangeFilter.java +0 -68
  400. data/lib/proguard4.7/src/proguard/classfile/visitor/ImplementedClassConstantFilter.java +0 -69
  401. data/lib/proguard4.7/src/proguard/classfile/visitor/ImplementedClassFilter.java +0 -71
  402. data/lib/proguard4.7/src/proguard/classfile/visitor/ImplementingClassConstantFilter.java +0 -70
  403. data/lib/proguard4.7/src/proguard/classfile/visitor/LibraryClassFilter.java +0 -60
  404. data/lib/proguard4.7/src/proguard/classfile/visitor/LibraryMemberFilter.java +0 -73
  405. data/lib/proguard4.7/src/proguard/classfile/visitor/MemberAccessFilter.java +0 -122
  406. data/lib/proguard4.7/src/proguard/classfile/visitor/MemberClassAccessFilter.java +0 -106
  407. data/lib/proguard4.7/src/proguard/classfile/visitor/MemberCollector.java +0 -59
  408. data/lib/proguard4.7/src/proguard/classfile/visitor/MemberCounter.java +0 -72
  409. data/lib/proguard4.7/src/proguard/classfile/visitor/MemberDescriptorFilter.java +0 -113
  410. data/lib/proguard4.7/src/proguard/classfile/visitor/MemberNameFilter.java +0 -113
  411. data/lib/proguard4.7/src/proguard/classfile/visitor/MemberToClassVisitor.java +0 -90
  412. data/lib/proguard4.7/src/proguard/classfile/visitor/MemberVisitor.java +0 -40
  413. data/lib/proguard4.7/src/proguard/classfile/visitor/MethodImplementationFilter.java +0 -70
  414. data/lib/proguard4.7/src/proguard/classfile/visitor/MethodImplementationTraveler.java +0 -128
  415. data/lib/proguard4.7/src/proguard/classfile/visitor/MultiClassPoolVisitor.java +0 -88
  416. data/lib/proguard4.7/src/proguard/classfile/visitor/MultiClassVisitor.java +0 -97
  417. data/lib/proguard4.7/src/proguard/classfile/visitor/MultiMemberVisitor.java +0 -113
  418. data/lib/proguard4.7/src/proguard/classfile/visitor/NamedClassVisitor.java +0 -49
  419. data/lib/proguard4.7/src/proguard/classfile/visitor/NamedFieldVisitor.java +0 -61
  420. data/lib/proguard4.7/src/proguard/classfile/visitor/NamedMethodVisitor.java +0 -61
  421. data/lib/proguard4.7/src/proguard/classfile/visitor/ProgramClassFilter.java +0 -60
  422. data/lib/proguard4.7/src/proguard/classfile/visitor/ProgramMemberFilter.java +0 -73
  423. data/lib/proguard4.7/src/proguard/classfile/visitor/ReferencedClassVisitor.java +0 -255
  424. data/lib/proguard4.7/src/proguard/classfile/visitor/ReferencedMemberVisitor.java +0 -73
  425. data/lib/proguard4.7/src/proguard/classfile/visitor/SimilarMemberVisitor.java +0 -125
  426. data/lib/proguard4.7/src/proguard/classfile/visitor/SimpleClassPrinter.java +0 -167
  427. data/lib/proguard4.7/src/proguard/classfile/visitor/SubclassFilter.java +0 -91
  428. data/lib/proguard4.7/src/proguard/classfile/visitor/SubclassTraveler.java +0 -60
  429. data/lib/proguard4.7/src/proguard/classfile/visitor/VariableClassVisitor.java +0 -78
  430. data/lib/proguard4.7/src/proguard/classfile/visitor/VariableMemberVisitor.java +0 -96
  431. data/lib/proguard4.7/src/proguard/classfile/visitor/package.html +0 -40
  432. data/lib/proguard4.7/src/proguard/evaluation/BasicBranchUnit.java +0 -126
  433. data/lib/proguard4.7/src/proguard/evaluation/BasicInvocationUnit.java +0 -425
  434. data/lib/proguard4.7/src/proguard/evaluation/BranchUnit.java +0 -63
  435. data/lib/proguard4.7/src/proguard/evaluation/ClassConstantValueFactory.java +0 -53
  436. data/lib/proguard4.7/src/proguard/evaluation/ConstantValueFactory.java +0 -113
  437. data/lib/proguard4.7/src/proguard/evaluation/InvocationUnit.java +0 -62
  438. data/lib/proguard4.7/src/proguard/evaluation/Processor.java +0 -908
  439. data/lib/proguard4.7/src/proguard/evaluation/Stack.java +0 -560
  440. data/lib/proguard4.7/src/proguard/evaluation/TracedStack.java +0 -342
  441. data/lib/proguard4.7/src/proguard/evaluation/TracedVariables.java +0 -199
  442. data/lib/proguard4.7/src/proguard/evaluation/Variables.java +0 -347
  443. data/lib/proguard4.7/src/proguard/evaluation/value/Category1Value.java +0 -41
  444. data/lib/proguard4.7/src/proguard/evaluation/value/Category2Value.java +0 -41
  445. data/lib/proguard4.7/src/proguard/evaluation/value/ComparisonValue.java +0 -69
  446. data/lib/proguard4.7/src/proguard/evaluation/value/CompositeDoubleValue.java +0 -81
  447. data/lib/proguard4.7/src/proguard/evaluation/value/CompositeFloatValue.java +0 -81
  448. data/lib/proguard4.7/src/proguard/evaluation/value/CompositeIntegerValue.java +0 -87
  449. data/lib/proguard4.7/src/proguard/evaluation/value/CompositeLongValue.java +0 -87
  450. data/lib/proguard4.7/src/proguard/evaluation/value/ConvertedByteValue.java +0 -64
  451. data/lib/proguard4.7/src/proguard/evaluation/value/ConvertedCharacterValue.java +0 -64
  452. data/lib/proguard4.7/src/proguard/evaluation/value/ConvertedDoubleValue.java +0 -64
  453. data/lib/proguard4.7/src/proguard/evaluation/value/ConvertedFloatValue.java +0 -64
  454. data/lib/proguard4.7/src/proguard/evaluation/value/ConvertedIntegerValue.java +0 -64
  455. data/lib/proguard4.7/src/proguard/evaluation/value/ConvertedLongValue.java +0 -64
  456. data/lib/proguard4.7/src/proguard/evaluation/value/ConvertedShortValue.java +0 -64
  457. data/lib/proguard4.7/src/proguard/evaluation/value/DoubleValue.java +0 -359
  458. data/lib/proguard4.7/src/proguard/evaluation/value/FloatValue.java +0 -359
  459. data/lib/proguard4.7/src/proguard/evaluation/value/IdentifiedDoubleValue.java +0 -67
  460. data/lib/proguard4.7/src/proguard/evaluation/value/IdentifiedFloatValue.java +0 -67
  461. data/lib/proguard4.7/src/proguard/evaluation/value/IdentifiedIntegerValue.java +0 -67
  462. data/lib/proguard4.7/src/proguard/evaluation/value/IdentifiedLongValue.java +0 -67
  463. data/lib/proguard4.7/src/proguard/evaluation/value/IdentifiedReferenceValue.java +0 -102
  464. data/lib/proguard4.7/src/proguard/evaluation/value/IdentifiedValueFactory.java +0 -75
  465. data/lib/proguard4.7/src/proguard/evaluation/value/InstructionOffsetValue.java +0 -307
  466. data/lib/proguard4.7/src/proguard/evaluation/value/IntegerValue.java +0 -1002
  467. data/lib/proguard4.7/src/proguard/evaluation/value/LongValue.java +0 -554
  468. data/lib/proguard4.7/src/proguard/evaluation/value/NegatedDoubleValue.java +0 -71
  469. data/lib/proguard4.7/src/proguard/evaluation/value/NegatedFloatValue.java +0 -71
  470. data/lib/proguard4.7/src/proguard/evaluation/value/NegatedIntegerValue.java +0 -71
  471. data/lib/proguard4.7/src/proguard/evaluation/value/NegatedLongValue.java +0 -71
  472. data/lib/proguard4.7/src/proguard/evaluation/value/ParticularDoubleValue.java +0 -216
  473. data/lib/proguard4.7/src/proguard/evaluation/value/ParticularFloatValue.java +0 -216
  474. data/lib/proguard4.7/src/proguard/evaluation/value/ParticularIntegerValue.java +0 -383
  475. data/lib/proguard4.7/src/proguard/evaluation/value/ParticularLongValue.java +0 -271
  476. data/lib/proguard4.7/src/proguard/evaluation/value/ReferenceValue.java +0 -540
  477. data/lib/proguard4.7/src/proguard/evaluation/value/SpecificDoubleValue.java +0 -186
  478. data/lib/proguard4.7/src/proguard/evaluation/value/SpecificFloatValue.java +0 -186
  479. data/lib/proguard4.7/src/proguard/evaluation/value/SpecificIntegerValue.java +0 -354
  480. data/lib/proguard4.7/src/proguard/evaluation/value/SpecificLongValue.java +0 -259
  481. data/lib/proguard4.7/src/proguard/evaluation/value/SpecificValueFactory.java +0 -97
  482. data/lib/proguard4.7/src/proguard/evaluation/value/TopValue.java +0 -79
  483. data/lib/proguard4.7/src/proguard/evaluation/value/UnknownDoubleValue.java +0 -125
  484. data/lib/proguard4.7/src/proguard/evaluation/value/UnknownFloatValue.java +0 -125
  485. data/lib/proguard4.7/src/proguard/evaluation/value/UnknownIntegerValue.java +0 -216
  486. data/lib/proguard4.7/src/proguard/evaluation/value/UnknownLongValue.java +0 -160
  487. data/lib/proguard4.7/src/proguard/evaluation/value/Value.java +0 -169
  488. data/lib/proguard4.7/src/proguard/evaluation/value/ValueFactory.java +0 -193
  489. data/lib/proguard4.7/src/proguard/evaluation/value/package.html +0 -3
  490. data/lib/proguard4.7/src/proguard/gui/ClassPathPanel.java +0 -441
  491. data/lib/proguard4.7/src/proguard/gui/ClassSpecificationDialog.java +0 -546
  492. data/lib/proguard4.7/src/proguard/gui/ClassSpecificationsPanel.java +0 -231
  493. data/lib/proguard4.7/src/proguard/gui/ExtensionFileFilter.java +0 -78
  494. data/lib/proguard4.7/src/proguard/gui/FilterBuilder.java +0 -208
  495. data/lib/proguard4.7/src/proguard/gui/FilterDialog.java +0 -320
  496. data/lib/proguard4.7/src/proguard/gui/GUIResources.java +0 -56
  497. data/lib/proguard4.7/src/proguard/gui/GUIResources.properties +0 -643
  498. data/lib/proguard4.7/src/proguard/gui/KeepSpecificationsPanel.java +0 -81
  499. data/lib/proguard4.7/src/proguard/gui/ListPanel.java +0 -341
  500. data/lib/proguard4.7/src/proguard/gui/MANIFEST.MF +0 -3
  501. data/lib/proguard4.7/src/proguard/gui/MemberSpecificationDialog.java +0 -509
  502. data/lib/proguard4.7/src/proguard/gui/MemberSpecificationsPanel.java +0 -304
  503. data/lib/proguard4.7/src/proguard/gui/MessageDialogRunnable.java +0 -90
  504. data/lib/proguard4.7/src/proguard/gui/OptimizationsDialog.java +0 -251
  505. data/lib/proguard4.7/src/proguard/gui/ProGuardGUI.java +0 -1777
  506. data/lib/proguard4.7/src/proguard/gui/ProGuardRunnable.java +0 -154
  507. data/lib/proguard4.7/src/proguard/gui/ReTraceRunnable.java +0 -149
  508. data/lib/proguard4.7/src/proguard/gui/SwingUtil.java +0 -82
  509. data/lib/proguard4.7/src/proguard/gui/TabbedPane.java +0 -229
  510. data/lib/proguard4.7/src/proguard/gui/TextAreaOutputStream.java +0 -81
  511. data/lib/proguard4.7/src/proguard/gui/arrow.gif +0 -0
  512. data/lib/proguard4.7/src/proguard/gui/boilerplate.pro +0 -410
  513. data/lib/proguard4.7/src/proguard/gui/default.pro +0 -318
  514. data/lib/proguard4.7/src/proguard/gui/package.html +0 -3
  515. data/lib/proguard4.7/src/proguard/gui/splash/BufferedSprite.java +0 -145
  516. data/lib/proguard4.7/src/proguard/gui/splash/CircleSprite.java +0 -74
  517. data/lib/proguard4.7/src/proguard/gui/splash/ClipSprite.java +0 -85
  518. data/lib/proguard4.7/src/proguard/gui/splash/ColorSprite.java +0 -65
  519. data/lib/proguard4.7/src/proguard/gui/splash/CompositeSprite.java +0 -56
  520. data/lib/proguard4.7/src/proguard/gui/splash/ConstantColor.java +0 -51
  521. data/lib/proguard4.7/src/proguard/gui/splash/ConstantDouble.java +0 -49
  522. data/lib/proguard4.7/src/proguard/gui/splash/ConstantFont.java +0 -46
  523. data/lib/proguard4.7/src/proguard/gui/splash/ConstantInt.java +0 -49
  524. data/lib/proguard4.7/src/proguard/gui/splash/ConstantString.java +0 -49
  525. data/lib/proguard4.7/src/proguard/gui/splash/ConstantTiming.java +0 -57
  526. data/lib/proguard4.7/src/proguard/gui/splash/FontSprite.java +0 -65
  527. data/lib/proguard4.7/src/proguard/gui/splash/ImageSprite.java +0 -76
  528. data/lib/proguard4.7/src/proguard/gui/splash/LinearColor.java +0 -72
  529. data/lib/proguard4.7/src/proguard/gui/splash/LinearDouble.java +0 -55
  530. data/lib/proguard4.7/src/proguard/gui/splash/LinearInt.java +0 -55
  531. data/lib/proguard4.7/src/proguard/gui/splash/LinearTiming.java +0 -55
  532. data/lib/proguard4.7/src/proguard/gui/splash/OverrideGraphics2D.java +0 -598
  533. data/lib/proguard4.7/src/proguard/gui/splash/RectangleSprite.java +0 -114
  534. data/lib/proguard4.7/src/proguard/gui/splash/SawToothTiming.java +0 -53
  535. data/lib/proguard4.7/src/proguard/gui/splash/ShadowedSprite.java +0 -109
  536. data/lib/proguard4.7/src/proguard/gui/splash/SineTiming.java +0 -53
  537. data/lib/proguard4.7/src/proguard/gui/splash/SmoothTiming.java +0 -66
  538. data/lib/proguard4.7/src/proguard/gui/splash/SplashPanel.java +0 -235
  539. data/lib/proguard4.7/src/proguard/gui/splash/Sprite.java +0 -41
  540. data/lib/proguard4.7/src/proguard/gui/splash/TextSprite.java +0 -89
  541. data/lib/proguard4.7/src/proguard/gui/splash/TimeSwitchSprite.java +0 -75
  542. data/lib/proguard4.7/src/proguard/gui/splash/Timing.java +0 -34
  543. data/lib/proguard4.7/src/proguard/gui/splash/TypeWriterString.java +0 -71
  544. data/lib/proguard4.7/src/proguard/gui/splash/VariableColor.java +0 -36
  545. data/lib/proguard4.7/src/proguard/gui/splash/VariableDouble.java +0 -34
  546. data/lib/proguard4.7/src/proguard/gui/splash/VariableFont.java +0 -36
  547. data/lib/proguard4.7/src/proguard/gui/splash/VariableInt.java +0 -34
  548. data/lib/proguard4.7/src/proguard/gui/splash/VariableSizeFont.java +0 -65
  549. data/lib/proguard4.7/src/proguard/gui/splash/VariableString.java +0 -34
  550. data/lib/proguard4.7/src/proguard/gui/splash/package.html +0 -4
  551. data/lib/proguard4.7/src/proguard/gui/vtitle.png +0 -0
  552. data/lib/proguard4.7/src/proguard/io/CascadingDataEntryWriter.java +0 -94
  553. data/lib/proguard4.7/src/proguard/io/ClassFilter.java +0 -59
  554. data/lib/proguard4.7/src/proguard/io/ClassReader.java +0 -115
  555. data/lib/proguard4.7/src/proguard/io/ClassRewriter.java +0 -80
  556. data/lib/proguard4.7/src/proguard/io/DataEntry.java +0 -62
  557. data/lib/proguard4.7/src/proguard/io/DataEntryClassWriter.java +0 -85
  558. data/lib/proguard4.7/src/proguard/io/DataEntryCopier.java +0 -247
  559. data/lib/proguard4.7/src/proguard/io/DataEntryDirectoryFilter.java +0 -40
  560. data/lib/proguard4.7/src/proguard/io/DataEntryFilter.java +0 -38
  561. data/lib/proguard4.7/src/proguard/io/DataEntryNameFilter.java +0 -54
  562. data/lib/proguard4.7/src/proguard/io/DataEntryObfuscator.java +0 -150
  563. data/lib/proguard4.7/src/proguard/io/DataEntryParentFilter.java +0 -51
  564. data/lib/proguard4.7/src/proguard/io/DataEntryPump.java +0 -43
  565. data/lib/proguard4.7/src/proguard/io/DataEntryReader.java +0 -38
  566. data/lib/proguard4.7/src/proguard/io/DataEntryRenamer.java +0 -104
  567. data/lib/proguard4.7/src/proguard/io/DataEntryRewriter.java +0 -148
  568. data/lib/proguard4.7/src/proguard/io/DataEntryWriter.java +0 -73
  569. data/lib/proguard4.7/src/proguard/io/DirectoryFilter.java +0 -58
  570. data/lib/proguard4.7/src/proguard/io/DirectoryPump.java +0 -78
  571. data/lib/proguard4.7/src/proguard/io/DirectoryWriter.java +0 -165
  572. data/lib/proguard4.7/src/proguard/io/FileDataEntry.java +0 -96
  573. data/lib/proguard4.7/src/proguard/io/FilteredDataEntryReader.java +0 -90
  574. data/lib/proguard4.7/src/proguard/io/FilteredDataEntryWriter.java +0 -125
  575. data/lib/proguard4.7/src/proguard/io/Finisher.java +0 -37
  576. data/lib/proguard4.7/src/proguard/io/JarReader.java +0 -75
  577. data/lib/proguard4.7/src/proguard/io/JarWriter.java +0 -235
  578. data/lib/proguard4.7/src/proguard/io/ManifestRewriter.java +0 -216
  579. data/lib/proguard4.7/src/proguard/io/NameFilter.java +0 -83
  580. data/lib/proguard4.7/src/proguard/io/ParentDataEntryWriter.java +0 -75
  581. data/lib/proguard4.7/src/proguard/io/RenamedDataEntry.java +0 -83
  582. data/lib/proguard4.7/src/proguard/io/ZipDataEntry.java +0 -98
  583. data/lib/proguard4.7/src/proguard/io/package.html +0 -4
  584. data/lib/proguard4.7/src/proguard/obfuscate/AttributeShrinker.java +0 -120
  585. data/lib/proguard4.7/src/proguard/obfuscate/AttributeUsageMarker.java +0 -71
  586. data/lib/proguard4.7/src/proguard/obfuscate/ClassObfuscator.java +0 -533
  587. data/lib/proguard4.7/src/proguard/obfuscate/ClassRenamer.java +0 -109
  588. data/lib/proguard4.7/src/proguard/obfuscate/DictionaryNameFactory.java +0 -189
  589. data/lib/proguard4.7/src/proguard/obfuscate/MapCleaner.java +0 -57
  590. data/lib/proguard4.7/src/proguard/obfuscate/MappingKeeper.java +0 -177
  591. data/lib/proguard4.7/src/proguard/obfuscate/MappingPrinter.java +0 -147
  592. data/lib/proguard4.7/src/proguard/obfuscate/MappingProcessor.java +0 -79
  593. data/lib/proguard4.7/src/proguard/obfuscate/MappingReader.java +0 -199
  594. data/lib/proguard4.7/src/proguard/obfuscate/MemberNameCleaner.java +0 -60
  595. data/lib/proguard4.7/src/proguard/obfuscate/MemberNameCollector.java +0 -106
  596. data/lib/proguard4.7/src/proguard/obfuscate/MemberNameConflictFixer.java +0 -159
  597. data/lib/proguard4.7/src/proguard/obfuscate/MemberNameFilter.java +0 -120
  598. data/lib/proguard4.7/src/proguard/obfuscate/MemberObfuscator.java +0 -230
  599. data/lib/proguard4.7/src/proguard/obfuscate/MemberSpecialNameFilter.java +0 -101
  600. data/lib/proguard4.7/src/proguard/obfuscate/MultiMappingProcessor.java +0 -96
  601. data/lib/proguard4.7/src/proguard/obfuscate/NameFactory.java +0 -34
  602. data/lib/proguard4.7/src/proguard/obfuscate/NameFactoryResetter.java +0 -59
  603. data/lib/proguard4.7/src/proguard/obfuscate/NameMarker.java +0 -166
  604. data/lib/proguard4.7/src/proguard/obfuscate/NumericNameFactory.java +0 -49
  605. data/lib/proguard4.7/src/proguard/obfuscate/Obfuscator.java +0 -445
  606. data/lib/proguard4.7/src/proguard/obfuscate/ParameterNameMarker.java +0 -128
  607. data/lib/proguard4.7/src/proguard/obfuscate/SimpleNameFactory.java +0 -156
  608. data/lib/proguard4.7/src/proguard/obfuscate/SourceFileRenamer.java +0 -84
  609. data/lib/proguard4.7/src/proguard/obfuscate/SpecialNameFactory.java +0 -83
  610. data/lib/proguard4.7/src/proguard/obfuscate/package.html +0 -3
  611. data/lib/proguard4.7/src/proguard/optimize/BootstrapMethodArgumentShrinker.java +0 -103
  612. data/lib/proguard4.7/src/proguard/optimize/ChangedCodePrinter.java +0 -297
  613. data/lib/proguard4.7/src/proguard/optimize/ConstantMemberFilter.java +0 -77
  614. data/lib/proguard4.7/src/proguard/optimize/ConstantParameterFilter.java +0 -79
  615. data/lib/proguard4.7/src/proguard/optimize/DuplicateInitializerFixer.java +0 -215
  616. data/lib/proguard4.7/src/proguard/optimize/DuplicateInitializerInvocationFixer.java +0 -161
  617. data/lib/proguard4.7/src/proguard/optimize/KeepMarker.java +0 -95
  618. data/lib/proguard4.7/src/proguard/optimize/KeptClassFilter.java +0 -69
  619. data/lib/proguard4.7/src/proguard/optimize/KeptMemberFilter.java +0 -88
  620. data/lib/proguard4.7/src/proguard/optimize/MemberDescriptorSpecializer.java +0 -138
  621. data/lib/proguard4.7/src/proguard/optimize/MethodDescriptorShrinker.java +0 -317
  622. data/lib/proguard4.7/src/proguard/optimize/MethodStaticizer.java +0 -87
  623. data/lib/proguard4.7/src/proguard/optimize/OptimizationInfoMemberFilter.java +0 -94
  624. data/lib/proguard4.7/src/proguard/optimize/Optimizer.java +0 -963
  625. data/lib/proguard4.7/src/proguard/optimize/ParameterShrinker.java +0 -146
  626. data/lib/proguard4.7/src/proguard/optimize/TailRecursionSimplifier.java +0 -356
  627. data/lib/proguard4.7/src/proguard/optimize/WriteOnlyFieldFilter.java +0 -65
  628. data/lib/proguard4.7/src/proguard/optimize/evaluation/EvaluationShrinker.java +0 -2082
  629. data/lib/proguard4.7/src/proguard/optimize/evaluation/EvaluationSimplifier.java +0 -973
  630. data/lib/proguard4.7/src/proguard/optimize/evaluation/LivenessAnalyzer.java +0 -526
  631. data/lib/proguard4.7/src/proguard/optimize/evaluation/LoadingInvocationUnit.java +0 -195
  632. data/lib/proguard4.7/src/proguard/optimize/evaluation/PartialEvaluator.java +0 -1282
  633. data/lib/proguard4.7/src/proguard/optimize/evaluation/StoringInvocationUnit.java +0 -207
  634. data/lib/proguard4.7/src/proguard/optimize/evaluation/TracedBranchUnit.java +0 -59
  635. data/lib/proguard4.7/src/proguard/optimize/evaluation/VariableOptimizer.java +0 -345
  636. data/lib/proguard4.7/src/proguard/optimize/evaluation/package.html +0 -4
  637. data/lib/proguard4.7/src/proguard/optimize/info/AccessMethodMarker.java +0 -202
  638. data/lib/proguard4.7/src/proguard/optimize/info/BackwardBranchMarker.java +0 -90
  639. data/lib/proguard4.7/src/proguard/optimize/info/CatchExceptionMarker.java +0 -69
  640. data/lib/proguard4.7/src/proguard/optimize/info/CaughtClassFilter.java +0 -63
  641. data/lib/proguard4.7/src/proguard/optimize/info/CaughtClassMarker.java +0 -64
  642. data/lib/proguard4.7/src/proguard/optimize/info/ClassOptimizationInfo.java +0 -165
  643. data/lib/proguard4.7/src/proguard/optimize/info/ClassOptimizationInfoSetter.java +0 -47
  644. data/lib/proguard4.7/src/proguard/optimize/info/DotClassFilter.java +0 -63
  645. data/lib/proguard4.7/src/proguard/optimize/info/DotClassMarker.java +0 -96
  646. data/lib/proguard4.7/src/proguard/optimize/info/ExceptionInstructionChecker.java +0 -193
  647. data/lib/proguard4.7/src/proguard/optimize/info/FieldOptimizationInfo.java +0 -204
  648. data/lib/proguard4.7/src/proguard/optimize/info/InstanceofClassFilter.java +0 -63
  649. data/lib/proguard4.7/src/proguard/optimize/info/InstanceofClassMarker.java +0 -93
  650. data/lib/proguard4.7/src/proguard/optimize/info/InstantiationClassFilter.java +0 -62
  651. data/lib/proguard4.7/src/proguard/optimize/info/InstantiationClassMarker.java +0 -93
  652. data/lib/proguard4.7/src/proguard/optimize/info/MemberOptimizationInfoSetter.java +0 -59
  653. data/lib/proguard4.7/src/proguard/optimize/info/MethodInvocationMarker.java +0 -107
  654. data/lib/proguard4.7/src/proguard/optimize/info/MethodOptimizationInfo.java +0 -302
  655. data/lib/proguard4.7/src/proguard/optimize/info/NoSideEffectMethodMarker.java +0 -91
  656. data/lib/proguard4.7/src/proguard/optimize/info/NonPrivateMemberMarker.java +0 -171
  657. data/lib/proguard4.7/src/proguard/optimize/info/PackageVisibleMemberContainingClassMarker.java +0 -85
  658. data/lib/proguard4.7/src/proguard/optimize/info/PackageVisibleMemberInvokingClassMarker.java +0 -129
  659. data/lib/proguard4.7/src/proguard/optimize/info/ParameterUsageMarker.java +0 -285
  660. data/lib/proguard4.7/src/proguard/optimize/info/ReadWriteFieldMarker.java +0 -163
  661. data/lib/proguard4.7/src/proguard/optimize/info/SideEffectInstructionChecker.java +0 -245
  662. data/lib/proguard4.7/src/proguard/optimize/info/SideEffectMethodMarker.java +0 -175
  663. data/lib/proguard4.7/src/proguard/optimize/info/StaticInitializerContainingClassFilter.java +0 -62
  664. data/lib/proguard4.7/src/proguard/optimize/info/StaticInitializerContainingClassMarker.java +0 -65
  665. data/lib/proguard4.7/src/proguard/optimize/info/SuperInvocationMarker.java +0 -93
  666. data/lib/proguard4.7/src/proguard/optimize/info/VariableUsageMarker.java +0 -96
  667. data/lib/proguard4.7/src/proguard/optimize/info/package.html +0 -4
  668. data/lib/proguard4.7/src/proguard/optimize/package.html +0 -4
  669. data/lib/proguard4.7/src/proguard/optimize/peephole/BranchTargetFinder.java +0 -687
  670. data/lib/proguard4.7/src/proguard/optimize/peephole/ClassFinalizer.java +0 -84
  671. data/lib/proguard4.7/src/proguard/optimize/peephole/ClassMerger.java +0 -576
  672. data/lib/proguard4.7/src/proguard/optimize/peephole/GotoCommonCodeReplacer.java +0 -266
  673. data/lib/proguard4.7/src/proguard/optimize/peephole/GotoGotoReplacer.java +0 -115
  674. data/lib/proguard4.7/src/proguard/optimize/peephole/GotoReturnReplacer.java +0 -115
  675. data/lib/proguard4.7/src/proguard/optimize/peephole/HorizontalClassMerger.java +0 -90
  676. data/lib/proguard4.7/src/proguard/optimize/peephole/InstructionSequenceConstants.java +0 -4424
  677. data/lib/proguard4.7/src/proguard/optimize/peephole/InstructionSequenceReplacer.java +0 -420
  678. data/lib/proguard4.7/src/proguard/optimize/peephole/InstructionSequencesReplacer.java +0 -138
  679. data/lib/proguard4.7/src/proguard/optimize/peephole/MemberPrivatizer.java +0 -103
  680. data/lib/proguard4.7/src/proguard/optimize/peephole/MethodFinalizer.java +0 -93
  681. data/lib/proguard4.7/src/proguard/optimize/peephole/MethodInliner.java +0 -597
  682. data/lib/proguard4.7/src/proguard/optimize/peephole/NopRemover.java +0 -89
  683. data/lib/proguard4.7/src/proguard/optimize/peephole/PeepholeOptimizer.java +0 -103
  684. data/lib/proguard4.7/src/proguard/optimize/peephole/ReachableCodeMarker.java +0 -262
  685. data/lib/proguard4.7/src/proguard/optimize/peephole/RetargetedInnerClassAttributeRemover.java +0 -170
  686. data/lib/proguard4.7/src/proguard/optimize/peephole/TargetClassChanger.java +0 -455
  687. data/lib/proguard4.7/src/proguard/optimize/peephole/UnreachableCodeRemover.java +0 -143
  688. data/lib/proguard4.7/src/proguard/optimize/peephole/UnreachableExceptionRemover.java +0 -163
  689. data/lib/proguard4.7/src/proguard/optimize/peephole/VariableShrinker.java +0 -129
  690. data/lib/proguard4.7/src/proguard/optimize/peephole/VerticalClassMerger.java +0 -88
  691. data/lib/proguard4.7/src/proguard/optimize/peephole/package.html +0 -3
  692. data/lib/proguard4.7/src/proguard/package.html +0 -5
  693. data/lib/proguard4.7/src/proguard/preverify/CodePreverifier.java +0 -611
  694. data/lib/proguard4.7/src/proguard/preverify/CodeSubroutineInliner.java +0 -406
  695. data/lib/proguard4.7/src/proguard/preverify/Preverifier.java +0 -73
  696. data/lib/proguard4.7/src/proguard/preverify/SubroutineInliner.java +0 -73
  697. data/lib/proguard4.7/src/proguard/retrace/MANIFEST.MF +0 -3
  698. data/lib/proguard4.7/src/proguard/retrace/ReTrace.java +0 -749
  699. data/lib/proguard4.7/src/proguard/retrace/package.html +0 -4
  700. data/lib/proguard4.7/src/proguard/shrink/AnnotationUsageMarker.java +0 -333
  701. data/lib/proguard4.7/src/proguard/shrink/ClassShrinker.java +0 -458
  702. data/lib/proguard4.7/src/proguard/shrink/InnerUsageMarker.java +0 -174
  703. data/lib/proguard4.7/src/proguard/shrink/InterfaceUsageMarker.java +0 -152
  704. data/lib/proguard4.7/src/proguard/shrink/ShortestUsageMark.java +0 -183
  705. data/lib/proguard4.7/src/proguard/shrink/ShortestUsageMarker.java +0 -277
  706. data/lib/proguard4.7/src/proguard/shrink/ShortestUsagePrinter.java +0 -210
  707. data/lib/proguard4.7/src/proguard/shrink/Shrinker.java +0 -181
  708. data/lib/proguard4.7/src/proguard/shrink/UsageMarker.java +0 -1036
  709. data/lib/proguard4.7/src/proguard/shrink/UsagePrinter.java +0 -177
  710. data/lib/proguard4.7/src/proguard/shrink/UsedClassFilter.java +0 -74
  711. data/lib/proguard4.7/src/proguard/shrink/UsedMemberFilter.java +0 -93
  712. data/lib/proguard4.7/src/proguard/shrink/package.html +0 -3
  713. data/lib/proguard4.7/src/proguard/util/AndMatcher.java +0 -49
  714. data/lib/proguard4.7/src/proguard/util/ClassNameParser.java +0 -216
  715. data/lib/proguard4.7/src/proguard/util/ConstantMatcher.java +0 -48
  716. data/lib/proguard4.7/src/proguard/util/EmptyStringMatcher.java +0 -36
  717. data/lib/proguard4.7/src/proguard/util/ExtensionMatcher.java +0 -63
  718. data/lib/proguard4.7/src/proguard/util/FileNameParser.java +0 -121
  719. data/lib/proguard4.7/src/proguard/util/FixedStringMatcher.java +0 -56
  720. data/lib/proguard4.7/src/proguard/util/ListMatcher.java +0 -69
  721. data/lib/proguard4.7/src/proguard/util/ListParser.java +0 -137
  722. data/lib/proguard4.7/src/proguard/util/ListUtil.java +0 -180
  723. data/lib/proguard4.7/src/proguard/util/NameParser.java +0 -106
  724. data/lib/proguard4.7/src/proguard/util/NotMatcher.java +0 -46
  725. data/lib/proguard4.7/src/proguard/util/OrMatcher.java +0 -49
  726. data/lib/proguard4.7/src/proguard/util/SettableMatcher.java +0 -46
  727. data/lib/proguard4.7/src/proguard/util/StringMatcher.java +0 -38
  728. data/lib/proguard4.7/src/proguard/util/StringParser.java +0 -35
  729. data/lib/proguard4.7/src/proguard/util/VariableStringMatcher.java +0 -126
  730. data/lib/proguard4.7/src/proguard/util/package.html +0 -3
  731. data/lib/proguard4.7/src/proguard/wtk/ProGuardObfuscator.java +0 -141
  732. data/lib/proguard4.7/src/proguard/wtk/default.pro +0 -114
  733. data/lib/proguard4.7/src/proguard/wtk/package.html +0 -3
@@ -1,1777 +0,0 @@
1
- /*
2
- * ProGuard -- shrinking, optimization, obfuscation, and preverification
3
- * of Java bytecode.
4
- *
5
- * Copyright (c) 2002-2011 Eric Lafortune (eric@graphics.cornell.edu)
6
- *
7
- * This program is free software; you can redistribute it and/or modify it
8
- * under the terms of the GNU General Public License as published by the Free
9
- * Software Foundation; either version 2 of the License, or (at your option)
10
- * any later version.
11
- *
12
- * This program is distributed in the hope that it will be useful, but WITHOUT
13
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
14
- * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for
15
- * more details.
16
- *
17
- * You should have received a copy of the GNU General Public License along
18
- * with this program; if not, write to the Free Software Foundation, Inc.,
19
- * 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
20
- */
21
- package proguard.gui;
22
-
23
- import proguard.*;
24
- import proguard.classfile.util.ClassUtil;
25
- import proguard.gui.splash.*;
26
- import proguard.util.ListUtil;
27
-
28
- import javax.swing.*;
29
- import javax.swing.border.*;
30
- import java.awt.*;
31
- import java.awt.event.*;
32
- import java.io.*;
33
- import java.net.URL;
34
- import java.util.*;
35
- import java.util.List;
36
-
37
-
38
- /**
39
- * GUI for configuring and executing ProGuard and ReTrace.
40
- *
41
- * @author Eric Lafortune
42
- */
43
- public class ProGuardGUI extends JFrame
44
- {
45
- private static final String NO_SPLASH_OPTION = "-nosplash";
46
-
47
- private static final String TITLE_IMAGE_FILE = "vtitle.png";
48
- private static final String BOILERPLATE_CONFIGURATION = "boilerplate.pro";
49
- private static final String DEFAULT_CONFIGURATION = "default.pro";
50
-
51
- private static final String OPTIMIZATIONS_DEFAULT = "*";
52
- private static final String KEEP_ATTRIBUTE_DEFAULT = "Exceptions,InnerClasses,Signature,Deprecated,SourceFile,LineNumberTable,LocalVariable*Table,*Annotation*,Synthetic,EnclosingMethod";
53
- private static final String SOURCE_FILE_ATTRIBUTE_DEFAULT = "SourceFile";
54
- private static final String ADAPT_RESOURCE_FILE_NAMES_DEFAULT = "**.properties";
55
- private static final String ADAPT_RESOURCE_FILE_CONTENTS_DEFAULT = "**.properties,META-INF/MANIFEST.MF";
56
-
57
- private static final Border BORDER = BorderFactory.createEtchedBorder(EtchedBorder.RAISED);
58
-
59
- static boolean systemOutRedirected;
60
-
61
- private final JFileChooser configurationChooser = new JFileChooser("");
62
- private final JFileChooser fileChooser = new JFileChooser("");
63
-
64
- private final SplashPanel splashPanel;
65
-
66
- private final ClassPathPanel programPanel = new ClassPathPanel(this, true);
67
- private final ClassPathPanel libraryPanel = new ClassPathPanel(this, false);
68
-
69
- private KeepClassSpecification[] boilerplateKeep;
70
- private final JCheckBox[] boilerplateKeepCheckBoxes;
71
- private final JTextField[] boilerplateKeepTextFields;
72
-
73
- private final KeepSpecificationsPanel additionalKeepPanel = new KeepSpecificationsPanel(this, true, false, false, false, false);
74
-
75
- private KeepClassSpecification[] boilerplateKeepNames;
76
- private final JCheckBox[] boilerplateKeepNamesCheckBoxes;
77
- private final JTextField[] boilerplateKeepNamesTextFields;
78
-
79
- private final KeepSpecificationsPanel additionalKeepNamesPanel = new KeepSpecificationsPanel(this, true, false, true, false, false);
80
-
81
- private ClassSpecification[] boilerplateNoSideEffectMethods;
82
- private final JCheckBox[] boilerplateNoSideEffectMethodCheckBoxes;
83
-
84
- private final ClassSpecificationsPanel additionalNoSideEffectsPanel = new ClassSpecificationsPanel(this, false);
85
-
86
- private final ClassSpecificationsPanel whyAreYouKeepingPanel = new ClassSpecificationsPanel(this, false);
87
-
88
- private final JCheckBox shrinkCheckBox = new JCheckBox(msg("shrink"));
89
- private final JCheckBox printUsageCheckBox = new JCheckBox(msg("printUsage"));
90
-
91
- private final JCheckBox optimizeCheckBox = new JCheckBox(msg("optimize"));
92
- private final JCheckBox allowAccessModificationCheckBox = new JCheckBox(msg("allowAccessModification"));
93
- private final JCheckBox mergeInterfacesAggressivelyCheckBox = new JCheckBox(msg("mergeInterfacesAggressively"));
94
- private final JLabel optimizationsLabel = new JLabel(msg("optimizations"));
95
- private final JLabel optimizationPassesLabel = new JLabel(msg("optimizationPasses"));
96
-
97
- private final JSpinner optimizationPassesSpinner = new JSpinner(new SpinnerNumberModel(1, 1, 9, 1));
98
-
99
- private final JCheckBox obfuscateCheckBox = new JCheckBox(msg("obfuscate"));
100
- private final JCheckBox printMappingCheckBox = new JCheckBox(msg("printMapping"));
101
- private final JCheckBox applyMappingCheckBox = new JCheckBox(msg("applyMapping"));
102
- private final JCheckBox obfuscationDictionaryCheckBox = new JCheckBox(msg("obfuscationDictionary"));
103
- private final JCheckBox classObfuscationDictionaryCheckBox = new JCheckBox(msg("classObfuscationDictionary"));
104
- private final JCheckBox packageObfuscationDictionaryCheckBox = new JCheckBox(msg("packageObfuscationDictionary"));
105
- private final JCheckBox overloadAggressivelyCheckBox = new JCheckBox(msg("overloadAggressively"));
106
- private final JCheckBox useUniqueClassMemberNamesCheckBox = new JCheckBox(msg("useUniqueClassMemberNames"));
107
- private final JCheckBox useMixedCaseClassNamesCheckBox = new JCheckBox(msg("useMixedCaseClassNames"));
108
- private final JCheckBox keepPackageNamesCheckBox = new JCheckBox(msg("keepPackageNames"));
109
- private final JCheckBox flattenPackageHierarchyCheckBox = new JCheckBox(msg("flattenPackageHierarchy"));
110
- private final JCheckBox repackageClassesCheckBox = new JCheckBox(msg("repackageClasses"));
111
- private final JCheckBox keepAttributesCheckBox = new JCheckBox(msg("keepAttributes"));
112
- private final JCheckBox keepParameterNamesCheckBox = new JCheckBox(msg("keepParameterNames"));
113
- private final JCheckBox newSourceFileAttributeCheckBox = new JCheckBox(msg("renameSourceFileAttribute"));
114
- private final JCheckBox adaptClassStringsCheckBox = new JCheckBox(msg("adaptClassStrings"));
115
- private final JCheckBox adaptResourceFileNamesCheckBox = new JCheckBox(msg("adaptResourceFileNames"));
116
- private final JCheckBox adaptResourceFileContentsCheckBox = new JCheckBox(msg("adaptResourceFileContents"));
117
-
118
- private final JCheckBox preverifyCheckBox = new JCheckBox(msg("preverify"));
119
- private final JCheckBox microEditionCheckBox = new JCheckBox(msg("microEdition"));
120
- private final JCheckBox targetCheckBox = new JCheckBox(msg("target"));
121
-
122
- private final JComboBox targetComboBox = new JComboBox(ListUtil.commaSeparatedList(msg("targets")).toArray());
123
-
124
- private final JCheckBox verboseCheckBox = new JCheckBox(msg("verbose"));
125
- private final JCheckBox noteCheckBox = new JCheckBox(msg("note"));
126
- private final JCheckBox warnCheckBox = new JCheckBox(msg("warn"));
127
- private final JCheckBox ignoreWarningsCheckBox = new JCheckBox(msg("ignoreWarnings"));
128
- private final JCheckBox skipNonPublicLibraryClassesCheckBox = new JCheckBox(msg("skipNonPublicLibraryClasses"));
129
- private final JCheckBox skipNonPublicLibraryClassMembersCheckBox = new JCheckBox(msg("skipNonPublicLibraryClassMembers"));
130
- private final JCheckBox keepDirectoriesCheckBox = new JCheckBox(msg("keepDirectories"));
131
- private final JCheckBox forceProcessingCheckBox = new JCheckBox(msg("forceProcessing"));
132
- private final JCheckBox printSeedsCheckBox = new JCheckBox(msg("printSeeds"));
133
- private final JCheckBox printConfigurationCheckBox = new JCheckBox(msg("printConfiguration"));
134
- private final JCheckBox dumpCheckBox = new JCheckBox(msg("dump"));
135
-
136
- private final JTextField printUsageTextField = new JTextField(40);
137
- private final JTextField optimizationsTextField = new JTextField(40);
138
- private final JTextField printMappingTextField = new JTextField(40);
139
- private final JTextField applyMappingTextField = new JTextField(40);
140
- private final JTextField obfuscationDictionaryTextField = new JTextField(40);
141
- private final JTextField classObfuscationDictionaryTextField = new JTextField(40);
142
- private final JTextField packageObfuscationDictionaryTextField = new JTextField(40);
143
- private final JTextField keepPackageNamesTextField = new JTextField(40);
144
- private final JTextField flattenPackageHierarchyTextField = new JTextField(40);
145
- private final JTextField repackageClassesTextField = new JTextField(40);
146
- private final JTextField keepAttributesTextField = new JTextField(40);
147
- private final JTextField newSourceFileAttributeTextField = new JTextField(40);
148
- private final JTextField adaptClassStringsTextField = new JTextField(40);
149
- private final JTextField adaptResourceFileNamesTextField = new JTextField(40);
150
- private final JTextField adaptResourceFileContentsTextField = new JTextField(40);
151
- private final JTextField noteTextField = new JTextField(40);
152
- private final JTextField warnTextField = new JTextField(40);
153
- private final JTextField keepDirectoriesTextField = new JTextField(40);
154
- private final JTextField printSeedsTextField = new JTextField(40);
155
- private final JTextField printConfigurationTextField = new JTextField(40);
156
- private final JTextField dumpTextField = new JTextField(40);
157
-
158
- private final JTextArea consoleTextArea = new JTextArea(msg("processingInfo"), 3, 40);
159
-
160
- private final JCheckBox reTraceVerboseCheckBox = new JCheckBox(msg("verbose"));
161
- private final JTextField reTraceMappingTextField = new JTextField(40);
162
- private final JTextArea stackTraceTextArea = new JTextArea(3, 40);
163
- private final JTextArea reTraceTextArea = new JTextArea(msg("reTraceInfo"), 3, 40);
164
-
165
-
166
- /**
167
- * Creates a new ProGuardGUI.
168
- */
169
- public ProGuardGUI()
170
- {
171
- setTitle("ProGuard");
172
- setDefaultCloseOperation(EXIT_ON_CLOSE);
173
-
174
- // Create some constraints that can be reused.
175
- GridBagConstraints constraints = new GridBagConstraints();
176
- constraints.anchor = GridBagConstraints.WEST;
177
- constraints.insets = new Insets(0, 4, 0, 4);
178
-
179
- GridBagConstraints constraintsStretch = new GridBagConstraints();
180
- constraintsStretch.fill = GridBagConstraints.HORIZONTAL;
181
- constraintsStretch.weightx = 1.0;
182
- constraintsStretch.anchor = GridBagConstraints.WEST;
183
- constraintsStretch.insets = constraints.insets;
184
-
185
- GridBagConstraints constraintsLast = new GridBagConstraints();
186
- constraintsLast.gridwidth = GridBagConstraints.REMAINDER;
187
- constraintsLast.anchor = GridBagConstraints.WEST;
188
- constraintsLast.insets = constraints.insets;
189
-
190
- GridBagConstraints constraintsLastStretch = new GridBagConstraints();
191
- constraintsLastStretch.gridwidth = GridBagConstraints.REMAINDER;
192
- constraintsLastStretch.fill = GridBagConstraints.HORIZONTAL;
193
- constraintsLastStretch.weightx = 1.0;
194
- constraintsLastStretch.anchor = GridBagConstraints.WEST;
195
- constraintsLastStretch.insets = constraints.insets;
196
-
197
- GridBagConstraints splashPanelConstraints = new GridBagConstraints();
198
- splashPanelConstraints.gridwidth = GridBagConstraints.REMAINDER;
199
- splashPanelConstraints.fill = GridBagConstraints.BOTH;
200
- splashPanelConstraints.weightx = 1.0;
201
- splashPanelConstraints.weighty = 0.02;
202
- splashPanelConstraints.anchor = GridBagConstraints.NORTHWEST;
203
- //splashPanelConstraints.insets = constraints.insets;
204
-
205
- GridBagConstraints welcomePaneConstraints = new GridBagConstraints();
206
- welcomePaneConstraints.gridwidth = GridBagConstraints.REMAINDER;
207
- welcomePaneConstraints.fill = GridBagConstraints.NONE;
208
- welcomePaneConstraints.weightx = 1.0;
209
- welcomePaneConstraints.weighty = 0.01;
210
- welcomePaneConstraints.anchor = GridBagConstraints.CENTER;//NORTHWEST;
211
- welcomePaneConstraints.insets = new Insets(20, 40, 20, 40);
212
-
213
- GridBagConstraints panelConstraints = new GridBagConstraints();
214
- panelConstraints.gridwidth = GridBagConstraints.REMAINDER;
215
- panelConstraints.fill = GridBagConstraints.HORIZONTAL;
216
- panelConstraints.weightx = 1.0;
217
- panelConstraints.anchor = GridBagConstraints.NORTHWEST;
218
- panelConstraints.insets = constraints.insets;
219
-
220
- GridBagConstraints stretchPanelConstraints = new GridBagConstraints();
221
- stretchPanelConstraints.gridwidth = GridBagConstraints.REMAINDER;
222
- stretchPanelConstraints.fill = GridBagConstraints.BOTH;
223
- stretchPanelConstraints.weightx = 1.0;
224
- stretchPanelConstraints.weighty = 1.0;
225
- stretchPanelConstraints.anchor = GridBagConstraints.NORTHWEST;
226
- stretchPanelConstraints.insets = constraints.insets;
227
-
228
- GridBagConstraints glueConstraints = new GridBagConstraints();
229
- glueConstraints.fill = GridBagConstraints.BOTH;
230
- glueConstraints.weightx = 0.01;
231
- glueConstraints.weighty = 0.01;
232
- glueConstraints.anchor = GridBagConstraints.NORTHWEST;
233
- glueConstraints.insets = constraints.insets;
234
-
235
- GridBagConstraints bottomButtonConstraints = new GridBagConstraints();
236
- bottomButtonConstraints.anchor = GridBagConstraints.SOUTHEAST;
237
- bottomButtonConstraints.insets = new Insets(2, 2, 4, 6);
238
- bottomButtonConstraints.ipadx = 10;
239
- bottomButtonConstraints.ipady = 2;
240
-
241
- GridBagConstraints lastBottomButtonConstraints = new GridBagConstraints();
242
- lastBottomButtonConstraints.gridwidth = GridBagConstraints.REMAINDER;
243
- lastBottomButtonConstraints.anchor = GridBagConstraints.SOUTHEAST;
244
- lastBottomButtonConstraints.insets = bottomButtonConstraints.insets;
245
- lastBottomButtonConstraints.ipadx = bottomButtonConstraints.ipadx;
246
- lastBottomButtonConstraints.ipady = bottomButtonConstraints.ipady;
247
-
248
- // Leave room for a growBox on Mac OS X.
249
- if (System.getProperty("os.name").toLowerCase().startsWith("mac os x"))
250
- {
251
- lastBottomButtonConstraints.insets = new Insets(2, 2, 4, 6 + 16);
252
- }
253
-
254
- GridBagLayout layout = new GridBagLayout();
255
-
256
- configurationChooser.addChoosableFileFilter(
257
- new ExtensionFileFilter(msg("proExtension"), new String[] { ".pro" }));
258
-
259
- // Create the opening panel.
260
- Sprite splash =
261
- new CompositeSprite(new Sprite[]
262
- {
263
- new ColorSprite(new ConstantColor(Color.gray),
264
- new FontSprite(new ConstantFont(new Font("sansserif", Font.BOLD, 90)),
265
- new TextSprite(new ConstantString("ProGuard"),
266
- new ConstantInt(160),
267
- new LinearInt(-10, 120, new SmoothTiming(500, 1000))))),
268
-
269
- new ColorSprite(new ConstantColor(Color.white),
270
- new FontSprite(new ConstantFont(new Font("sansserif", Font.BOLD, 45)),
271
- new ShadowedSprite(new ConstantInt(3),
272
- new ConstantInt(3),
273
- new ConstantDouble(0.4),
274
- new ConstantInt(1),
275
- new CompositeSprite(new Sprite[]
276
- {
277
- new TextSprite(new ConstantString(msg("shrinking")),
278
- new LinearInt(1000, 60, new SmoothTiming(1000, 2000)),
279
- new ConstantInt(70)),
280
- new TextSprite(new ConstantString(msg("optimization")),
281
- new LinearInt(1000, 400, new SmoothTiming(1500, 2500)),
282
- new ConstantInt(60)),
283
- new TextSprite(new ConstantString(msg("obfuscation")),
284
- new LinearInt(1000, 10, new SmoothTiming(2000, 3000)),
285
- new ConstantInt(145)),
286
- new TextSprite(new ConstantString(msg("preverification")),
287
- new LinearInt(1000, 350, new SmoothTiming(2500, 3500)),
288
- new ConstantInt(140)),
289
- new FontSprite(new ConstantFont(new Font("sansserif", Font.BOLD, 30)),
290
- new TextSprite(new TypeWriterString(msg("developed"), new LinearTiming(3500, 5500)),
291
- new ConstantInt(250),
292
- new ConstantInt(200))),
293
- })))),
294
- });
295
- splashPanel = new SplashPanel(splash, 0.5, 5500L);
296
- splashPanel.setPreferredSize(new Dimension(0, 200));
297
-
298
- JEditorPane welcomePane = new JEditorPane("text/html", msg("proGuardInfo"));
299
- welcomePane.setPreferredSize(new Dimension(640, 350));
300
- // The constant HONOR_DISPLAY_PROPERTIES isn't present yet in JDK 1.4.
301
- //welcomePane.putClientProperty(JEditorPane.HONOR_DISPLAY_PROPERTIES, Boolean.TRUE);
302
- welcomePane.putClientProperty("JEditorPane.honorDisplayProperties", Boolean.TRUE);
303
- welcomePane.setOpaque(false);
304
- welcomePane.setEditable(false);
305
- welcomePane.setBorder(new EmptyBorder(20, 20, 20, 20));
306
- addBorder(welcomePane, "welcome");
307
-
308
- JPanel proGuardPanel = new JPanel(layout);
309
- proGuardPanel.add(splashPanel, splashPanelConstraints);
310
- proGuardPanel.add(welcomePane, welcomePaneConstraints);
311
-
312
- // Create the input panel.
313
- // TODO: properly clone the ClassPath objects.
314
- // This is awkward to implement in the generic ListPanel.addElements(...)
315
- // method, since the Object.clone() method is not public.
316
- programPanel.addCopyToPanelButton("moveToLibraries", "moveToLibrariesTip", libraryPanel);
317
- libraryPanel.addCopyToPanelButton("moveToProgram", "moveToProgramTip", programPanel);
318
-
319
- // Collect all buttons of these panels and make sure they are equally
320
- // sized.
321
- List panelButtons = new ArrayList();
322
- panelButtons.addAll(programPanel.getButtons());
323
- panelButtons.addAll(libraryPanel.getButtons());
324
- setCommonPreferredSize(panelButtons);
325
-
326
- addBorder(programPanel, "programJars" );
327
- addBorder(libraryPanel, "libraryJars" );
328
-
329
- JPanel inputOutputPanel = new JPanel(layout);
330
- inputOutputPanel.add(tip(programPanel, "programJarsTip"), stretchPanelConstraints);
331
- inputOutputPanel.add(tip(libraryPanel, "libraryJarsTip"), stretchPanelConstraints);
332
-
333
- // Load the boiler plate options.
334
- loadBoilerplateConfiguration();
335
-
336
- // Create the boiler plate keep panels.
337
- boilerplateKeepCheckBoxes = new JCheckBox[boilerplateKeep.length];
338
- boilerplateKeepTextFields = new JTextField[boilerplateKeep.length];
339
-
340
- JButton printUsageBrowseButton = createBrowseButton(printUsageTextField,
341
- msg("selectUsageFile"));
342
-
343
- JPanel shrinkingOptionsPanel = new JPanel(layout);
344
- addBorder(shrinkingOptionsPanel, "options");
345
-
346
- shrinkingOptionsPanel.add(tip(shrinkCheckBox, "shrinkTip"), constraintsLastStretch);
347
- shrinkingOptionsPanel.add(tip(printUsageCheckBox, "printUsageTip"), constraints);
348
- shrinkingOptionsPanel.add(tip(printUsageTextField, "outputFileTip"), constraintsStretch);
349
- shrinkingOptionsPanel.add(tip(printUsageBrowseButton, "selectUsageFile"), constraintsLast);
350
-
351
- JPanel shrinkingPanel = new JPanel(layout);
352
-
353
- shrinkingPanel.add(shrinkingOptionsPanel, panelConstraints);
354
- addClassSpecifications(extractClassSpecifications(boilerplateKeep),
355
- shrinkingPanel,
356
- boilerplateKeepCheckBoxes,
357
- boilerplateKeepTextFields);
358
-
359
- addBorder(additionalKeepPanel, "keepAdditional");
360
- shrinkingPanel.add(tip(additionalKeepPanel, "keepAdditionalTip"), stretchPanelConstraints);
361
-
362
- // Create the boiler plate keep names panels.
363
- boilerplateKeepNamesCheckBoxes = new JCheckBox[boilerplateKeepNames.length];
364
- boilerplateKeepNamesTextFields = new JTextField[boilerplateKeepNames.length];
365
-
366
- JButton printMappingBrowseButton = createBrowseButton(printMappingTextField,
367
- msg("selectPrintMappingFile"));
368
- JButton applyMappingBrowseButton = createBrowseButton(applyMappingTextField,
369
- msg("selectApplyMappingFile"));
370
- JButton obfucationDictionaryBrowseButton = createBrowseButton(obfuscationDictionaryTextField,
371
- msg("selectObfuscationDictionaryFile"));
372
- JButton classObfucationDictionaryBrowseButton = createBrowseButton(classObfuscationDictionaryTextField,
373
- msg("selectObfuscationDictionaryFile"));
374
- JButton packageObfucationDictionaryBrowseButton = createBrowseButton(packageObfuscationDictionaryTextField,
375
- msg("selectObfuscationDictionaryFile"));
376
-
377
- JPanel obfuscationOptionsPanel = new JPanel(layout);
378
- addBorder(obfuscationOptionsPanel, "options");
379
-
380
- obfuscationOptionsPanel.add(tip(obfuscateCheckBox, "obfuscateTip"), constraintsLastStretch);
381
- obfuscationOptionsPanel.add(tip(printMappingCheckBox, "printMappingTip"), constraints);
382
- obfuscationOptionsPanel.add(tip(printMappingTextField, "outputFileTip"), constraintsStretch);
383
- obfuscationOptionsPanel.add(tip(printMappingBrowseButton, "selectPrintMappingFile"), constraintsLast);
384
- obfuscationOptionsPanel.add(tip(applyMappingCheckBox, "applyMappingTip"), constraints);
385
- obfuscationOptionsPanel.add(tip(applyMappingTextField, "inputFileTip"), constraintsStretch);
386
- obfuscationOptionsPanel.add(tip(applyMappingBrowseButton, "selectApplyMappingFile"), constraintsLast);
387
- obfuscationOptionsPanel.add(tip(obfuscationDictionaryCheckBox, "obfuscationDictionaryTip"), constraints);
388
- obfuscationOptionsPanel.add(tip(obfuscationDictionaryTextField, "inputFileTip"), constraintsStretch);
389
- obfuscationOptionsPanel.add(tip(obfucationDictionaryBrowseButton, "selectObfuscationDictionaryFile"), constraintsLast);
390
- obfuscationOptionsPanel.add(tip(classObfuscationDictionaryCheckBox, "classObfuscationDictionaryTip"), constraints);
391
- obfuscationOptionsPanel.add(tip(classObfuscationDictionaryTextField, "inputFileTip"), constraintsStretch);
392
- obfuscationOptionsPanel.add(tip(classObfucationDictionaryBrowseButton, "selectObfuscationDictionaryFile"), constraintsLast);
393
- obfuscationOptionsPanel.add(tip(packageObfuscationDictionaryCheckBox, "packageObfuscationDictionaryTip"), constraints);
394
- obfuscationOptionsPanel.add(tip(packageObfuscationDictionaryTextField, "inputFileTip"), constraintsStretch);
395
- obfuscationOptionsPanel.add(tip(packageObfucationDictionaryBrowseButton, "selectObfuscationDictionaryFile"), constraintsLast);
396
- obfuscationOptionsPanel.add(tip(overloadAggressivelyCheckBox, "overloadAggressivelyTip"), constraintsLastStretch);
397
- obfuscationOptionsPanel.add(tip(useUniqueClassMemberNamesCheckBox, "useUniqueClassMemberNamesTip"), constraintsLastStretch);
398
- obfuscationOptionsPanel.add(tip(useMixedCaseClassNamesCheckBox, "useMixedCaseClassNamesTip"), constraintsLastStretch);
399
- obfuscationOptionsPanel.add(tip(keepPackageNamesCheckBox, "keepPackageNamesTip"), constraints);
400
- obfuscationOptionsPanel.add(tip(keepPackageNamesTextField, "packageNamesTip"), constraintsLastStretch);
401
- obfuscationOptionsPanel.add(tip(flattenPackageHierarchyCheckBox, "flattenPackageHierarchyTip"), constraints);
402
- obfuscationOptionsPanel.add(tip(flattenPackageHierarchyTextField, "packageTip"), constraintsLastStretch);
403
- obfuscationOptionsPanel.add(tip(repackageClassesCheckBox, "repackageClassesTip"), constraints);
404
- obfuscationOptionsPanel.add(tip(repackageClassesTextField, "packageTip"), constraintsLastStretch);
405
- obfuscationOptionsPanel.add(tip(keepAttributesCheckBox, "keepAttributesTip"), constraints);
406
- obfuscationOptionsPanel.add(tip(keepAttributesTextField, "attributesTip"), constraintsLastStretch);
407
- obfuscationOptionsPanel.add(tip(keepParameterNamesCheckBox, "keepParameterNamesTip"), constraintsLastStretch);
408
- obfuscationOptionsPanel.add(tip(newSourceFileAttributeCheckBox, "renameSourceFileAttributeTip"), constraints);
409
- obfuscationOptionsPanel.add(tip(newSourceFileAttributeTextField, "sourceFileAttributeTip"), constraintsLastStretch);
410
- obfuscationOptionsPanel.add(tip(adaptClassStringsCheckBox, "adaptClassStringsTip"), constraints);
411
- obfuscationOptionsPanel.add(tip(adaptClassStringsTextField, "classNamesTip"), constraintsLastStretch);
412
- obfuscationOptionsPanel.add(tip(adaptResourceFileNamesCheckBox, "adaptResourceFileNamesTip"), constraints);
413
- obfuscationOptionsPanel.add(tip(adaptResourceFileNamesTextField, "fileNameFilterTip"), constraintsLastStretch);
414
- obfuscationOptionsPanel.add(tip(adaptResourceFileContentsCheckBox, "adaptResourceFileContentsTip"), constraints);
415
- obfuscationOptionsPanel.add(tip(adaptResourceFileContentsTextField, "fileNameFilterTip"), constraintsLastStretch);
416
-
417
- JPanel obfuscationPanel = new JPanel(layout);
418
-
419
- obfuscationPanel.add(obfuscationOptionsPanel, panelConstraints);
420
- addClassSpecifications(extractClassSpecifications(boilerplateKeepNames),
421
- obfuscationPanel,
422
- boilerplateKeepNamesCheckBoxes,
423
- boilerplateKeepNamesTextFields);
424
-
425
- addBorder(additionalKeepNamesPanel, "keepNamesAdditional");
426
- obfuscationPanel.add(tip(additionalKeepNamesPanel, "keepNamesAdditionalTip"), stretchPanelConstraints);
427
-
428
- // Create the boiler plate "no side effect methods" panels.
429
- boilerplateNoSideEffectMethodCheckBoxes = new JCheckBox[boilerplateNoSideEffectMethods.length];
430
-
431
- JPanel optimizationOptionsPanel = new JPanel(layout);
432
- addBorder(optimizationOptionsPanel, "options");
433
-
434
- JButton optimizationsButton =
435
- createOptimizationsButton(optimizationsTextField);
436
-
437
- optimizationOptionsPanel.add(tip(optimizeCheckBox, "optimizeTip"), constraintsLastStretch);
438
- optimizationOptionsPanel.add(tip(allowAccessModificationCheckBox, "allowAccessModificationTip"), constraintsLastStretch);
439
- optimizationOptionsPanel.add(tip(mergeInterfacesAggressivelyCheckBox, "mergeInterfacesAggressivelyTip"), constraintsLastStretch);
440
- optimizationOptionsPanel.add(tip(optimizationsLabel, "optimizationsTip"), constraints);
441
- optimizationOptionsPanel.add(tip(optimizationsTextField, "optimizationsFilterTip"), constraintsStretch);
442
- optimizationOptionsPanel.add(tip(optimizationsButton, "optimizationsSelectTip"), constraintsLast);
443
- optimizationOptionsPanel.add(tip(optimizationPassesLabel, "optimizationPassesTip"), constraints);
444
- optimizationOptionsPanel.add(tip(optimizationPassesSpinner, "optimizationPassesTip"), constraintsLast);
445
-
446
- JPanel optimizationPanel = new JPanel(layout);
447
-
448
- optimizationPanel.add(optimizationOptionsPanel, panelConstraints);
449
- addClassSpecifications(boilerplateNoSideEffectMethods,
450
- optimizationPanel,
451
- boilerplateNoSideEffectMethodCheckBoxes,
452
- null);
453
-
454
- addBorder(additionalNoSideEffectsPanel, "assumeNoSideEffectsAdditional");
455
- optimizationPanel.add(tip(additionalNoSideEffectsPanel, "assumeNoSideEffectsAdditionalTip"), stretchPanelConstraints);
456
-
457
- // Create the options panel.
458
- JPanel preverificationOptionsPanel = new JPanel(layout);
459
- addBorder(preverificationOptionsPanel, "preverificationAndTargeting");
460
-
461
- preverificationOptionsPanel.add(tip(preverifyCheckBox, "preverifyTip"), constraintsLastStretch);
462
- preverificationOptionsPanel.add(tip(microEditionCheckBox, "microEditionTip"), constraintsLastStretch);
463
- preverificationOptionsPanel.add(tip(targetCheckBox, "targetTip"), constraints);
464
- preverificationOptionsPanel.add(tip(targetComboBox, "targetTip"), constraintsLast);
465
-
466
- JButton printSeedsBrowseButton =
467
- createBrowseButton(printSeedsTextField, msg("selectSeedsFile"));
468
-
469
- JButton printConfigurationBrowseButton =
470
- createBrowseButton(printConfigurationTextField, msg( "selectConfigurationFile"));
471
-
472
- JButton dumpBrowseButton =
473
- createBrowseButton(dumpTextField, msg("selectDumpFile"));
474
-
475
- // Select the most recent target by default.
476
- targetComboBox.setSelectedIndex(targetComboBox.getItemCount() - 1);
477
-
478
- JPanel consistencyPanel = new JPanel(layout);
479
- addBorder(consistencyPanel, "consistencyAndCorrectness");
480
-
481
- consistencyPanel.add(tip(verboseCheckBox, "verboseTip"), constraintsLastStretch);
482
- consistencyPanel.add(tip(noteCheckBox, "noteTip"), constraints);
483
- consistencyPanel.add(tip(noteTextField, "noteFilterTip"), constraintsLastStretch);
484
- consistencyPanel.add(tip(warnCheckBox, "warnTip"), constraints);
485
- consistencyPanel.add(tip(warnTextField, "warnFilterTip"), constraintsLastStretch);
486
- consistencyPanel.add(tip(ignoreWarningsCheckBox, "ignoreWarningsTip"), constraintsLastStretch);
487
- consistencyPanel.add(tip(skipNonPublicLibraryClassesCheckBox, "skipNonPublicLibraryClassesTip"), constraintsLastStretch);
488
- consistencyPanel.add(tip(skipNonPublicLibraryClassMembersCheckBox, "skipNonPublicLibraryClassMembersTip"), constraintsLastStretch);
489
- consistencyPanel.add(tip(keepDirectoriesCheckBox, "keepDirectoriesTip"), constraints);
490
- consistencyPanel.add(tip(keepDirectoriesTextField, "directoriesTip"), constraintsLastStretch);
491
- consistencyPanel.add(tip(forceProcessingCheckBox, "forceProcessingTip"), constraintsLastStretch);
492
- consistencyPanel.add(tip(printSeedsCheckBox, "printSeedsTip"), constraints);
493
- consistencyPanel.add(tip(printSeedsTextField, "outputFileTip"), constraintsStretch);
494
- consistencyPanel.add(tip(printSeedsBrowseButton, "selectSeedsFile"), constraintsLast);
495
- consistencyPanel.add(tip(printConfigurationCheckBox, "printConfigurationTip"), constraints);
496
- consistencyPanel.add(tip(printConfigurationTextField, "outputFileTip"), constraintsStretch);
497
- consistencyPanel.add(tip(printConfigurationBrowseButton, "selectConfigurationFile"), constraintsLast);
498
- consistencyPanel.add(tip(dumpCheckBox, "dumpTip"), constraints);
499
- consistencyPanel.add(tip(dumpTextField, "outputFileTip"), constraintsStretch);
500
- consistencyPanel.add(tip(dumpBrowseButton, "selectDumpFile"), constraintsLast);
501
-
502
- // Collect all components that are followed by text fields and make
503
- // sure they are equally sized. That way the text fields start at the
504
- // same horizontal position.
505
- setCommonPreferredSize(Arrays.asList(new JComponent[] {
506
- printMappingCheckBox,
507
- applyMappingCheckBox,
508
- flattenPackageHierarchyCheckBox,
509
- repackageClassesCheckBox,
510
- newSourceFileAttributeCheckBox,
511
- }));
512
-
513
- JPanel optionsPanel = new JPanel(layout);
514
-
515
- optionsPanel.add(preverificationOptionsPanel, panelConstraints);
516
- optionsPanel.add(consistencyPanel, panelConstraints);
517
-
518
- addBorder(whyAreYouKeepingPanel, "whyAreYouKeeping");
519
- optionsPanel.add(tip(whyAreYouKeepingPanel, "whyAreYouKeepingTip"), stretchPanelConstraints);
520
-
521
- // Create the process panel.
522
- consoleTextArea.setOpaque(false);
523
- consoleTextArea.setEditable(false);
524
- consoleTextArea.setLineWrap(false);
525
- consoleTextArea.setWrapStyleWord(false);
526
- JScrollPane consoleScrollPane = new JScrollPane(consoleTextArea);
527
- consoleScrollPane.setBorder(new EmptyBorder(1, 1, 1, 1));
528
- addBorder(consoleScrollPane, "processingConsole");
529
-
530
- JPanel processPanel = new JPanel(layout);
531
- processPanel.add(consoleScrollPane, stretchPanelConstraints);
532
-
533
- // Create the load, save, and process buttons.
534
- JButton loadButton = new JButton(msg("loadConfiguration"));
535
- loadButton.addActionListener(new MyLoadConfigurationActionListener());
536
-
537
- JButton viewButton = new JButton(msg("viewConfiguration"));
538
- viewButton.addActionListener(new MyViewConfigurationActionListener());
539
-
540
- JButton saveButton = new JButton(msg("saveConfiguration"));
541
- saveButton.addActionListener(new MySaveConfigurationActionListener());
542
-
543
- JButton processButton = new JButton(msg("process"));
544
- processButton.addActionListener(new MyProcessActionListener());
545
-
546
- // Create the ReTrace panel.
547
- JPanel reTraceSettingsPanel = new JPanel(layout);
548
- addBorder(reTraceSettingsPanel, "reTraceSettings");
549
-
550
- JButton reTraceMappingBrowseButton = createBrowseButton(reTraceMappingTextField,
551
- msg("selectApplyMappingFile"));
552
-
553
- JLabel reTraceMappingLabel = new JLabel(msg("mappingFile"));
554
- reTraceMappingLabel.setForeground(reTraceVerboseCheckBox.getForeground());
555
-
556
- reTraceSettingsPanel.add(tip(reTraceVerboseCheckBox, "verboseTip"), constraintsLastStretch);
557
- reTraceSettingsPanel.add(tip(reTraceMappingLabel, "mappingFileTip"), constraints);
558
- reTraceSettingsPanel.add(tip(reTraceMappingTextField, "inputFileTip"), constraintsStretch);
559
- reTraceSettingsPanel.add(tip(reTraceMappingBrowseButton, "selectApplyMappingFile"), constraintsLast);
560
-
561
- stackTraceTextArea.setOpaque(true);
562
- stackTraceTextArea.setEditable(true);
563
- stackTraceTextArea.setLineWrap(false);
564
- stackTraceTextArea.setWrapStyleWord(true);
565
- JScrollPane stackTraceScrollPane = new JScrollPane(stackTraceTextArea);
566
- addBorder(stackTraceScrollPane, "obfuscatedStackTrace");
567
-
568
- reTraceTextArea.setOpaque(false);
569
- reTraceTextArea.setEditable(false);
570
- reTraceTextArea.setLineWrap(true);
571
- reTraceTextArea.setWrapStyleWord(true);
572
- JScrollPane reTraceScrollPane = new JScrollPane(reTraceTextArea);
573
- reTraceScrollPane.setBorder(new EmptyBorder(1, 1, 1, 1));
574
- addBorder(reTraceScrollPane, "deobfuscatedStackTrace");
575
-
576
- JPanel reTracePanel = new JPanel(layout);
577
- reTracePanel.add(reTraceSettingsPanel, panelConstraints);
578
- reTracePanel.add(tip(stackTraceScrollPane, "obfuscatedStackTraceTip"), panelConstraints);
579
- reTracePanel.add(reTraceScrollPane, stretchPanelConstraints);
580
-
581
- // Create the load button.
582
- JButton loadStackTraceButton = new JButton(msg("loadStackTrace"));
583
- loadStackTraceButton.addActionListener(new MyLoadStackTraceActionListener());
584
-
585
- JButton reTraceButton = new JButton(msg("reTrace"));
586
- reTraceButton.addActionListener(new MyReTraceActionListener());
587
-
588
- // Create the main tabbed pane.
589
- TabbedPane tabs = new TabbedPane();
590
- tabs.add(msg("proGuardTab"), proGuardPanel);
591
- tabs.add(msg("inputOutputTab"), inputOutputPanel);
592
- tabs.add(msg("shrinkingTab"), shrinkingPanel);
593
- tabs.add(msg("obfuscationTab"), obfuscationPanel);
594
- tabs.add(msg("optimizationTab"), optimizationPanel);
595
- tabs.add(msg("informationTab"), optionsPanel);
596
- tabs.add(msg("processTab"), processPanel);
597
- tabs.add(msg("reTraceTab"), reTracePanel);
598
- tabs.addImage(Toolkit.getDefaultToolkit().getImage(
599
- this.getClass().getResource(TITLE_IMAGE_FILE)));
600
-
601
- // Add the bottom buttons to each panel.
602
- proGuardPanel .add(Box.createGlue(), glueConstraints);
603
- proGuardPanel .add(tip(loadButton, "loadConfigurationTip"), bottomButtonConstraints);
604
- proGuardPanel .add(createNextButton(tabs), lastBottomButtonConstraints);
605
-
606
- inputOutputPanel .add(Box.createGlue(), glueConstraints);
607
- inputOutputPanel .add(createPreviousButton(tabs), bottomButtonConstraints);
608
- inputOutputPanel .add(createNextButton(tabs), lastBottomButtonConstraints);
609
-
610
- shrinkingPanel .add(Box.createGlue(), glueConstraints);
611
- shrinkingPanel .add(createPreviousButton(tabs), bottomButtonConstraints);
612
- shrinkingPanel .add(createNextButton(tabs), lastBottomButtonConstraints);
613
-
614
- obfuscationPanel .add(Box.createGlue(), glueConstraints);
615
- obfuscationPanel .add(createPreviousButton(tabs), bottomButtonConstraints);
616
- obfuscationPanel .add(createNextButton(tabs), lastBottomButtonConstraints);
617
-
618
- optimizationPanel .add(Box.createGlue(), glueConstraints);
619
- optimizationPanel .add(createPreviousButton(tabs), bottomButtonConstraints);
620
- optimizationPanel .add(createNextButton(tabs), lastBottomButtonConstraints);
621
-
622
- optionsPanel .add(Box.createGlue(), glueConstraints);
623
- optionsPanel .add(createPreviousButton(tabs), bottomButtonConstraints);
624
- optionsPanel .add(createNextButton(tabs), lastBottomButtonConstraints);
625
-
626
- processPanel .add(Box.createGlue(), glueConstraints);
627
- processPanel .add(createPreviousButton(tabs), bottomButtonConstraints);
628
- processPanel .add(tip(viewButton, "viewConfigurationTip"), bottomButtonConstraints);
629
- processPanel .add(tip(saveButton, "saveConfigurationTip"), bottomButtonConstraints);
630
- processPanel .add(tip(processButton, "processTip"), lastBottomButtonConstraints);
631
-
632
- reTracePanel .add(Box.createGlue(), glueConstraints);
633
- reTracePanel .add(tip(loadStackTraceButton, "loadStackTraceTip"), bottomButtonConstraints);
634
- reTracePanel .add(tip(reTraceButton, "reTraceTip"), lastBottomButtonConstraints);
635
-
636
- // Initialize the GUI settings to reasonable defaults.
637
- loadConfiguration(this.getClass().getResource(DEFAULT_CONFIGURATION));
638
-
639
- // Add the main tabs to the frame and pack it.
640
- getContentPane().add(tabs);
641
- }
642
-
643
-
644
- public void startSplash()
645
- {
646
- splashPanel.start();
647
- }
648
-
649
-
650
- public void skipSplash()
651
- {
652
- splashPanel.stop();
653
- }
654
-
655
-
656
- /**
657
- * Loads the boilerplate keep class options from the boilerplate file
658
- * into the boilerplate array.
659
- */
660
- private void loadBoilerplateConfiguration()
661
- {
662
- try
663
- {
664
- // Parse the boilerplate configuration file.
665
- ConfigurationParser parser = new ConfigurationParser(
666
- this.getClass().getResource(BOILERPLATE_CONFIGURATION));
667
- Configuration configuration = new Configuration();
668
-
669
- try
670
- {
671
- parser.parse(configuration);
672
-
673
- // We're interested in the keep options.
674
- boilerplateKeep =
675
- extractKeepSpecifications(configuration.keep, false, false);
676
-
677
- // We're interested in the keep options.
678
- boilerplateKeepNames =
679
- extractKeepSpecifications(configuration.keep, true, false);
680
-
681
- // We're interested in the side effects options.
682
- boilerplateNoSideEffectMethods = new ClassSpecification[configuration.assumeNoSideEffects.size()];
683
- configuration.assumeNoSideEffects.toArray(boilerplateNoSideEffectMethods);
684
- }
685
- finally
686
- {
687
- parser.close();
688
- }
689
- }
690
- catch (Exception ex)
691
- {
692
- ex.printStackTrace();
693
- }
694
- }
695
-
696
-
697
- /**
698
- * Returns an array containing the ClassSpecifications instances with
699
- * matching flags.
700
- */
701
- private KeepClassSpecification[] extractKeepSpecifications(List keepSpecifications,
702
- boolean allowShrinking,
703
- boolean allowObfuscation)
704
- {
705
- List matches = new ArrayList();
706
-
707
- for (int index = 0; index < keepSpecifications.size(); index++)
708
- {
709
- KeepClassSpecification keepClassSpecification = (KeepClassSpecification)keepSpecifications.get(index);
710
- if (keepClassSpecification.allowShrinking == allowShrinking &&
711
- keepClassSpecification.allowObfuscation == allowObfuscation)
712
- {
713
- matches.add(keepClassSpecification);
714
- }
715
- }
716
-
717
- KeepClassSpecification[] matchingKeepClassSpecifications = new KeepClassSpecification[matches.size()];
718
- matches.toArray(matchingKeepClassSpecifications);
719
-
720
- return matchingKeepClassSpecifications;
721
- }
722
-
723
-
724
- /**
725
- * Returns an array containing the ClassSpecification instances of the
726
- * given array of KeepClassSpecification instances.
727
- */
728
- private ClassSpecification[] extractClassSpecifications(KeepClassSpecification[] keepClassSpecifications)
729
- {
730
- ClassSpecification[] classSpecifications = new ClassSpecification[keepClassSpecifications.length];
731
-
732
- for (int index = 0; index < classSpecifications.length; index++)
733
- {
734
- classSpecifications[index] = keepClassSpecifications[index];
735
- }
736
-
737
- return classSpecifications;
738
- }
739
-
740
-
741
- /**
742
- * Creates a panel with the given boiler plate class specifications.
743
- */
744
- private void addClassSpecifications(ClassSpecification[] boilerplateClassSpecifications,
745
- JPanel classSpecificationsPanel,
746
- JCheckBox[] boilerplateCheckBoxes,
747
- JTextField[] boilerplateTextFields)
748
- {
749
- // Create some constraints that can be reused.
750
- GridBagConstraints constraints = new GridBagConstraints();
751
- constraints.anchor = GridBagConstraints.WEST;
752
- constraints.insets = new Insets(0, 4, 0, 4);
753
-
754
- GridBagConstraints constraintsLastStretch = new GridBagConstraints();
755
- constraintsLastStretch.gridwidth = GridBagConstraints.REMAINDER;
756
- constraintsLastStretch.fill = GridBagConstraints.HORIZONTAL;
757
- constraintsLastStretch.weightx = 1.0;
758
- constraintsLastStretch.anchor = GridBagConstraints.WEST;
759
- constraintsLastStretch.insets = constraints.insets;
760
-
761
- GridBagConstraints panelConstraints = new GridBagConstraints();
762
- panelConstraints.gridwidth = GridBagConstraints.REMAINDER;
763
- panelConstraints.fill = GridBagConstraints.HORIZONTAL;
764
- panelConstraints.weightx = 1.0;
765
- panelConstraints.anchor = GridBagConstraints.NORTHWEST;
766
- panelConstraints.insets = constraints.insets;
767
-
768
- GridBagLayout layout = new GridBagLayout();
769
-
770
- String lastPanelName = null;
771
- JPanel keepSubpanel = null;
772
- for (int index = 0; index < boilerplateClassSpecifications.length; index++)
773
- {
774
- // The panel structure is derived from the comments.
775
- String comments = boilerplateClassSpecifications[index].comments;
776
- int dashIndex = comments.indexOf('-');
777
- int periodIndex = comments.indexOf('.', dashIndex);
778
- String panelName = comments.substring(0, dashIndex).trim();
779
- String optionName = comments.substring(dashIndex + 1, periodIndex).replace('_', '.').trim();
780
- String toolTip = comments.substring(periodIndex + 1);
781
- if (keepSubpanel == null || !panelName.equals(lastPanelName))
782
- {
783
- // Create a new keep subpanel and add it.
784
- keepSubpanel = new JPanel(layout);
785
- keepSubpanel.setBorder(BorderFactory.createTitledBorder(BORDER, panelName));
786
- classSpecificationsPanel.add(keepSubpanel, panelConstraints);
787
-
788
- lastPanelName = panelName;
789
- }
790
-
791
- // Add the check box to the subpanel.
792
- JCheckBox boilerplateCheckBox = new JCheckBox(optionName);
793
- boilerplateCheckBox.setToolTipText(toolTip);
794
- boilerplateCheckBoxes[index] = boilerplateCheckBox;
795
- keepSubpanel.add(boilerplateCheckBox,
796
- boilerplateTextFields != null ?
797
- constraints :
798
- constraintsLastStretch);
799
-
800
- if (boilerplateTextFields != null)
801
- {
802
- // Add the text field to the subpanel.
803
- boilerplateTextFields[index] = new JTextField(40);
804
- keepSubpanel.add(tip(boilerplateTextFields[index], "classNamesTip"), constraintsLastStretch);
805
- }
806
- }
807
- }
808
-
809
-
810
- /**
811
- * Adds a standard border with the title that corresponds to the given key
812
- * in the GUI resources.
813
- */
814
- private void addBorder(JComponent component, String titleKey)
815
- {
816
- Border oldBorder = component.getBorder();
817
- Border newBorder = BorderFactory.createTitledBorder(BORDER, msg(titleKey));
818
-
819
- component.setBorder(oldBorder == null ?
820
- newBorder :
821
- new CompoundBorder(newBorder, oldBorder));
822
- }
823
-
824
-
825
- /**
826
- * Creates a Previous button for the given tabbed pane.
827
- */
828
- private JButton createPreviousButton(final TabbedPane tabbedPane)
829
- {
830
- JButton browseButton = new JButton(msg("previous"));
831
- browseButton.addActionListener(new ActionListener()
832
- {
833
- public void actionPerformed(ActionEvent e)
834
- {
835
- tabbedPane.previous();
836
- }
837
- });
838
-
839
- return browseButton;
840
- }
841
-
842
-
843
- /**
844
- * Creates a Next button for the given tabbed pane.
845
- */
846
- private JButton createNextButton(final TabbedPane tabbedPane)
847
- {
848
- JButton browseButton = new JButton(msg("next"));
849
- browseButton.addActionListener(new ActionListener()
850
- {
851
- public void actionPerformed(ActionEvent e)
852
- {
853
- tabbedPane.next();
854
- }
855
- });
856
-
857
- return browseButton;
858
- }
859
-
860
-
861
- /**
862
- * Creates a browse button that opens a file browser for the given text field.
863
- */
864
- private JButton createBrowseButton(final JTextField textField,
865
- final String title)
866
- {
867
- JButton browseButton = new JButton(msg("browse"));
868
- browseButton.addActionListener(new ActionListener()
869
- {
870
- public void actionPerformed(ActionEvent e)
871
- {
872
- // Update the file chooser.
873
- fileChooser.setDialogTitle(title);
874
- fileChooser.setSelectedFile(new File(textField.getText()));
875
-
876
- int returnVal = fileChooser.showDialog(ProGuardGUI.this, msg("ok"));
877
- if (returnVal == JFileChooser.APPROVE_OPTION)
878
- {
879
- // Update the text field.
880
- textField.setText(fileChooser.getSelectedFile().getPath());
881
- }
882
- }
883
- });
884
-
885
- return browseButton;
886
- }
887
-
888
-
889
- protected JButton createOptimizationsButton(final JTextField textField)
890
- {
891
- final OptimizationsDialog optimizationsDialog = new OptimizationsDialog(ProGuardGUI.this);
892
-
893
- JButton optimizationsButton = new JButton(msg("select"));
894
- optimizationsButton.addActionListener(new ActionListener()
895
- {
896
- public void actionPerformed(ActionEvent e)
897
- {
898
- // Update the dialog.
899
- optimizationsDialog.setFilter(textField.getText());
900
-
901
- int returnValue = optimizationsDialog.showDialog();
902
- if (returnValue == OptimizationsDialog.APPROVE_OPTION)
903
- {
904
- // Update the text field.
905
- textField.setText(optimizationsDialog.getFilter());
906
- }
907
- }
908
- });
909
-
910
- return optimizationsButton;
911
- }
912
-
913
-
914
- /**
915
- * Sets the preferred sizes of the given components to the maximum of their
916
- * current preferred sizes.
917
- */
918
- private void setCommonPreferredSize(List components)
919
- {
920
- // Find the maximum preferred size.
921
- Dimension maximumSize = null;
922
- for (int index = 0; index < components.size(); index++)
923
- {
924
- JComponent component = (JComponent)components.get(index);
925
- Dimension size = component.getPreferredSize();
926
- if (maximumSize == null ||
927
- size.getWidth() > maximumSize.getWidth())
928
- {
929
- maximumSize = size;
930
- }
931
- }
932
-
933
- // Set the size that we found as the preferred size for all components.
934
- for (int index = 0; index < components.size(); index++)
935
- {
936
- JComponent component = (JComponent)components.get(index);
937
- component.setPreferredSize(maximumSize);
938
- }
939
- }
940
-
941
-
942
- /**
943
- * Updates to GUI settings to reflect the given ProGuard configuration.
944
- */
945
- private void setProGuardConfiguration(Configuration configuration)
946
- {
947
- // Set up the input and output jars and directories.
948
- programPanel.setClassPath(configuration.programJars);
949
- libraryPanel.setClassPath(configuration.libraryJars);
950
-
951
- // Set up the boilerplate keep options.
952
- for (int index = 0; index < boilerplateKeep.length; index++)
953
- {
954
- String classNames =
955
- findMatchingKeepSpecifications(boilerplateKeep[index],
956
- configuration.keep);
957
-
958
- boilerplateKeepCheckBoxes[index].setSelected(classNames != null);
959
- boilerplateKeepTextFields[index].setText(classNames == null ? "*" : classNames);
960
- }
961
-
962
-
963
- // Set up the boilerplate keep names options.
964
- for (int index = 0; index < boilerplateKeepNames.length; index++)
965
- {
966
- String classNames =
967
- findMatchingKeepSpecifications(boilerplateKeepNames[index],
968
- configuration.keep);
969
-
970
- boilerplateKeepNamesCheckBoxes[index].setSelected(classNames != null);
971
- boilerplateKeepNamesTextFields[index].setText(classNames == null ? "*" : classNames);
972
- }
973
-
974
- // Set up the additional keep options. Note that the matched boilerplate
975
- // options have been removed from the list.
976
- additionalKeepPanel.setClassSpecifications(filteredKeepSpecifications(configuration.keep,
977
- false));
978
-
979
- // Set up the additional keep options. Note that the matched boilerplate
980
- // options have been removed from the list.
981
- additionalKeepNamesPanel.setClassSpecifications(filteredKeepSpecifications(configuration.keep,
982
- true));
983
-
984
-
985
- // Set up the boilerplate "no side effect methods" options.
986
- for (int index = 0; index < boilerplateNoSideEffectMethods.length; index++)
987
- {
988
- boolean found =
989
- findClassSpecification(boilerplateNoSideEffectMethods[index],
990
- configuration.assumeNoSideEffects);
991
-
992
- boilerplateNoSideEffectMethodCheckBoxes[index].setSelected(found);
993
- }
994
-
995
- // Set up the additional keep options. Note that the matched boilerplate
996
- // options have been removed from the list.
997
- additionalNoSideEffectsPanel.setClassSpecifications(configuration.assumeNoSideEffects);
998
-
999
- // Set up the "why are you keeping" options.
1000
- whyAreYouKeepingPanel.setClassSpecifications(configuration.whyAreYouKeeping);
1001
-
1002
- // Set up the other options.
1003
- shrinkCheckBox .setSelected(configuration.shrink);
1004
- printUsageCheckBox .setSelected(configuration.printUsage != null);
1005
-
1006
- optimizeCheckBox .setSelected(configuration.optimize);
1007
- allowAccessModificationCheckBox .setSelected(configuration.allowAccessModification);
1008
- mergeInterfacesAggressivelyCheckBox .setSelected(configuration.mergeInterfacesAggressively);
1009
- optimizationPassesSpinner.getModel() .setValue(new Integer(configuration.optimizationPasses));
1010
-
1011
- obfuscateCheckBox .setSelected(configuration.obfuscate);
1012
- printMappingCheckBox .setSelected(configuration.printMapping != null);
1013
- applyMappingCheckBox .setSelected(configuration.applyMapping != null);
1014
- obfuscationDictionaryCheckBox .setSelected(configuration.obfuscationDictionary != null);
1015
- classObfuscationDictionaryCheckBox .setSelected(configuration.classObfuscationDictionary != null);
1016
- packageObfuscationDictionaryCheckBox .setSelected(configuration.packageObfuscationDictionary != null);
1017
- overloadAggressivelyCheckBox .setSelected(configuration.overloadAggressively);
1018
- useUniqueClassMemberNamesCheckBox .setSelected(configuration.useUniqueClassMemberNames);
1019
- useMixedCaseClassNamesCheckBox .setSelected(configuration.useMixedCaseClassNames);
1020
- keepPackageNamesCheckBox .setSelected(configuration.keepPackageNames != null);
1021
- flattenPackageHierarchyCheckBox .setSelected(configuration.flattenPackageHierarchy != null);
1022
- repackageClassesCheckBox .setSelected(configuration.repackageClasses != null);
1023
- keepAttributesCheckBox .setSelected(configuration.keepAttributes != null);
1024
- keepParameterNamesCheckBox .setSelected(configuration.keepParameterNames);
1025
- newSourceFileAttributeCheckBox .setSelected(configuration.newSourceFileAttribute != null);
1026
- adaptClassStringsCheckBox .setSelected(configuration.adaptClassStrings != null);
1027
- adaptResourceFileNamesCheckBox .setSelected(configuration.adaptResourceFileNames != null);
1028
- adaptResourceFileContentsCheckBox .setSelected(configuration.adaptResourceFileContents != null);
1029
-
1030
- preverifyCheckBox .setSelected(configuration.preverify);
1031
- microEditionCheckBox .setSelected(configuration.microEdition);
1032
- targetCheckBox .setSelected(configuration.targetClassVersion != 0);
1033
-
1034
- verboseCheckBox .setSelected(configuration.verbose);
1035
- noteCheckBox .setSelected(configuration.note == null || !configuration.note.isEmpty());
1036
- warnCheckBox .setSelected(configuration.warn == null || !configuration.warn.isEmpty());
1037
- ignoreWarningsCheckBox .setSelected(configuration.ignoreWarnings);
1038
- skipNonPublicLibraryClassesCheckBox .setSelected(configuration.skipNonPublicLibraryClasses);
1039
- skipNonPublicLibraryClassMembersCheckBox.setSelected(configuration.skipNonPublicLibraryClassMembers);
1040
- keepDirectoriesCheckBox .setSelected(configuration.keepDirectories != null);
1041
- forceProcessingCheckBox .setSelected(configuration.lastModified == Long.MAX_VALUE);
1042
- printSeedsCheckBox .setSelected(configuration.printSeeds != null);
1043
- printConfigurationCheckBox .setSelected(configuration.printConfiguration != null);
1044
- dumpCheckBox .setSelected(configuration.dump != null);
1045
-
1046
- printUsageTextField .setText(fileName(configuration.printUsage));
1047
- optimizationsTextField .setText(configuration.optimizations ==
1048
- null ?
1049
- OPTIMIZATIONS_DEFAULT :
1050
- ListUtil.commaSeparatedString(configuration.optimizations, true));
1051
- printMappingTextField .setText(fileName(configuration.printMapping));
1052
- applyMappingTextField .setText(fileName(configuration.applyMapping));
1053
- obfuscationDictionaryTextField .setText(fileName(configuration.obfuscationDictionary));
1054
- classObfuscationDictionaryTextField .setText(fileName(configuration.classObfuscationDictionary));
1055
- packageObfuscationDictionaryTextField .setText(fileName(configuration.packageObfuscationDictionary));
1056
- keepPackageNamesTextField .setText(configuration.keepPackageNames == null ? "" : ClassUtil.externalClassName(ListUtil.commaSeparatedString(configuration.keepPackageNames, true)));
1057
- flattenPackageHierarchyTextField .setText(configuration.flattenPackageHierarchy);
1058
- repackageClassesTextField .setText(configuration.repackageClasses);
1059
- keepAttributesTextField .setText(configuration.keepAttributes == null ? KEEP_ATTRIBUTE_DEFAULT : ListUtil.commaSeparatedString(configuration.keepAttributes, true));
1060
- newSourceFileAttributeTextField .setText(configuration.newSourceFileAttribute == null ? SOURCE_FILE_ATTRIBUTE_DEFAULT : configuration.newSourceFileAttribute);
1061
- adaptClassStringsTextField .setText(configuration.adaptClassStrings == null ? "" : ClassUtil.externalClassName(ListUtil.commaSeparatedString(configuration.adaptClassStrings, true)));
1062
- adaptResourceFileNamesTextField .setText(configuration.adaptResourceFileNames == null ? ADAPT_RESOURCE_FILE_NAMES_DEFAULT : ListUtil.commaSeparatedString(configuration.adaptResourceFileNames, true));
1063
- adaptResourceFileContentsTextField .setText(configuration.adaptResourceFileContents == null ? ADAPT_RESOURCE_FILE_CONTENTS_DEFAULT : ListUtil.commaSeparatedString(configuration.adaptResourceFileContents, true));
1064
- noteTextField .setText(ListUtil.commaSeparatedString(configuration.note, true));
1065
- warnTextField .setText(ListUtil.commaSeparatedString(configuration.warn, true));
1066
- keepDirectoriesTextField .setText(ListUtil.commaSeparatedString(configuration.keepDirectories, true));
1067
- printSeedsTextField .setText(fileName(configuration.printSeeds));
1068
- printConfigurationTextField .setText(fileName(configuration.printConfiguration));
1069
- dumpTextField .setText(fileName(configuration.dump));
1070
-
1071
- if (configuration.targetClassVersion != 0)
1072
- {
1073
- targetComboBox.setSelectedItem(ClassUtil.externalClassVersion(configuration.targetClassVersion));
1074
- }
1075
- else
1076
- {
1077
- targetComboBox.setSelectedIndex(targetComboBox.getItemCount() - 1);
1078
- }
1079
-
1080
- if (configuration.printMapping != null)
1081
- {
1082
- reTraceMappingTextField.setText(fileName(configuration.printMapping));
1083
- }
1084
- }
1085
-
1086
-
1087
- /**
1088
- * Returns the ProGuard configuration that reflects the current GUI settings.
1089
- */
1090
- private Configuration getProGuardConfiguration()
1091
- {
1092
- Configuration configuration = new Configuration();
1093
-
1094
- // Get the input and output jars and directories.
1095
- configuration.programJars = programPanel.getClassPath();
1096
- configuration.libraryJars = libraryPanel.getClassPath();
1097
-
1098
- List keep = new ArrayList();
1099
-
1100
- // Collect the additional keep options.
1101
- List additionalKeep = additionalKeepPanel.getClassSpecifications();
1102
- if (additionalKeep != null)
1103
- {
1104
- keep.addAll(additionalKeep);
1105
- }
1106
-
1107
- // Collect the additional keep names options.
1108
- List additionalKeepNames = additionalKeepNamesPanel.getClassSpecifications();
1109
- if (additionalKeepNames != null)
1110
- {
1111
- keep.addAll(additionalKeepNames);
1112
- }
1113
-
1114
- // Collect the boilerplate keep options.
1115
- for (int index = 0; index < boilerplateKeep.length; index++)
1116
- {
1117
- if (boilerplateKeepCheckBoxes[index].isSelected())
1118
- {
1119
- keep.add(classSpecification(boilerplateKeep[index],
1120
- boilerplateKeepTextFields[index].getText()));
1121
- }
1122
- }
1123
-
1124
- // Collect the boilerplate keep names options.
1125
- for (int index = 0; index < boilerplateKeepNames.length; index++)
1126
- {
1127
- if (boilerplateKeepNamesCheckBoxes[index].isSelected())
1128
- {
1129
- keep.add(classSpecification(boilerplateKeepNames[index],
1130
- boilerplateKeepNamesTextFields[index].getText()));
1131
- }
1132
- }
1133
-
1134
- // Put the list of keep specifications in the configuration.
1135
- if (keep.size() > 0)
1136
- {
1137
- configuration.keep = keep;
1138
- }
1139
-
1140
-
1141
- // Collect the boilerplate "no side effect methods" options.
1142
- List noSideEffectMethods = new ArrayList();
1143
-
1144
- for (int index = 0; index < boilerplateNoSideEffectMethods.length; index++)
1145
- {
1146
- if (boilerplateNoSideEffectMethodCheckBoxes[index].isSelected())
1147
- {
1148
- noSideEffectMethods.add(boilerplateNoSideEffectMethods[index]);
1149
- }
1150
- }
1151
-
1152
- // Collect the additional "no side effect methods" options.
1153
- List additionalNoSideEffectOptions = additionalNoSideEffectsPanel.getClassSpecifications();
1154
- if (additionalNoSideEffectOptions != null)
1155
- {
1156
- noSideEffectMethods.addAll(additionalNoSideEffectOptions);
1157
- }
1158
-
1159
- // Put the list of "no side effect methods" options in the configuration.
1160
- if (noSideEffectMethods.size() > 0)
1161
- {
1162
- configuration.assumeNoSideEffects = noSideEffectMethods;
1163
- }
1164
-
1165
-
1166
- // Collect the "why are you keeping" options.
1167
- configuration.whyAreYouKeeping = whyAreYouKeepingPanel.getClassSpecifications();
1168
-
1169
-
1170
- // Get the other options.
1171
- configuration.shrink = shrinkCheckBox .isSelected();
1172
- configuration.printUsage = printUsageCheckBox .isSelected() ? new File(printUsageTextField .getText()) : null;
1173
-
1174
- configuration.optimize = optimizeCheckBox .isSelected();
1175
- configuration.allowAccessModification = allowAccessModificationCheckBox .isSelected();
1176
- configuration.mergeInterfacesAggressively = mergeInterfacesAggressivelyCheckBox .isSelected();
1177
- configuration.optimizations = optimizationsTextField.getText().length() > 1 ? ListUtil.commaSeparatedList(optimizationsTextField .getText()) : null;
1178
- configuration.optimizationPasses = ((SpinnerNumberModel)optimizationPassesSpinner.getModel()).getNumber().intValue();
1179
-
1180
- configuration.obfuscate = obfuscateCheckBox .isSelected();
1181
- configuration.printMapping = printMappingCheckBox .isSelected() ? new File(printMappingTextField .getText()) : null;
1182
- configuration.applyMapping = applyMappingCheckBox .isSelected() ? new File(applyMappingTextField .getText()) : null;
1183
- configuration.obfuscationDictionary = obfuscationDictionaryCheckBox .isSelected() ? new File(obfuscationDictionaryTextField .getText()) : null;
1184
- configuration.classObfuscationDictionary = classObfuscationDictionaryCheckBox .isSelected() ? new File(classObfuscationDictionaryTextField .getText()) : null;
1185
- configuration.packageObfuscationDictionary = packageObfuscationDictionaryCheckBox .isSelected() ? new File(packageObfuscationDictionaryTextField .getText()) : null;
1186
- configuration.overloadAggressively = overloadAggressivelyCheckBox .isSelected();
1187
- configuration.useUniqueClassMemberNames = useUniqueClassMemberNamesCheckBox .isSelected();
1188
- configuration.useMixedCaseClassNames = useMixedCaseClassNamesCheckBox .isSelected();
1189
- configuration.keepPackageNames = keepPackageNamesCheckBox .isSelected() ? keepPackageNamesTextField.getText().length() > 0 ? ListUtil.commaSeparatedList(ClassUtil.internalClassName(keepPackageNamesTextField.getText())) : new ArrayList() : null;
1190
- configuration.flattenPackageHierarchy = flattenPackageHierarchyCheckBox .isSelected() ? ClassUtil.internalClassName(flattenPackageHierarchyTextField .getText()) : null;
1191
- configuration.repackageClasses = repackageClassesCheckBox .isSelected() ? ClassUtil.internalClassName(repackageClassesTextField .getText()) : null;
1192
- configuration.keepAttributes = keepAttributesCheckBox .isSelected() ? ListUtil.commaSeparatedList(keepAttributesTextField .getText()) : null;
1193
- configuration.keepParameterNames = keepParameterNamesCheckBox .isSelected();
1194
- configuration.newSourceFileAttribute = newSourceFileAttributeCheckBox .isSelected() ? newSourceFileAttributeTextField .getText() : null;
1195
- configuration.adaptClassStrings = adaptClassStringsCheckBox .isSelected() ? adaptClassStringsTextField.getText().length() > 0 ? ListUtil.commaSeparatedList(ClassUtil.internalClassName(adaptClassStringsTextField.getText())) : new ArrayList() : null;
1196
- configuration.adaptResourceFileNames = adaptResourceFileNamesCheckBox .isSelected() ? ListUtil.commaSeparatedList(adaptResourceFileNamesTextField .getText()) : null;
1197
- configuration.adaptResourceFileContents = adaptResourceFileContentsCheckBox .isSelected() ? ListUtil.commaSeparatedList(adaptResourceFileContentsTextField .getText()) : null;
1198
-
1199
- configuration.preverify = preverifyCheckBox .isSelected();
1200
- configuration.microEdition = microEditionCheckBox .isSelected();
1201
- configuration.targetClassVersion = targetCheckBox .isSelected() ? ClassUtil.internalClassVersion(targetComboBox.getSelectedItem().toString()) : 0;
1202
-
1203
- configuration.verbose = verboseCheckBox .isSelected();
1204
- configuration.note = noteCheckBox .isSelected() ? noteTextField.getText().length() > 0 ? ListUtil.commaSeparatedList(ClassUtil.internalClassName(noteTextField.getText())) : null : new ArrayList();
1205
- configuration.warn = warnCheckBox .isSelected() ? warnTextField.getText().length() > 0 ? ListUtil.commaSeparatedList(ClassUtil.internalClassName(warnTextField.getText())) : null : new ArrayList();
1206
- configuration.ignoreWarnings = ignoreWarningsCheckBox .isSelected();
1207
- configuration.skipNonPublicLibraryClasses = skipNonPublicLibraryClassesCheckBox .isSelected();
1208
- configuration.skipNonPublicLibraryClassMembers = skipNonPublicLibraryClassMembersCheckBox.isSelected();
1209
- configuration.keepDirectories = keepDirectoriesCheckBox .isSelected() ? keepDirectoriesTextField.getText().length() > 0 ? ListUtil.commaSeparatedList(ClassUtil.internalClassName(keepDirectoriesTextField.getText())) : new ArrayList() : null;
1210
- configuration.lastModified = forceProcessingCheckBox .isSelected() ? Long.MAX_VALUE : System.currentTimeMillis();
1211
- configuration.printSeeds = printSeedsCheckBox .isSelected() ? new File(printSeedsTextField .getText()) : null;
1212
- configuration.printConfiguration = printConfigurationCheckBox .isSelected() ? new File(printConfigurationTextField .getText()) : null;
1213
- configuration.dump = dumpCheckBox .isSelected() ? new File(dumpTextField .getText()) : null;
1214
-
1215
- return configuration;
1216
- }
1217
-
1218
-
1219
- /**
1220
- * Looks in the given list for a class specification that is identical to
1221
- * the given template. Returns true if it is found, and removes the matching
1222
- * class specification as a side effect.
1223
- */
1224
- private boolean findClassSpecification(ClassSpecification classSpecificationTemplate,
1225
- List classSpecifications)
1226
- {
1227
- if (classSpecifications == null)
1228
- {
1229
- return false;
1230
- }
1231
-
1232
- for (int index = 0; index < classSpecifications.size(); index++)
1233
- {
1234
- if (classSpecificationTemplate.equals(classSpecifications.get(index)))
1235
- {
1236
- // Remove the matching option as a side effect.
1237
- classSpecifications.remove(index);
1238
-
1239
- return true;
1240
- }
1241
- }
1242
-
1243
- return false;
1244
- }
1245
-
1246
-
1247
- /**
1248
- * Returns the subset of the given list of keep specifications, with
1249
- * matching shrinking flag.
1250
- */
1251
- private List filteredKeepSpecifications(List keepSpecifications,
1252
- boolean allowShrinking)
1253
- {
1254
- List filteredKeepSpecifications = new ArrayList();
1255
-
1256
- for (int index = 0; index < keepSpecifications.size(); index++)
1257
- {
1258
- KeepClassSpecification keepClassSpecification =
1259
- (KeepClassSpecification)keepSpecifications.get(index);
1260
-
1261
- if (keepClassSpecification.allowShrinking == allowShrinking)
1262
- {
1263
- filteredKeepSpecifications.add(keepClassSpecification);
1264
- }
1265
- }
1266
-
1267
- return filteredKeepSpecifications;
1268
- }
1269
-
1270
-
1271
- /**
1272
- * Looks in the given list for keep specifications that match the given
1273
- * template. Returns a comma-separated string of class names from
1274
- * matching keep specifications, and removes the matching keep
1275
- * specifications as a side effect.
1276
- */
1277
- private String findMatchingKeepSpecifications(KeepClassSpecification keepClassSpecificationTemplate,
1278
- List keepSpecifications)
1279
- {
1280
- if (keepSpecifications == null)
1281
- {
1282
- return null;
1283
- }
1284
-
1285
- StringBuffer buffer = null;
1286
-
1287
- for (int index = 0; index < keepSpecifications.size(); index++)
1288
- {
1289
- KeepClassSpecification listedKeepClassSpecification =
1290
- (KeepClassSpecification)keepSpecifications.get(index);
1291
- String className = listedKeepClassSpecification.className;
1292
- keepClassSpecificationTemplate.className = className;
1293
- if (keepClassSpecificationTemplate.equals(listedKeepClassSpecification))
1294
- {
1295
- if (buffer == null)
1296
- {
1297
- buffer = new StringBuffer();
1298
- }
1299
- else
1300
- {
1301
- buffer.append(',');
1302
- }
1303
- buffer.append(className == null ? "*" : ClassUtil.externalClassName(className));
1304
-
1305
- // Remove the matching option as a side effect.
1306
- keepSpecifications.remove(index--);
1307
- }
1308
- }
1309
-
1310
- return buffer == null ? null : buffer.toString();
1311
- }
1312
-
1313
-
1314
- /**
1315
- * Returns a class specification or keep specification, based on the given
1316
- * template and the class name to be filled in.
1317
- */
1318
- private ClassSpecification classSpecification(ClassSpecification classSpecificationTemplate,
1319
- String className)
1320
- {
1321
- // Create a copy of the template.
1322
- ClassSpecification classSpecification =
1323
- (ClassSpecification)classSpecificationTemplate.clone();
1324
-
1325
- // Set the class name in the copy.
1326
- classSpecification.className =
1327
- className.equals("") ||
1328
- className.equals("*") ?
1329
- null :
1330
- ClassUtil.internalClassName(className);
1331
-
1332
- // Return the modified copy.
1333
- return classSpecification;
1334
- }
1335
-
1336
-
1337
- // Methods and internal classes related to actions.
1338
-
1339
- /**
1340
- * Loads the given ProGuard configuration into the GUI.
1341
- */
1342
- private void loadConfiguration(File file)
1343
- {
1344
- // Set the default directory and file in the file choosers.
1345
- configurationChooser.setSelectedFile(file.getAbsoluteFile());
1346
- fileChooser.setCurrentDirectory(file.getAbsoluteFile().getParentFile());
1347
-
1348
- try
1349
- {
1350
- // Parse the configuration file.
1351
- ConfigurationParser parser = new ConfigurationParser(file);
1352
- Configuration configuration = new Configuration();
1353
-
1354
- try
1355
- {
1356
- parser.parse(configuration);
1357
-
1358
- // Let the GUI reflect the configuration.
1359
- setProGuardConfiguration(configuration);
1360
- }
1361
- catch (ParseException ex)
1362
- {
1363
- JOptionPane.showMessageDialog(getContentPane(),
1364
- msg("cantParseConfigurationFile", file.getPath()),
1365
- msg("warning"),
1366
- JOptionPane.ERROR_MESSAGE);
1367
- }
1368
- finally
1369
- {
1370
- parser.close();
1371
- }
1372
- }
1373
- catch (IOException ex)
1374
- {
1375
- JOptionPane.showMessageDialog(getContentPane(),
1376
- msg("cantOpenConfigurationFile", file.getPath()),
1377
- msg("warning"),
1378
- JOptionPane.ERROR_MESSAGE);
1379
- }
1380
- }
1381
-
1382
-
1383
- /**
1384
- * Loads the given ProGuard configuration into the GUI.
1385
- */
1386
- private void loadConfiguration(URL url)
1387
- {
1388
- try
1389
- {
1390
- // Parse the configuration file.
1391
- ConfigurationParser parser = new ConfigurationParser(url);
1392
- Configuration configuration = new Configuration();
1393
-
1394
- try
1395
- {
1396
- parser.parse(configuration);
1397
-
1398
- // Let the GUI reflect the configuration.
1399
- setProGuardConfiguration(configuration);
1400
- }
1401
- catch (ParseException ex)
1402
- {
1403
- JOptionPane.showMessageDialog(getContentPane(),
1404
- msg("cantParseConfigurationFile", url),
1405
- msg("warning"),
1406
- JOptionPane.ERROR_MESSAGE);
1407
- }
1408
- finally
1409
- {
1410
- parser.close();
1411
- }
1412
- }
1413
- catch (IOException ex)
1414
- {
1415
- JOptionPane.showMessageDialog(getContentPane(),
1416
- msg("cantOpenConfigurationFile", url),
1417
- msg("warning"),
1418
- JOptionPane.ERROR_MESSAGE);
1419
- }
1420
- }
1421
-
1422
-
1423
- /**
1424
- * Saves the current ProGuard configuration to the given file.
1425
- */
1426
- private void saveConfiguration(File file)
1427
- {
1428
- try
1429
- {
1430
- // Save the configuration file.
1431
- ConfigurationWriter writer = new ConfigurationWriter(file);
1432
- writer.write(getProGuardConfiguration());
1433
- writer.close();
1434
- }
1435
- catch (Exception ex)
1436
- {
1437
- JOptionPane.showMessageDialog(getContentPane(),
1438
- msg("cantSaveConfigurationFile", file.getPath()),
1439
- msg("warning"),
1440
- JOptionPane.ERROR_MESSAGE);
1441
- }
1442
- }
1443
-
1444
-
1445
- /**
1446
- * Loads the given stack trace into the GUI.
1447
- */
1448
- private void loadStackTrace(File file)
1449
- {
1450
- try
1451
- {
1452
- StringBuffer buffer = new StringBuffer(1024);
1453
-
1454
- Reader reader = new BufferedReader(new FileReader(file));
1455
- try
1456
- {
1457
- while (true)
1458
- {
1459
- int c = reader.read();
1460
- if (c < 0)
1461
- {
1462
- break;
1463
- }
1464
-
1465
- buffer.append(c);
1466
- }
1467
- }
1468
- finally
1469
- {
1470
- reader.close();
1471
- }
1472
-
1473
- // Put the stack trace in the text area.
1474
- stackTraceTextArea.setText(buffer.toString());
1475
- }
1476
- catch (IOException ex)
1477
- {
1478
- JOptionPane.showMessageDialog(getContentPane(),
1479
- msg("cantOpenStackTraceFile", fileName(file)),
1480
- msg("warning"),
1481
- JOptionPane.ERROR_MESSAGE);
1482
- }
1483
- }
1484
-
1485
-
1486
- /**
1487
- * This ActionListener loads a ProGuard configuration file and initializes
1488
- * the GUI accordingly.
1489
- */
1490
- private class MyLoadConfigurationActionListener implements ActionListener
1491
- {
1492
- public void actionPerformed(ActionEvent e)
1493
- {
1494
- configurationChooser.setDialogTitle(msg("selectConfigurationFile"));
1495
-
1496
- int returnValue = configurationChooser.showOpenDialog(ProGuardGUI.this);
1497
- if (returnValue == JFileChooser.APPROVE_OPTION)
1498
- {
1499
- loadConfiguration(configurationChooser.getSelectedFile());
1500
- }
1501
- }
1502
- }
1503
-
1504
-
1505
- /**
1506
- * This ActionListener saves a ProGuard configuration file based on the
1507
- * current GUI settings.
1508
- */
1509
- private class MySaveConfigurationActionListener implements ActionListener
1510
- {
1511
- public void actionPerformed(ActionEvent e)
1512
- {
1513
- configurationChooser.setDialogTitle(msg("saveConfigurationFile"));
1514
-
1515
- int returnVal = configurationChooser.showSaveDialog(ProGuardGUI.this);
1516
- if (returnVal == JFileChooser.APPROVE_OPTION)
1517
- {
1518
- saveConfiguration(configurationChooser.getSelectedFile());
1519
- }
1520
- }
1521
- }
1522
-
1523
-
1524
- /**
1525
- * This ActionListener displays the ProGuard configuration specified by the
1526
- * current GUI settings.
1527
- */
1528
- private class MyViewConfigurationActionListener implements ActionListener
1529
- {
1530
- public void actionPerformed(ActionEvent e)
1531
- {
1532
- // Make sure System.out has not been redirected yet.
1533
- if (!systemOutRedirected)
1534
- {
1535
- consoleTextArea.setText("");
1536
-
1537
- TextAreaOutputStream outputStream =
1538
- new TextAreaOutputStream(consoleTextArea);
1539
-
1540
- try
1541
- {
1542
- // TODO: write out relative path names and path names with system properties.
1543
-
1544
- // Write the configuration.
1545
- ConfigurationWriter writer = new ConfigurationWriter(outputStream);
1546
- try
1547
- {
1548
- writer.write(getProGuardConfiguration());
1549
- }
1550
- finally
1551
- {
1552
- writer.close();
1553
- }
1554
- }
1555
- catch (IOException ex)
1556
- {
1557
- // This shouldn't happen.
1558
- }
1559
-
1560
- // Scroll to the top of the configuration.
1561
- consoleTextArea.setCaretPosition(0);
1562
- }
1563
- }
1564
- }
1565
-
1566
-
1567
- /**
1568
- * This ActionListener executes ProGuard based on the current GUI settings.
1569
- */
1570
- private class MyProcessActionListener implements ActionListener
1571
- {
1572
- public void actionPerformed(ActionEvent e)
1573
- {
1574
- // Make sure System.out has not been redirected yet.
1575
- if (!systemOutRedirected)
1576
- {
1577
- systemOutRedirected = true;
1578
-
1579
- // Get the informational configuration file name.
1580
- File configurationFile = configurationChooser.getSelectedFile();
1581
- String configurationFileName = configurationFile != null ?
1582
- configurationFile.getName() :
1583
- msg("sampleConfigurationFileName");
1584
-
1585
- // Create the ProGuard thread.
1586
- Thread proGuardThread =
1587
- new Thread(new ProGuardRunnable(consoleTextArea,
1588
- getProGuardConfiguration(),
1589
- configurationFileName));
1590
-
1591
- // Run it.
1592
- proGuardThread.start();
1593
- }
1594
- }
1595
- }
1596
-
1597
-
1598
- /**
1599
- * This ActionListener loads an obfuscated stack trace from a file and puts
1600
- * it in the proper text area.
1601
- */
1602
- private class MyLoadStackTraceActionListener implements ActionListener
1603
- {
1604
- public void actionPerformed(ActionEvent e)
1605
- {
1606
- fileChooser.setDialogTitle(msg("selectStackTraceFile"));
1607
- fileChooser.setSelectedFile(null);
1608
-
1609
- int returnValue = fileChooser.showOpenDialog(ProGuardGUI.this);
1610
- if (returnValue == JFileChooser.APPROVE_OPTION)
1611
- {
1612
-
1613
- loadStackTrace(fileChooser.getSelectedFile());
1614
- }
1615
- }
1616
- }
1617
-
1618
-
1619
- /**
1620
- * This ActionListener executes ReTrace based on the current GUI settings.
1621
- */
1622
- private class MyReTraceActionListener implements ActionListener
1623
- {
1624
- public void actionPerformed(ActionEvent e)
1625
- {
1626
- // Make sure System.out has not been redirected yet.
1627
- if (!systemOutRedirected)
1628
- {
1629
- systemOutRedirected = true;
1630
-
1631
- boolean verbose = reTraceVerboseCheckBox.isSelected();
1632
- File retraceMappingFile = new File(reTraceMappingTextField.getText());
1633
- String stackTrace = stackTraceTextArea.getText();
1634
-
1635
- // Create the ReTrace runnable.
1636
- Runnable reTraceRunnable = new ReTraceRunnable(reTraceTextArea,
1637
- verbose,
1638
- retraceMappingFile,
1639
- stackTrace);
1640
-
1641
- // Run it in this thread, because it won't take long anyway.
1642
- reTraceRunnable.run();
1643
- }
1644
- }
1645
- }
1646
-
1647
-
1648
- // Small utility methods.
1649
-
1650
- /**
1651
- * Returns the canonical file name for the given file, or the empty string
1652
- * if the file name is empty.
1653
- */
1654
- private String fileName(File file)
1655
- {
1656
- if (isFile(file))
1657
- {
1658
- try
1659
- {
1660
- return file.getCanonicalPath();
1661
- }
1662
- catch (IOException ex)
1663
- {
1664
- return file.getPath();
1665
- }
1666
- }
1667
- else
1668
- {
1669
- return "";
1670
- }
1671
- }
1672
-
1673
-
1674
- /**
1675
- * Returns whether the given file is actually a file, or just a placeholder
1676
- * for the standard output.
1677
- */
1678
- private boolean isFile(File file)
1679
- {
1680
- return file != null &&
1681
- file.getPath().length() > 0;
1682
- }
1683
-
1684
-
1685
- /**
1686
- * Attaches the tool tip from the GUI resources that corresponds to the
1687
- * given key, to the given component.
1688
- */
1689
- private static JComponent tip(JComponent component, String messageKey)
1690
- {
1691
- component.setToolTipText(msg(messageKey));
1692
-
1693
- return component;
1694
- }
1695
-
1696
-
1697
- /**
1698
- * Returns the message from the GUI resources that corresponds to the given
1699
- * key.
1700
- */
1701
- private static String msg(String messageKey)
1702
- {
1703
- return GUIResources.getMessage(messageKey);
1704
- }
1705
-
1706
-
1707
- /**
1708
- * Returns the message from the GUI resources that corresponds to the given
1709
- * key and argument.
1710
- */
1711
- private String msg(String messageKey,
1712
- Object messageArgument)
1713
- {
1714
- return GUIResources.getMessage(messageKey, new Object[] {messageArgument});
1715
- }
1716
-
1717
-
1718
- /**
1719
- * The main method for the ProGuard GUI.
1720
- */
1721
- public static void main(final String[] args)
1722
- {
1723
- try
1724
- {
1725
- SwingUtil.invokeAndWait(new Runnable()
1726
- {
1727
- public void run()
1728
- {
1729
- try
1730
- {
1731
- ProGuardGUI gui = new ProGuardGUI();
1732
- gui.pack();
1733
-
1734
- Dimension screenSize = Toolkit.getDefaultToolkit().getScreenSize();
1735
- Dimension guiSize = gui.getSize();
1736
- gui.setLocation((screenSize.width - guiSize.width) / 2,
1737
- (screenSize.height - guiSize.height) / 2);
1738
- gui.show();
1739
-
1740
- // Start the splash animation, unless specified otherwise.
1741
- int argIndex = 0;
1742
- if (argIndex < args.length &&
1743
- NO_SPLASH_OPTION.startsWith(args[argIndex]))
1744
- {
1745
- gui.skipSplash();
1746
- argIndex++;
1747
- }
1748
- else
1749
- {
1750
- gui.startSplash();
1751
- }
1752
-
1753
- // Load an initial configuration, if specified.
1754
- if (argIndex < args.length)
1755
- {
1756
- gui.loadConfiguration(new File(args[argIndex]));
1757
- argIndex++;
1758
- }
1759
-
1760
- if (argIndex < args.length)
1761
- {
1762
- System.out.println(gui.getClass().getName() + ": ignoring extra arguments [" + args[argIndex] + "...]");
1763
- }
1764
- }
1765
- catch (Exception e)
1766
- {
1767
- System.out.println("Internal problem starting the ProGuard GUI (" + e.getMessage() + ")");
1768
- }
1769
- }
1770
- });
1771
- }
1772
- catch (Exception e)
1773
- {
1774
- System.out.println("Internal problem starting the ProGuard GUI (" + e.getMessage() + ")");
1775
- }
1776
- }
1777
- }