MemberSpecificationDialog.java revision 2270795fbe0b277bfd49f40950ecaa78583175cc
1b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato/* 2b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato * ProGuard -- shrinking, optimization, obfuscation, and preverification 3b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato * of Java bytecode. 4b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato * 52270795fbe0b277bfd49f40950ecaa78583175ccBrian Carlstrom * Copyright (c) 2002-2014 Eric Lafortune (eric@graphics.cornell.edu) 6b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato * 7b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato * This program is free software; you can redistribute it and/or modify it 8b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato * under the terms of the GNU General Public License as published by the Free 9b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato * Software Foundation; either version 2 of the License, or (at your option) 10b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato * any later version. 11b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato * 12b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato * This program is distributed in the hope that it will be useful, but WITHOUT 13b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or 14b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for 15b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato * more details. 16b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato * 17b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato * You should have received a copy of the GNU General Public License along 18b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato * with this program; if not, write to the Free Software Foundation, Inc., 19b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato * 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA 20b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato */ 21b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onoratopackage proguard.gui; 22b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato 23b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onoratoimport proguard.MemberSpecification; 242270795fbe0b277bfd49f40950ecaa78583175ccBrian Carlstromimport proguard.classfile.*; 25b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onoratoimport proguard.classfile.util.ClassUtil; 26b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onoratoimport proguard.util.ListUtil; 27b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato 28b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onoratoimport javax.swing.*; 29b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onoratoimport javax.swing.border.*; 30b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onoratoimport java.awt.*; 31b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onoratoimport java.awt.event.*; 32b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato 33b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato/** 34b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato * This <code>JDialog</code> allows the user to enter a String. 35b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato * 36b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato * @author Eric Lafortune 37b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato */ 38b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onoratofinal class MemberSpecificationDialog extends JDialog 39b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato{ 40b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato /** 41b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato * Return value if the dialog is canceled (with the Cancel button or by 42b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato * closing the dialog window). 43b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato */ 44b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato public static final int CANCEL_OPTION = 1; 45b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato 46b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato /** 47b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato * Return value if the dialog is approved (with the Ok button). 48b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato */ 49b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato public static final int APPROVE_OPTION = 0; 50b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato 51b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato 52b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato private final boolean isField; 53b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato 54b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato private final JRadioButton[] publicRadioButtons; 55b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato private final JRadioButton[] privateRadioButtons; 56b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato private final JRadioButton[] protectedRadioButtons; 57b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato private final JRadioButton[] staticRadioButtons; 58b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato private final JRadioButton[] finalRadioButtons; 59b9cc48a43ed984587c939d02fba5316bf5c0df6eYing Wang private final JRadioButton[] syntheticRadioButtons; 60b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato 61b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato private JRadioButton[] volatileRadioButtons; 62b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato private JRadioButton[] transientRadioButtons; 63b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato 64b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato private JRadioButton[] synchronizedRadioButtons; 65b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato private JRadioButton[] nativeRadioButtons; 66b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato private JRadioButton[] abstractRadioButtons; 67b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato private JRadioButton[] strictRadioButtons; 68b9cc48a43ed984587c939d02fba5316bf5c0df6eYing Wang private JRadioButton[] bridgeRadioButtons; 69b9cc48a43ed984587c939d02fba5316bf5c0df6eYing Wang private JRadioButton[] varargsRadioButtons; 70b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato 71b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato private final JTextField annotationTypeTextField = new JTextField(20); 72b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato private final JTextField nameTextField = new JTextField(20); 73b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato private final JTextField typeTextField = new JTextField(20); 74b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato private final JTextField argumentTypesTextField = new JTextField(20); 75b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato 76b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato private int returnValue; 77b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato 78b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato 79b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato public MemberSpecificationDialog(JDialog owner, boolean isField) 80b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato { 81b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato super(owner, msg(isField ? "specifyFields" : "specifyMethods"), true); 82b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato setResizable(true); 83b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato 84b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato // Create some constraints that can be reused. 85b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato GridBagConstraints constraints = new GridBagConstraints(); 86b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato constraints.anchor = GridBagConstraints.WEST; 87b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato constraints.insets = new Insets(1, 2, 1, 2); 88b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato 89b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato GridBagConstraints constraintsStretch = new GridBagConstraints(); 90b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato constraintsStretch.fill = GridBagConstraints.HORIZONTAL; 91b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato constraintsStretch.weightx = 1.0; 92b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato constraintsStretch.anchor = GridBagConstraints.WEST; 93b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato constraintsStretch.insets = constraints.insets; 94b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato 95b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato GridBagConstraints constraintsLast = new GridBagConstraints(); 96b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato constraintsLast.gridwidth = GridBagConstraints.REMAINDER; 97b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato constraintsLast.anchor = GridBagConstraints.WEST; 98b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato constraintsLast.insets = constraints.insets; 99b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato 100b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato GridBagConstraints constraintsLastStretch = new GridBagConstraints(); 101b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato constraintsLastStretch.gridwidth = GridBagConstraints.REMAINDER; 102b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato constraintsLastStretch.fill = GridBagConstraints.HORIZONTAL; 103b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato constraintsLastStretch.weightx = 1.0; 104b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato constraintsLastStretch.anchor = GridBagConstraints.WEST; 105b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato constraintsLastStretch.insets = constraints.insets; 106b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato 107b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato GridBagConstraints panelConstraints = new GridBagConstraints(); 108b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato panelConstraints.gridwidth = GridBagConstraints.REMAINDER; 109b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato panelConstraints.fill = GridBagConstraints.HORIZONTAL; 110b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato panelConstraints.weightx = 1.0; 111b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato panelConstraints.weighty = 0.0; 112b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato panelConstraints.anchor = GridBagConstraints.NORTHWEST; 113b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato panelConstraints.insets = constraints.insets; 114b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato 115b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato GridBagConstraints stretchPanelConstraints = new GridBagConstraints(); 116b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato stretchPanelConstraints.gridwidth = GridBagConstraints.REMAINDER; 117b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato stretchPanelConstraints.fill = GridBagConstraints.BOTH; 118b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato stretchPanelConstraints.weightx = 1.0; 119b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato stretchPanelConstraints.weighty = 1.0; 120b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato stretchPanelConstraints.anchor = GridBagConstraints.NORTHWEST; 121b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato stretchPanelConstraints.insets = constraints.insets; 122b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato 123b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato GridBagConstraints labelConstraints = new GridBagConstraints(); 124b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato labelConstraints.anchor = GridBagConstraints.CENTER; 125b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato labelConstraints.insets = new Insets(2, 10, 2, 10); 126b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato 127b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato GridBagConstraints lastLabelConstraints = new GridBagConstraints(); 128b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato lastLabelConstraints.gridwidth = GridBagConstraints.REMAINDER; 129b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato lastLabelConstraints.anchor = GridBagConstraints.CENTER; 130b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato lastLabelConstraints.insets = labelConstraints.insets; 131b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato 132b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato GridBagConstraints advancedButtonConstraints = new GridBagConstraints(); 133b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato advancedButtonConstraints.weightx = 1.0; 134b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato advancedButtonConstraints.weighty = 1.0; 135b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato advancedButtonConstraints.anchor = GridBagConstraints.SOUTHWEST; 136b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato advancedButtonConstraints.insets = new Insets(4, 4, 8, 4); 137b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato 138b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato GridBagConstraints okButtonConstraints = new GridBagConstraints(); 139b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato okButtonConstraints.weightx = 1.0; 140b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato okButtonConstraints.weighty = 1.0; 141b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato okButtonConstraints.anchor = GridBagConstraints.SOUTHEAST; 142b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato okButtonConstraints.insets = advancedButtonConstraints.insets; 143b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato 144b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato GridBagConstraints cancelButtonConstraints = new GridBagConstraints(); 145b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato cancelButtonConstraints.gridwidth = GridBagConstraints.REMAINDER; 146b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato cancelButtonConstraints.weighty = 1.0; 147b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato cancelButtonConstraints.anchor = GridBagConstraints.SOUTHEAST; 148b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato cancelButtonConstraints.insets = okButtonConstraints.insets; 149b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato 150b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato GridBagLayout layout = new GridBagLayout(); 151b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato 152b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato Border etchedBorder = BorderFactory.createEtchedBorder(EtchedBorder.RAISED); 153b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato 154b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato this.isField = isField; 155b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato 156b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato // Create the access panel. 157b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato JPanel accessPanel = new JPanel(layout); 158b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato accessPanel.setBorder(BorderFactory.createTitledBorder(etchedBorder, 159b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato msg("access"))); 160b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato 161b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato accessPanel.add(Box.createGlue(), labelConstraints); 162b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato accessPanel.add(tip(new JLabel(msg("required")), "requiredTip"), labelConstraints); 163b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato accessPanel.add(tip(new JLabel(msg("not")), "notTip"), labelConstraints); 164b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato accessPanel.add(tip(new JLabel(msg("dontCare")), "dontCareTip"), labelConstraints); 165b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato accessPanel.add(Box.createGlue(), constraintsLastStretch); 166b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato 167b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato publicRadioButtons = addRadioButtonTriplet("Public", accessPanel); 168b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato privateRadioButtons = addRadioButtonTriplet("Private", accessPanel); 169b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato protectedRadioButtons = addRadioButtonTriplet("Protected", accessPanel); 170b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato staticRadioButtons = addRadioButtonTriplet("Static", accessPanel); 171b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato finalRadioButtons = addRadioButtonTriplet("Final", accessPanel); 172b9cc48a43ed984587c939d02fba5316bf5c0df6eYing Wang syntheticRadioButtons = addRadioButtonTriplet("Synthetic", accessPanel); 173b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato 174b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato if (isField) 175b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato { 176b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato volatileRadioButtons = addRadioButtonTriplet("Volatile", accessPanel); 177b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato transientRadioButtons = addRadioButtonTriplet("Transient", accessPanel); 178b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato } 179b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato else 180b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato { 181b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato synchronizedRadioButtons = addRadioButtonTriplet("Synchronized", accessPanel); 182b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato nativeRadioButtons = addRadioButtonTriplet("Native", accessPanel); 183b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato abstractRadioButtons = addRadioButtonTriplet("Abstract", accessPanel); 184b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato strictRadioButtons = addRadioButtonTriplet("Strict", accessPanel); 185b9cc48a43ed984587c939d02fba5316bf5c0df6eYing Wang bridgeRadioButtons = addRadioButtonTriplet("Bridge", accessPanel); 186b9cc48a43ed984587c939d02fba5316bf5c0df6eYing Wang varargsRadioButtons = addRadioButtonTriplet("Varargs", accessPanel); 187b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato } 188b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato 189b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato // Create the type panel. 190b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato JPanel typePanel = new JPanel(layout); 191b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato typePanel.setBorder(BorderFactory.createTitledBorder(etchedBorder, 192b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato msg(isField ? "fieldType" : 193b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato "returnType"))); 194b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato 195b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato typePanel.add(tip(typeTextField, "typeTip"), constraintsLastStretch); 196b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato 197b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato // Create the annotation type panel. 198b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato final JPanel annotationTypePanel = new JPanel(layout); 199b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato annotationTypePanel.setBorder(BorderFactory.createTitledBorder(etchedBorder, 200b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato msg("annotation"))); 201b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato 202b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato annotationTypePanel.add(tip(annotationTypeTextField, "classNameTip"), constraintsLastStretch); 203b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato 204b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato // Create the name panel. 205b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato JPanel namePanel = new JPanel(layout); 206b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato namePanel.setBorder(BorderFactory.createTitledBorder(etchedBorder, 207b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato msg("name"))); 208b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato 209b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato namePanel.add(tip(nameTextField, isField ? "fieldNameTip" : 210b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato "methodNameTip"), constraintsLastStretch); 211b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato 212b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato // Create the arguments panel. 213b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato JPanel argumentsPanel = new JPanel(layout); 214b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato argumentsPanel.setBorder(BorderFactory.createTitledBorder(etchedBorder, 215b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato msg("argumentTypes"))); 216b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato 217b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato argumentsPanel.add(tip(argumentTypesTextField, "argumentTypes2Tip"), constraintsLastStretch); 218b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato 219b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato // Create the Advanced button. 220b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato final JButton advancedButton = new JButton(msg("basic")); 221b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato advancedButton.addActionListener(new ActionListener() 222b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato { 223b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato public void actionPerformed(ActionEvent e) 224b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato { 225b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato boolean visible = !annotationTypePanel.isVisible(); 226b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato 227b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato annotationTypePanel.setVisible(visible); 228b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato 229b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato advancedButton.setText(msg(visible ? "basic" : "advanced")); 230b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato 231b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato pack(); 232b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato } 233b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato }); 234b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato advancedButton.doClick(); 235b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato 236b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato // Create the Ok button. 237b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato JButton okButton = new JButton(msg("ok")); 238b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato okButton.addActionListener(new ActionListener() 239b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato { 240b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato public void actionPerformed(ActionEvent e) 241b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato { 242b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato returnValue = APPROVE_OPTION; 243b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato hide(); 244b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato } 245b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato }); 246b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato 247b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato // Create the Cancel button. 248b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato JButton cancelButton = new JButton(msg("cancel")); 249b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato cancelButton.addActionListener(new ActionListener() 250b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato { 251b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato public void actionPerformed(ActionEvent e) 252b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato { 253b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato hide(); 254b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato } 255b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato }); 256b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato 257b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato // Add all panels to the main panel. 258b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato JPanel mainPanel = new JPanel(layout); 259b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato mainPanel.add(tip(accessPanel, "accessTip"), panelConstraints); 260b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato mainPanel.add(tip(annotationTypePanel, "annotationTip"), panelConstraints); 261b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato mainPanel.add(tip(typePanel, isField ? "fieldTypeTip" : 262b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato "returnTypeTip"), panelConstraints); 263b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato mainPanel.add(tip(namePanel, "nameTip"), panelConstraints); 264b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato 265b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato if (!isField) 266b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato { 267b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato mainPanel.add(tip(argumentsPanel, "argumentTypesTip"), panelConstraints); 268b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato } 269b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato 270b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato mainPanel.add(tip(advancedButton, "advancedTip"), advancedButtonConstraints); 271b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato mainPanel.add(okButton, okButtonConstraints); 272b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato mainPanel.add(cancelButton, cancelButtonConstraints); 273b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato 274b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato getContentPane().add(new JScrollPane(mainPanel)); 275b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato } 276b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato 277b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato 278b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato /** 279b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato * Adds a JLabel and three JRadioButton instances in a ButtonGroup to the 280b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato * given panel with a GridBagLayout, and returns the buttons in an array. 281b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato */ 282b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato private JRadioButton[] addRadioButtonTriplet(String labelText, 283b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato JPanel panel) 284b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato { 285b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato GridBagConstraints labelConstraints = new GridBagConstraints(); 286b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato labelConstraints.anchor = GridBagConstraints.WEST; 287b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato labelConstraints.insets = new Insets(2, 10, 2, 10); 288b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato 289b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato GridBagConstraints buttonConstraints = new GridBagConstraints(); 290b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato buttonConstraints.insets = labelConstraints.insets; 291b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato 292b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato GridBagConstraints lastGlueConstraints = new GridBagConstraints(); 293b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato lastGlueConstraints.gridwidth = GridBagConstraints.REMAINDER; 294b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato lastGlueConstraints.weightx = 1.0; 295b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato 296b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato // Create the radio buttons. 297b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato JRadioButton radioButton0 = new JRadioButton(); 298b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato JRadioButton radioButton1 = new JRadioButton(); 299b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato JRadioButton radioButton2 = new JRadioButton(); 300b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato 301b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato // Put them in a button group. 302b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato ButtonGroup buttonGroup = new ButtonGroup(); 303b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato buttonGroup.add(radioButton0); 304b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato buttonGroup.add(radioButton1); 305b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato buttonGroup.add(radioButton2); 306b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato 307b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato // Add the label and the buttons to the panel. 308b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato panel.add(new JLabel(labelText), labelConstraints); 309b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato panel.add(radioButton0, buttonConstraints); 310b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato panel.add(radioButton1, buttonConstraints); 311b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato panel.add(radioButton2, buttonConstraints); 312b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato panel.add(Box.createGlue(), lastGlueConstraints); 313b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato 314b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato return new JRadioButton[] 315b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato { 316b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato radioButton0, 317b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato radioButton1, 318b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato radioButton2 319b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato }; 320b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato } 321b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato 322b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato 323b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato /** 324b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato * Sets the MemberSpecification to be represented in this dialog. 325b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato */ 326b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato public void setMemberSpecification(MemberSpecification memberSpecification) 327b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato { 328b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato String annotationType = memberSpecification.annotationType; 329b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato String name = memberSpecification.name; 330b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato String descriptor = memberSpecification.descriptor; 331b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato 332b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato // Set the class name text fields. 333b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato annotationTypeTextField.setText(annotationType == null ? "" : ClassUtil.externalType(annotationType)); 334b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato 335b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato // Set the access radio buttons. 3362270795fbe0b277bfd49f40950ecaa78583175ccBrian Carlstrom setMemberSpecificationRadioButtons(memberSpecification, ClassConstants.ACC_PUBLIC, publicRadioButtons); 3372270795fbe0b277bfd49f40950ecaa78583175ccBrian Carlstrom setMemberSpecificationRadioButtons(memberSpecification, ClassConstants.ACC_PRIVATE, privateRadioButtons); 3382270795fbe0b277bfd49f40950ecaa78583175ccBrian Carlstrom setMemberSpecificationRadioButtons(memberSpecification, ClassConstants.ACC_PROTECTED, protectedRadioButtons); 3392270795fbe0b277bfd49f40950ecaa78583175ccBrian Carlstrom setMemberSpecificationRadioButtons(memberSpecification, ClassConstants.ACC_STATIC, staticRadioButtons); 3402270795fbe0b277bfd49f40950ecaa78583175ccBrian Carlstrom setMemberSpecificationRadioButtons(memberSpecification, ClassConstants.ACC_FINAL, finalRadioButtons); 3412270795fbe0b277bfd49f40950ecaa78583175ccBrian Carlstrom setMemberSpecificationRadioButtons(memberSpecification, ClassConstants.ACC_SYNTHETIC, syntheticRadioButtons); 3422270795fbe0b277bfd49f40950ecaa78583175ccBrian Carlstrom setMemberSpecificationRadioButtons(memberSpecification, ClassConstants.ACC_VOLATILE, volatileRadioButtons); 3432270795fbe0b277bfd49f40950ecaa78583175ccBrian Carlstrom setMemberSpecificationRadioButtons(memberSpecification, ClassConstants.ACC_TRANSIENT, transientRadioButtons); 3442270795fbe0b277bfd49f40950ecaa78583175ccBrian Carlstrom setMemberSpecificationRadioButtons(memberSpecification, ClassConstants.ACC_SYNCHRONIZED, synchronizedRadioButtons); 3452270795fbe0b277bfd49f40950ecaa78583175ccBrian Carlstrom setMemberSpecificationRadioButtons(memberSpecification, ClassConstants.ACC_NATIVE, nativeRadioButtons); 3462270795fbe0b277bfd49f40950ecaa78583175ccBrian Carlstrom setMemberSpecificationRadioButtons(memberSpecification, ClassConstants.ACC_ABSTRACT, abstractRadioButtons); 3472270795fbe0b277bfd49f40950ecaa78583175ccBrian Carlstrom setMemberSpecificationRadioButtons(memberSpecification, ClassConstants.ACC_STRICT, strictRadioButtons); 3482270795fbe0b277bfd49f40950ecaa78583175ccBrian Carlstrom setMemberSpecificationRadioButtons(memberSpecification, ClassConstants.ACC_BRIDGE, bridgeRadioButtons); 3492270795fbe0b277bfd49f40950ecaa78583175ccBrian Carlstrom setMemberSpecificationRadioButtons(memberSpecification, ClassConstants.ACC_VARARGS, varargsRadioButtons); 350b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato 351b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato // Set the class name text fields. 352b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato nameTextField.setText(name == null ? "*" : name); 353b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato 354b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato if (isField) 355b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato { 356b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato typeTextField .setText(descriptor == null ? "***" : ClassUtil.externalType(descriptor)); 357b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato } 358b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato else 359b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato { 360b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato typeTextField .setText(descriptor == null ? "***" : ClassUtil.externalMethodReturnType(descriptor)); 361b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato argumentTypesTextField.setText(descriptor == null ? "..." : ClassUtil.externalMethodArguments(descriptor)); 362b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato } 363b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato } 364b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato 365b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato 366b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato /** 367b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato * Returns the MemberSpecification currently represented in this dialog. 368b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato */ 369b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato public MemberSpecification getMemberSpecification() 370b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato { 371b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato String annotationType = annotationTypeTextField.getText(); 372b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato String name = nameTextField.getText(); 373b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato String type = typeTextField.getText(); 374b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato String arguments = argumentTypesTextField.getText(); 375b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato 376b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato // Convert all class member specifications into the internal format. 377b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato annotationType = 378b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato annotationType.equals("") || 379b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato annotationType.equals("***") ? null : ClassUtil.internalType(annotationType); 380b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato 381b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato if (name.equals("") || 382b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato name.equals("*")) 383b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato { 384b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato name = null; 385b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato } 386b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato 387b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato if (isField) 388b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato { 389b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato type = 390b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato type.equals("") || 391b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato type.equals("***") ? null : ClassUtil.internalType(type); 392b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato } 393b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato else 394b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato { 395b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato if (type.equals("")) 396b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato { 3972270795fbe0b277bfd49f40950ecaa78583175ccBrian Carlstrom type = JavaConstants.TYPE_VOID; 398b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato } 399b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato 400b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato type = 401b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato type .equals("***") && 402b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato arguments.equals("...") ? null : 403b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato ClassUtil.internalMethodDescriptor(type, ListUtil.commaSeparatedList(arguments)); 404b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato } 405b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato 406b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato MemberSpecification memberSpecification = 407b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato new MemberSpecification(0, 0, annotationType, name, type); 408b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato 409b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato // Also get the access radio button settings. 4102270795fbe0b277bfd49f40950ecaa78583175ccBrian Carlstrom getMemberSpecificationRadioButtons(memberSpecification, ClassConstants.ACC_PUBLIC, publicRadioButtons); 4112270795fbe0b277bfd49f40950ecaa78583175ccBrian Carlstrom getMemberSpecificationRadioButtons(memberSpecification, ClassConstants.ACC_PRIVATE, privateRadioButtons); 4122270795fbe0b277bfd49f40950ecaa78583175ccBrian Carlstrom getMemberSpecificationRadioButtons(memberSpecification, ClassConstants.ACC_PROTECTED, protectedRadioButtons); 4132270795fbe0b277bfd49f40950ecaa78583175ccBrian Carlstrom getMemberSpecificationRadioButtons(memberSpecification, ClassConstants.ACC_STATIC, staticRadioButtons); 4142270795fbe0b277bfd49f40950ecaa78583175ccBrian Carlstrom getMemberSpecificationRadioButtons(memberSpecification, ClassConstants.ACC_FINAL, finalRadioButtons); 4152270795fbe0b277bfd49f40950ecaa78583175ccBrian Carlstrom getMemberSpecificationRadioButtons(memberSpecification, ClassConstants.ACC_SYNTHETIC, syntheticRadioButtons); 4162270795fbe0b277bfd49f40950ecaa78583175ccBrian Carlstrom getMemberSpecificationRadioButtons(memberSpecification, ClassConstants.ACC_VOLATILE, volatileRadioButtons); 4172270795fbe0b277bfd49f40950ecaa78583175ccBrian Carlstrom getMemberSpecificationRadioButtons(memberSpecification, ClassConstants.ACC_TRANSIENT, transientRadioButtons); 4182270795fbe0b277bfd49f40950ecaa78583175ccBrian Carlstrom getMemberSpecificationRadioButtons(memberSpecification, ClassConstants.ACC_SYNCHRONIZED, synchronizedRadioButtons); 4192270795fbe0b277bfd49f40950ecaa78583175ccBrian Carlstrom getMemberSpecificationRadioButtons(memberSpecification, ClassConstants.ACC_NATIVE, nativeRadioButtons); 4202270795fbe0b277bfd49f40950ecaa78583175ccBrian Carlstrom getMemberSpecificationRadioButtons(memberSpecification, ClassConstants.ACC_ABSTRACT, abstractRadioButtons); 4212270795fbe0b277bfd49f40950ecaa78583175ccBrian Carlstrom getMemberSpecificationRadioButtons(memberSpecification, ClassConstants.ACC_STRICT, strictRadioButtons); 4222270795fbe0b277bfd49f40950ecaa78583175ccBrian Carlstrom getMemberSpecificationRadioButtons(memberSpecification, ClassConstants.ACC_BRIDGE, bridgeRadioButtons); 4232270795fbe0b277bfd49f40950ecaa78583175ccBrian Carlstrom getMemberSpecificationRadioButtons(memberSpecification, ClassConstants.ACC_VARARGS, varargsRadioButtons); 424b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato 425b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato return memberSpecification; 426b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato } 427b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato 428b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato 429b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato /** 430b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato * Shows this dialog. This method only returns when the dialog is closed. 431b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato * 432b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato * @return <code>CANCEL_OPTION</code> or <code>APPROVE_OPTION</code>, 433b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato * depending on the choice of the user. 434b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato */ 435b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato public int showDialog() 436b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato { 437b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato returnValue = CANCEL_OPTION; 438b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato 439b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato // Open the dialog in the right place, then wait for it to be closed, 440b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato // one way or another. 441b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato pack(); 442b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato setLocationRelativeTo(getOwner()); 443b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato show(); 444b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato 445b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato return returnValue; 446b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato } 447b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato 448b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato 449b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato /** 450b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato * Sets the appropriate radio button of a given triplet, based on the access 451b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato * flags of the given keep option. 452b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato */ 453b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato private void setMemberSpecificationRadioButtons(MemberSpecification memberSpecification, 454b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato int flag, 455b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato JRadioButton[] radioButtons) 456b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato { 457b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato if (radioButtons != null) 458b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato { 459b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato int index = (memberSpecification.requiredSetAccessFlags & flag) != 0 ? 0 : 460b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato (memberSpecification.requiredUnsetAccessFlags & flag) != 0 ? 1 : 461b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato 2; 462b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato radioButtons[index].setSelected(true); 463b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato } 464b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato } 465b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato 466b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato 467b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato /** 468b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato * Updates the access flag of the given keep option, based on the given radio 469b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato * button triplet. 470b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato */ 471b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato private void getMemberSpecificationRadioButtons(MemberSpecification memberSpecification, 472b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato int flag, 473b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato JRadioButton[] radioButtons) 474b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato { 475b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato if (radioButtons != null) 476b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato { 477b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato if (radioButtons[0].isSelected()) 478b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato { 479b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato memberSpecification.requiredSetAccessFlags |= flag; 480b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato } 481b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato else if (radioButtons[1].isSelected()) 482b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato { 483b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato memberSpecification.requiredUnsetAccessFlags |= flag; 484b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato } 485b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato } 486b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato } 487b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato 488b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato 489b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato /** 490b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato * Attaches the tool tip from the GUI resources that corresponds to the 491b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato * given key, to the given component. 492b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato */ 493b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato private static JComponent tip(JComponent component, String messageKey) 494b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato { 495b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato component.setToolTipText(msg(messageKey)); 496b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato 497b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato return component; 498b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato } 499b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato 500b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato 501b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato /** 502b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato * Returns the message from the GUI resources that corresponds to the given 503b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato * key. 504b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato */ 505b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato private static String msg(String messageKey) 506b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato { 507b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato return GUIResources.getMessage(messageKey); 508b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato } 509b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato} 510