|
What this is
Other links
The source code/* * Sun Public License Notice * * The contents of this file are subject to the Sun Public License * Version 1.0 (the "License"). You may not use this file except in * compliance with the License. A copy of the License is available at * http://www.sun.com/ * * The Original Code is NetBeans. The Initial Developer of the Original * Code is Sun Microsystems, Inc. Portions Copyright 1997-2003 Sun * Microsystems, Inc. All Rights Reserved. */ package org.netbeans.modules.refactoring.ui; import java.awt.GridBagConstraints; import java.awt.GridBagLayout; import java.awt.Insets; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.lang.reflect.Modifier; import java.text.MessageFormat; import java.util.Iterator; import java.util.LinkedList; import java.util.List; import javax.swing.*; import javax.swing.event.DocumentEvent; import javax.swing.event.DocumentListener; import org.netbeans.modules.refactoring.api.AbstractRefactoring; import org.netbeans.modules.refactoring.api.MoveClassRefactoring; import org.netbeans.modules.refactoring.api.Problem; import org.netbeans.modules.refactoring.api.ui.ParametersPanel; import org.netbeans.modules.refactoring.api.ui.RefactoringUI; import org.netbeans.jmi.javamodel.JavaClass; import org.netbeans.jmi.javamodel.Resource; import org.netbeans.modules.java.JavaDataObject; import org.netbeans.modules.javacore.internalapi.JavaMetamodel; import org.openide.DialogDescriptor; import org.openide.DialogDisplayer; import org.openide.NotifyDescriptor; import org.openide.filesystems.FileObject; import org.openide.filesystems.FileUtil; import org.openide.util.HelpCtx; import org.openide.util.NbBundle; public class MoveClassUI implements RefactoringUI { private JavaDataObject javaObject; private Resource resource; private JavaClass mainSourceClass; private MoveClassPanel panel; private MoveClassRefactoring refactoring; private String targetPkgName = ""; private boolean particularClassSelected = false; private boolean disable; static final String getString(String key) { return NbBundle.getMessage(MoveClassUI.class, key); } public MoveClassUI (JavaClass sourceClass) { resource = (Resource) sourceClass.refImmediateComposite(); javaObject = (JavaDataObject) JavaMetamodel.getManager().getDataObject(resource); particularClassSelected = true; findMainClass (); } public MoveClassUI (JavaDataObject javaObject) { this(javaObject, false); } public MoveClassUI (JavaDataObject javaObject, boolean disable) { this.disable = disable; this.javaObject = javaObject; resource = JavaMetamodel.getManager().getResource(javaObject.getPrimaryFile()); findMainClass (); } public String getName() { return getString ("LBL_MoveClass"); } public String getDescription() { return new MessageFormat(getString("DSC_MoveClass")).format ( new Object[] {mainSourceClass.getName(), packageName ()} ); } public boolean isQuery() { return false; } public JPanel getPanel(ParametersPanel parent) { if (panel == null) { panel = new MoveClassPanel (parent, disable? getString("LBL_RefactorClassAfterMove") : getString ("LBL_MoveClass"), disable ? getString("LBL_RefactorClassNeeded"): new MessageFormat(getString("LBL_MoveClassNamed")).format ( new Object[] {mainSourceClass==null?"":mainSourceClass.getName()} ), getResPackageName(mainSourceClass), javaObject.getPrimaryFile() ); panel.setCombosEnabled(!disable); panel.setThisClassVisible(disable); panel.setThisClassName(mainSourceClass==null?"":mainSourceClass.getName()); } return panel; } private static String getResPackageName(JavaClass cl) { if (cl==null) return ""; Resource res = (Resource) cl.refImmediateComposite(); String name = res.getName(); int index = name.lastIndexOf('/'); if ( index == -1 ) return ""; return name.substring(0, index).replace('/','.'); } private void findMainClass () { mainSourceClass = null; java.util.List list = resource.getClassifiers(); int size = list.size (); if (size == 0) { return; } if (size == 1) { mainSourceClass = (JavaClass) list.get (0); return; } String resName = resource.getName(); int index_1 = resName.lastIndexOf ('/'); int index_2 = resName.indexOf ('.'); String mainClassName = null; if (index_2 > -1) { mainClassName = resName.substring (index_1 + 1, index_2); } Iterator iter = list.iterator (); for (int x = 0; x < size; x++) { JavaClass jc = (JavaClass) iter.next (); if ((mainClassName != null) && mainClassName.equals (jc.getName ())) { mainSourceClass = jc; return; } if ((jc.getModifiers() & Modifier.PUBLIC) > 0) mainSourceClass = jc; } if (mainSourceClass == null) { mainSourceClass = (JavaClass) list.get (0); } } private String packageName () { return targetPkgName.trim().length() == 0 ? getString ("LBL_DefaultPackage") : targetPkgName.trim (); } private Problem setParameters(boolean checkOnly) { if (panel==null) return null; targetPkgName = panel.getPackageName (); FileObject folder = checkOnly ? null : FileUtil.toFileObject(panel.getFolder()); if (folder == null) { folder = refactoring.classPath.findResource(targetPkgName.replace('.','/')); // java.util.Enumeration enum = Repository.getDefault().fileSystems(); // FileSystem fsReadOnly = null; // folder = null; // while (enum.hasMoreElements()) { // FileSystem fs = (FileSystem) enum.nextElement(); // if (fs.isHidden ()) // continue; // if (fs.isReadOnly ()) { // fsReadOnly = fs; // continue; // } // FileObject tempFolder = fs.find (targetPkgName, null, null); // if (tempFolder != null) { // if (folder != null) { // return new Problem (true, // new MessageFormat (getString("ERR_AmbigousFileSystem")).format ( // new Object[] {packageName ()} // )); // } // folder = tempFolder; // } // if // } // while if (folder == null) { // if (fsReadOnly != null) { // return new Problem (true, // new MessageFormat (getString("ERR_ReadOnlyFileSystem")).format ( // new Object[] {packageName ()} // )); // } else { return new Problem (true, getString("ERR_UnknownPackage")); // } } } // if if (checkOnly) { return refactoring.checkParameters(folder); } else { return refactoring.setParameters(folder); } } public Problem checkParameters() { return setParameters(true); } public Problem setParameters() { return setParameters(false); } public AbstractRefactoring getRefactoring() { if (refactoring == null) { List list = new LinkedList(); list.add(resource); refactoring = new MoveClassRefactoring (list, particularClassSelected, false); } return refactoring; } public boolean hasParameters() { return true; } public HelpCtx getHelpCtx() { return new HelpCtx(MoveClassUI.class); } } |
... this post is sponsored by my books ... | |
#1 New Release! |
FP Best Seller |
Copyright 1998-2021 Alvin Alexander, alvinalexander.com
All Rights Reserved.
A percentage of advertising revenue from
pages under the /java/jwarehouse
URI on this website is
paid back to open source projects.