001: /*
002: * ====================================================================
003: * The JRefactory License, Version 1.0
004: *
005: * Copyright (c) 2001 JRefactory. All rights reserved.
006: *
007: * Redistribution and use in source and binary forms, with or without
008: * modification, are permitted provided that the following conditions
009: * are met:
010: *
011: * 1. Redistributions of source code must retain the above copyright
012: * notice, this list of conditions and the following disclaimer.
013: *
014: * 2. Redistributions in binary form must reproduce the above copyright
015: * notice, this list of conditions and the following disclaimer in
016: * the documentation and/or other materials provided with the
017: * distribution.
018: *
019: * 3. The end-user documentation included with the redistribution,
020: * if any, must include the following acknowledgment:
021: * "This product includes software developed by the
022: * JRefactory (http://www.sourceforge.org/projects/jrefactory)."
023: * Alternately, this acknowledgment may appear in the software itself,
024: * if and wherever such third-party acknowledgments normally appear.
025: *
026: * 4. The names "JRefactory" must not be used to endorse or promote
027: * products derived from this software without prior written
028: * permission. For written permission, please contact seguin@acm.org.
029: *
030: * 5. Products derived from this software may not be called "JRefactory",
031: * nor may "JRefactory" appear in their name, without prior written
032: * permission of Chris Seguin.
033: *
034: * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
035: * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
036: * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
037: * DISCLAIMED. IN NO EVENT SHALL THE CHRIS SEGUIN OR
038: * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
039: * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
040: * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
041: * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
042: * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
043: * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
044: * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
045: * SUCH DAMAGE.
046: * ====================================================================
047: *
048: * This software consists of voluntary contributions made by many
049: * individuals on behalf of JRefactory. For more information on
050: * JRefactory, please see
051: * <http://www.sourceforge.org/projects/jrefactory>.
052: */
053: package org.acm.seguin.uml.refactor;
054:
055: import java.awt.GridBagConstraints;
056: import java.awt.GridBagLayout;
057: import java.util.Iterator;
058: import javax.swing.JComboBox;
059: import javax.swing.JLabel;
060: import org.acm.seguin.refactor.Refactoring;
061: import org.acm.seguin.refactor.RefactoringFactory;
062: import org.acm.seguin.refactor.method.RenameParameterRefactoring;
063: import org.acm.seguin.summary.MethodSummary;
064: import org.acm.seguin.summary.ParameterSummary;
065: import org.acm.seguin.uml.UMLPackage;
066:
067: /**
068: * Dialog box that gets input for renaming the parameter
069: *
070: *@author Chris Seguin
071: *@created September 12, 2001
072: */
073: class RenameParameterDialog extends ClassNameDialog {
074: private MethodSummary method;
075: private ParameterSummary param;
076: private JComboBox parameterSelection;
077:
078: /**
079: * Constructor for the RenameParameterDialog object
080: *
081: *@param init Description of Parameter
082: *@param initParam Description of Parameter
083: */
084: public RenameParameterDialog(UMLPackage init,
085: ParameterSummary initParam) {
086: super (init, 0);
087: param = initParam;
088: method = (MethodSummary) param.getParent();
089: if (method == null) {
090: System.out.println("No method specified");
091: }
092:
093: setTitle(getWindowTitle());
094:
095: pack();
096:
097: setDefaultName(initParam);
098:
099: org.acm.seguin.awt.CenterDialog.center(this , init);
100: }
101:
102: /**
103: * Constructor for the RenameParameterDialog object
104: *
105: *@param init Description of Parameter
106: *@param initMethod Description of Parameter
107: */
108: public RenameParameterDialog(UMLPackage init,
109: MethodSummary initMethod) {
110: super (init, 1);
111:
112: param = null;
113: method = initMethod;
114: if (method == null) {
115: System.out.println("No method specified");
116: }
117:
118: GridBagConstraints gbc = new GridBagConstraints();
119:
120: JLabel newNameLabel = new JLabel("Parameter: ");
121: gbc.gridx = 1;
122: gbc.gridy = 0;
123: gbc.gridwidth = 1;
124: gbc.gridheight = 1;
125: GridBagLayout gridbag = (GridBagLayout) getContentPane()
126: .getLayout();
127: gridbag.setConstraints(newNameLabel, gbc);
128: getContentPane().add(newNameLabel);
129:
130: parameterSelection = new JComboBox();
131: Iterator iter = method.getParameters();
132: while (iter.hasNext()) {
133: parameterSelection.addItem(iter.next());
134: }
135: parameterSelection.setEditable(false);
136:
137: gbc.gridx = 2;
138: gbc.gridy = 0;
139: gbc.gridwidth = 2;
140: gbc.gridheight = 1;
141: gbc.fill = GridBagConstraints.HORIZONTAL;
142: gridbag.setConstraints(parameterSelection, gbc);
143: getContentPane().add(parameterSelection);
144:
145: setTitle(getWindowTitle());
146:
147: pack();
148:
149: org.acm.seguin.awt.CenterDialog.center(this , init);
150: }
151:
152: /**
153: * Gets the LabelText attribute of the RenameParameterDialog object
154: *
155: *@return The LabelText value
156: */
157: public String getLabelText() {
158: return "New parameter name:";
159: }
160:
161: /**
162: * Gets the WindowTitle attribute of the RenameParameterDialog object
163: *
164: *@return The WindowTitle value
165: */
166: public String getWindowTitle() {
167: if (param == null) {
168: return "Renaming a parameter";
169: }
170: return "Renaming the parameter " + param.getName() + " in "
171: + method.getName();
172: }
173:
174: /**
175: * Description of the Method
176: *
177: *@return Description of the Returned Value
178: */
179: protected Refactoring createRefactoring() {
180: RenameParameterRefactoring rpr = RefactoringFactory.get()
181: .renameParameter();
182: rpr.setMethodSummary(method);
183: if (param == null) {
184: Object selection = parameterSelection.getSelectedItem();
185: rpr.setParameterSummary((ParameterSummary) selection);
186: } else {
187: rpr.setParameterSummary(param);
188: }
189: rpr.setNewName(getClassName());
190: return rpr;
191: }
192:
193: /**
194: * Sets the suggested name of this parameter
195: *
196: *@param initVariable The new defaultName value
197: */
198: private void setDefaultName(ParameterSummary initVariable) {
199: try {
200: HungarianNamer namer = new HungarianNamer();
201: setClassName(namer.getDefaultName(initVariable, "a_"));
202: } catch (Exception exc) {
203: exc.printStackTrace();
204: setClassName(initVariable.getName());
205: }
206: }
207: }
|