1 19 20 package org.netbeans.modules.refactoring.java; 21 22 import java.io.IOException ; 23 import java.text.MessageFormat ; 24 import java.util.Dictionary ; 25 import java.util.Hashtable ; 26 import javax.swing.Action ; 27 import org.netbeans.api.java.classpath.ClassPath; 28 import org.netbeans.modules.refactoring.api.ui.RefactoringActionsFactory; 29 import org.netbeans.modules.refactoring.java.plugins.RenameRefactoringPlugin; 30 import org.netbeans.spi.java.project.support.ui.PackageRenameHandler; 31 import org.openide.DialogDisplayer; 32 import org.openide.ErrorManager; 33 import org.openide.NotifyDescriptor; 34 import org.openide.filesystems.FileObject; 35 import org.openide.filesystems.FileUtil; 36 import org.openide.loaders.DataFolder; 37 import org.openide.loaders.DataObject; 38 import org.openide.nodes.Node; 39 import org.openide.util.Lookup; 40 import org.openide.util.NbBundle; 41 import org.openide.util.lookup.AbstractLookup; 42 import org.openide.util.lookup.InstanceContent; 43 44 48 public class PackageRenameHandlerImpl implements PackageRenameHandler { 49 50 public void handleRename(Node node, String newName) { 51 DataFolder dob = (DataFolder) node.getCookie(DataObject.class); 52 FileObject fo = dob.getPrimaryFile(); 53 if (node.isLeaf()) { 54 try { 56 if (!RetoucheUtils.isValidPackageName(newName)) { 57 String msg = new MessageFormat (NbBundle.getMessage(RenameRefactoringPlugin.class,"ERR_InvalidPackage")).format( 58 new Object [] {newName} 59 ); 60 61 DialogDisplayer.getDefault().notify(new NotifyDescriptor.Message( 62 msg, NotifyDescriptor.INFORMATION_MESSAGE)); 63 return; 64 } 65 FileUtil.createFolder(ClassPath.getClassPath(fo, ClassPath.SOURCE).findOwnerRoot(fo), newName.replace('.','/')); 66 while (dob.getChildren().length == 0 && dob.isDeleteAllowed()) { 67 DataFolder parent = dob.getFolder(); 68 dob.delete(); 69 dob = parent; 70 } 71 } catch (IOException ioe) { 72 ErrorManager.getDefault().notify(ioe); 73 } 74 return; 75 } 76 77 InstanceContent ic = new InstanceContent(); 78 ic.add(node); 79 Dictionary d = new Hashtable (); 80 d.put("name", newName); 81 ic.add(d); 82 Lookup l = new AbstractLookup(ic); 83 Action a = RefactoringActionsFactory.renameAction().createContextAwareInstance(l); 84 if (a.isEnabled()) { 85 a.actionPerformed(RefactoringActionsFactory.DEFAULT_EVENT); 86 } 87 } 88 } 89 | Popular Tags |