1 19 20 package org.netbeans.modules.xml.refactoring.ui.j.spi.ui; 21 22 import java.awt.Component ; 23 import java.awt.Dimension ; 24 import java.text.MessageFormat ; 25 import java.util.ArrayList ; 26 import java.util.Collection ; 27 import java.util.HashMap ; 28 import java.util.Map ; 29 import javax.swing.Icon ; 30 import javax.swing.ImageIcon ; 31 import javax.swing.event.ChangeListener ; 32 import org.netbeans.modules.refactoring.api.RefactoringElement; 33 import org.netbeans.modules.refactoring.api.RenameRefactoring; 34 import org.netbeans.modules.refactoring.spi.ui.RefactoringCustomUI; 35 import org.netbeans.modules.refactoring.spi.ui.TreeElement; 36 import org.netbeans.modules.refactoring.spi.ui.TreeElementFactory; 37 import org.netbeans.modules.xml.nbprefuse.AnalysisViewer; 38 import org.netbeans.modules.xml.nbprefuse.View; 39 import org.netbeans.modules.xml.refactoring.ErrorItem; 40 import org.netbeans.modules.xml.refactoring.RefactorRequest; 41 import org.netbeans.modules.xml.refactoring.RenameRequest; 42 import org.netbeans.modules.xml.refactoring.impl.RefactoringUtil; 43 import org.netbeans.modules.refactoring.api.AbstractRefactoring; 44 import org.netbeans.modules.refactoring.api.Problem; 45 import org.netbeans.modules.refactoring.api.WhereUsedQuery; 46 import org.netbeans.modules.refactoring.spi.ui.CustomRefactoringPanel; 47 import org.netbeans.modules.xml.refactoring.ui.j.ui.RefactoringPanel; 48 import org.netbeans.modules.xml.refactoring.ui.j.ui.RenamePanel; 49 import org.netbeans.modules.xml.refactoring.ui.tree.GraphHelper; 50 import org.netbeans.modules.xml.refactoring.ui.views.WhereUsedView; 51 import org.netbeans.modules.xml.xam.Nameable; 52 import org.netbeans.modules.xml.xam.NamedReferenceable; 53 import org.netbeans.modules.xml.xam.Referenceable; 54 import org.openide.util.HelpCtx; 55 import org.openide.util.NbBundle; 56 import org.openide.util.Utilities; 57 import org.openide.util.lookup.Lookups; 58 import prefuse.data.Graph; 59 60 64 public class RenameRefactoringUI implements org.netbeans.modules.refactoring.spi.ui.RefactoringUI, RefactoringCustomUI { 65 66 private WhereUsedQuery query; 67 private WhereUsedView view; 68 private String newName = "", oldName = ""; private RenamePanel panel; 70 private RenameRequest renameRequest; 71 private Nameable target; 72 private boolean editable; 73 private RenameRefactoring refactoring; 74 75 76 public RenameRefactoringUI(WhereUsedView view, RenameRequest request) { 77 this(view, (Nameable) request.getTarget(), request.getNewName(), true); 78 renameRequest = request; 79 target = (Nameable)request.getTarget(); 80 oldName = target.getName(); 81 refactoring = new RenameRefactoring(Lookups.singleton(target)); 82 } 83 84 public RenameRefactoringUI(WhereUsedView view, Nameable ref) { 85 this(view,ref,ref.getName(),true); 86 } 87 88 public RenameRefactoringUI(Nameable ref){ 89 this.target = ref; 90 oldName = ref.getName(); 91 this.editable = true; 92 refactoring = new RenameRefactoring(Lookups.singleton(ref)); 93 } 94 95 101 public RenameRefactoringUI(WhereUsedView view, 102 Nameable ref, String name, boolean editable) { 103 this.view = view; 104 this.target = ref; 105 oldName = name; 106 this.editable = editable; 107 assert ref instanceof NamedReferenceable; 108 query = new WhereUsedQuery(Lookups.singleton((NamedReferenceable) ref)); 109 } 110 111 114 127 public CustomRefactoringPanel getPanel(ChangeListener parent) { 128 if (panel == null) { 129 String name = oldName; 130 panel = new RenamePanel(oldName, 131 parent, NbBundle.getMessage(RenamePanel.class, "LBL_Rename"), 132 editable, 133 false); 134 } 135 return panel; 136 } 137 138 146 public Problem setParameters() { 147 System.out.println("Rename setParameters:: called"); 148 newName = panel.getNameValue(); 149 System.out.println("thew NEW NAME is " + newName); 150 if (refactoring instanceof RenameRefactoring) { 151 ((RenameRefactoring) refactoring).setNewName(newName); 152 } 153 return refactoring.checkParameters(); 154 } 156 157 164 public boolean isQuery() { 165 return false; 166 } 167 168 public boolean hasParameters() { 169 return true; 170 } 171 172 177 public AbstractRefactoring getRefactoring() { 178 return refactoring; 179 } 180 181 186 187 public String getName() { 188 return new MessageFormat (NbBundle.getMessage(RefactoringPanel.class, "LBL_Rename")).format ( 189 new Object [] {oldName} 190 ); 191 } 192 193 public HelpCtx getHelpCtx() { 194 return new HelpCtx(RenameRefactoringUI.class); 195 } 196 197 202 public String getDescription() { 203 return new MessageFormat (NbBundle.getMessage(RefactoringPanel.class, "DSC_Rename")).format ( 204 new Object [] {oldName, newName } 205 ); 206 207 } 208 209 public Problem checkParameters() { 210 221 222 newName = panel.getNameValue(); 223 if (refactoring instanceof RenameRefactoring) { 224 ((RenameRefactoring) refactoring).setNewName(newName); 225 } 226 return refactoring.fastCheckParameters(); 227 } 228 229 public View getView() { 230 return view; 231 } 232 233 public void setView(View view){ 234 235 this.view = WhereUsedView.class.cast(view); 236 } 237 238 239 244 public RenameRequest getRefactorRequest() { 245 if (renameRequest == null) { 246 renameRequest = new RenameRequest(target, "newName"); } 248 if (getNewName() != null && getNewName().length() > 0) { 249 renameRequest.setNewName(getNewName()); 250 } 251 return renameRequest; 252 } 253 254 257 259 public String getNewName(){ 260 if (panel != null){ 261 newName = panel.getNameValue(); 262 } 263 264 return newName == null?"":newName; } 266 267 268 269 273 public void setNameableTarget(Nameable target){ 274 this.target = target; 275 } 276 277 public Nameable getNameableTarget(){ 278 return this.target; 279 } 280 281 public Referenceable getTarget() { 282 assert target instanceof Referenceable; 283 return (Referenceable) target; 284 } 285 286 287 public Component getCustomComponent(Collection <RefactoringElement> elements) { 288 System.out.println("getCustomComponent called"); 289 WhereUsedView view = new WhereUsedView((Referenceable)target); 290 Referenceable ref = view.getQueryComponent(); 291 GraphHelper gh = new GraphHelper(ref); 292 293 ArrayList <TreeElement> nodes = new ArrayList <TreeElement>(); 294 for (RefactoringElement element: elements) { 295 TreeElement previewNode = TreeElementFactory.getTreeElement(element); 296 if(previewNode != null) 297 nodes.add(previewNode); 298 } 299 300 Graph graph = gh.loadGraph(nodes); 301 view.setGraph(graph); 302 AnalysisViewer analysisViewer = new AnalysisViewer(); 303 analysisViewer.getPanel().setMinimumSize(new Dimension (10,10)); 304 analysisViewer.getPanel().setPreferredSize(new Dimension (10,10)); 305 view.showView(analysisViewer); 306 307 return analysisViewer.getPanel(); 308 } 309 310 public Icon getCustomIcon() { 311 return new ImageIcon ( 312 Utilities.loadImage( 313 "org/netbeans/modules/refactoring/api/resources/"+ 314 "findusages.png")); 315 } 316 317 public String getCustomToolTip() { 318 return NbBundle.getMessage(WhereUsedQueryUI.class, "LBL_ShowGraph"); 319 } 320 321 } 322 | Popular Tags |