KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > org > netbeans > modules > refactoring > java > PackageRenameHandlerImpl


1 /*
2  * The contents of this file are subject to the terms of the Common Development
3  * and Distribution License (the License). You may not use this file except in
4  * compliance with the License.
5  *
6  * You can obtain a copy of the License at http://www.netbeans.org/cddl.html
7  * or http://www.netbeans.org/cddl.txt.
8  *
9  * When distributing Covered Code, include this CDDL Header Notice in each file
10  * and include the License file at http://www.netbeans.org/cddl.txt.
11  * If applicable, add the following below the CDDL Header, with the fields
12  * enclosed by brackets [] replaced by your own identifying information:
13  * "Portions Copyrighted [year] [name of copyright owner]"
14  *
15  * The Original Software is NetBeans. The Initial Developer of the Original
16  * Software is Sun Microsystems, Inc. Portions Copyright 1997-2006 Sun
17  * Microsystems, Inc. All Rights Reserved.
18  */

19
20 package org.netbeans.modules.refactoring.java;
21
22 import java.io.IOException JavaDoc;
23 import java.text.MessageFormat JavaDoc;
24 import java.util.Dictionary JavaDoc;
25 import java.util.Hashtable JavaDoc;
26 import javax.swing.Action JavaDoc;
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 /**
45  *
46  * @author Jan Becicka
47  */

48 public class PackageRenameHandlerImpl implements PackageRenameHandler {
49
50     public void handleRename(Node node, String JavaDoc newName) {
51         DataFolder dob = (DataFolder) node.getCookie(DataObject.class);
52         FileObject fo = dob.getPrimaryFile();
53         if (node.isLeaf()) {
54             //rename empty package and don't try to do any refactoring
55
try {
56                 if (!RetoucheUtils.isValidPackageName(newName)) {
57                     String JavaDoc msg = new MessageFormat JavaDoc(NbBundle.getMessage(RenameRefactoringPlugin.class,"ERR_InvalidPackage")).format(
58                             new Object JavaDoc[] {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 JavaDoc ioe) {
72                 ErrorManager.getDefault().notify(ioe);
73             }
74             return;
75         }
76
77         InstanceContent ic = new InstanceContent();
78         ic.add(node);
79         Dictionary JavaDoc d = new Hashtable JavaDoc();
80         d.put("name", newName);
81         ic.add(d);
82         Lookup l = new AbstractLookup(ic);
83         Action JavaDoc a = RefactoringActionsFactory.renameAction().createContextAwareInstance(l);
84         if (a.isEnabled()) {
85             a.actionPerformed(RefactoringActionsFactory.DEFAULT_EVENT);
86         }
87     }
88 }
89
Popular Tags