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.RefactoringElementImplementation; 35 import org.netbeans.modules.refactoring.spi.ui.RefactoringCustomUI; 36 import org.netbeans.modules.refactoring.spi.ui.TreeElement; 37 import org.netbeans.modules.refactoring.spi.ui.TreeElementFactory; 38 import org.netbeans.modules.xml.nbprefuse.AnalysisViewer; 39 import org.netbeans.modules.xml.nbprefuse.View; 40 import org.netbeans.modules.xml.refactoring.ErrorItem; 41 import org.netbeans.modules.xml.refactoring.FileRenameRequest; 42 import org.netbeans.modules.xml.refactoring.RefactorRequest; 43 import org.netbeans.modules.xml.refactoring.impl.RefactoringUtil; 44 import org.netbeans.modules.refactoring.api.AbstractRefactoring; 45 import org.netbeans.modules.refactoring.api.Problem; 46 import org.netbeans.modules.refactoring.api.WhereUsedQuery; 47 import org.netbeans.modules.refactoring.spi.ui.CustomRefactoringPanel; 48 import org.netbeans.modules.xml.refactoring.ui.j.ui.RefactoringPanel; 49 import org.netbeans.modules.xml.refactoring.ui.j.ui.RenamePanel; 50 import org.netbeans.modules.xml.refactoring.ui.tree.GraphHelper; 51 import org.netbeans.modules.xml.refactoring.ui.views.WhereUsedView; 52 import org.netbeans.modules.xml.xam.Model; 53 import org.netbeans.modules.xml.xam.NamedReferenceable; 54 import org.netbeans.modules.xml.xam.Referenceable; 55 import org.openide.util.HelpCtx; 56 import org.openide.util.NbBundle; 57 import org.openide.util.Utilities; 58 import org.openide.util.lookup.Lookups; 59 import prefuse.data.Graph; 60 61 65 public class FileRenameRefactoringUI implements org.netbeans.modules.refactoring.spi.ui.RefactoringUI, RefactoringCustomUI { 66 67 private WhereUsedQuery query; 68 private WhereUsedView view; 69 private RenamePanel panel; 70 private FileRenameRequest request; 71 String newName; 72 private Model target; 73 74 private RenameRefactoring refactoring; 75 76 77 public FileRenameRefactoringUI(WhereUsedView view, Model target) { 78 this(view, new FileRenameRequest(target, "newFileName")); } 80 81 public FileRenameRefactoringUI(WhereUsedView view, FileRenameRequest request) { 82 this.view = view; 83 this.query = new WhereUsedQuery(Lookups.singleton(request.getTarget())); 84 this.request = request; 85 this.target = request.getTarget(); 86 refactoring = new RenameRefactoring(Lookups.singleton(target)); 87 } 88 89 public FileRenameRefactoringUI(Model target){ 90 this.target = target; 91 refactoring = new RenameRefactoring(Lookups.singleton(target)); 92 93 } 94 95 98 111 public CustomRefactoringPanel getPanel(ChangeListener parent) { 112 if (panel == null) { 113 panel = new RenamePanel(request.getOldFileName(), 114 parent, NbBundle.getMessage(RenamePanel.class, "LBL_FileRename"), 115 true, 116 false); 117 } 118 return panel; 119 } 120 121 129 public Problem setParameters() { 130 System.out.println("setParameters:: called"); 131 newName = panel.getNameValue(); 132 System.out.println("thew NEW NAME is " + newName); 133 if (refactoring instanceof RenameRefactoring) { 134 ((RenameRefactoring) refactoring).setNewName(newName); 135 137 } 138 return refactoring.checkParameters(); 139 } 141 142 149 public boolean isQuery() { 150 return false; 151 } 152 153 public boolean hasParameters() { 154 return true; 155 } 156 157 162 public AbstractRefactoring getRefactoring() { 163 return refactoring; 165 } 166 167 172 173 public String getName() { 174 return new MessageFormat (NbBundle.getMessage(RefactoringPanel.class, "LBL_FileRename")).format ( 175 new Object [] { request.getOldFileName() } 176 ); 177 } 178 179 public HelpCtx getHelpCtx() { 180 return new HelpCtx(FileRenameRefactoringUI.class); 181 } 182 183 188 public String getDescription() { 189 return new MessageFormat (NbBundle.getMessage(RefactoringPanel.class, "DSC_Rename")).format ( 190 new Object [] { request.getOldFileName(), request.getNewFileName() } 191 ); 192 193 } 194 195 public Problem checkParameters() { 196 207 208 newName = panel.getNameValue(); 209 if (refactoring instanceof RenameRefactoring) { 210 ((RenameRefactoring) refactoring).setNewName(newName); 211 } 213 return refactoring.fastCheckParameters(); 214 } 215 216 public View getView() { 217 return view; 218 } 219 220 public void setView(View view){ 221 222 this.view = WhereUsedView.class.cast(view); 223 } 224 225 226 231 public RefactorRequest getRefactorRequest() { 232 if (getNewName() != null && getNewName().length() > 0) { 233 request.setNewFileName(getNewName()); 234 } 235 return request; 236 237 } 238 239 242 244 public String getNewName(){ 245 if (panel != null){ 246 request.setNewFileName(panel.getNameValue()); 247 } 248 return request.getNewFileName() == null? "" : request.getNewFileName(); } 250 251 public Referenceable getTarget() { 252 return getRefactorRequest().getTargetModel(); 253 } 254 255 public Component getCustomComponent(Collection <RefactoringElement> elements) { 256 System.out.println("getCustomComponent called"); 257 WhereUsedView view = new WhereUsedView(target); 258 Referenceable ref = view.getQueryComponent(); 259 GraphHelper gh = new GraphHelper(ref); 260 261 ArrayList <TreeElement> nodes = new ArrayList <TreeElement>(); 262 for (RefactoringElement element: elements) { 263 TreeElement previewNode = TreeElementFactory.getTreeElement(element); 264 if(previewNode != null) 265 nodes.add(previewNode); 266 } 267 268 Graph graph = gh.loadGraph(nodes); 269 view.setGraph(graph); 270 AnalysisViewer analysisViewer = new AnalysisViewer(); 271 analysisViewer.getPanel().setMinimumSize(new Dimension (10,10)); 272 analysisViewer.getPanel().setPreferredSize(new Dimension (10,10)); 273 view.showView(analysisViewer); 274 275 return analysisViewer.getPanel(); 276 } 277 278 public Icon getCustomIcon() { 279 return new ImageIcon ( 280 Utilities.loadImage( 281 "org/netbeans/modules/refactoring/api/resources/"+ 282 "findusages.png")); 283 } 284 285 public String getCustomToolTip() { 286 return NbBundle.getMessage(WhereUsedQueryUI.class, "LBL_ShowGraph"); 287 } 288 289 } 290 | Popular Tags |