1 19 package org.netbeans.modules.refactoring.java.ui; 20 import java.awt.Component ; 21 import java.awt.Dimension ; 22 import java.awt.event.ItemEvent ; 23 import java.io.IOException ; 24 import java.util.ArrayList ; 25 import java.util.Collection ; 26 import javax.swing.JPanel ; 27 import javax.swing.SwingUtilities ; 28 import org.netbeans.api.java.source.CancellableTask; 29 import org.netbeans.api.java.source.CompilationController; 30 import org.netbeans.api.java.source.JavaSource; 31 import org.netbeans.api.java.source.JavaSource.Phase; 32 import org.netbeans.api.java.source.TreePathHandle; 33 import org.netbeans.modules.refactoring.api.SafeDeleteRefactoring; 34 import org.netbeans.modules.refactoring.spi.ui.CustomRefactoringPanel; 35 import org.openide.filesystems.FileObject; 36 import org.openide.util.NbBundle; 37 import org.netbeans.modules.refactoring.java.RefactoringModule; 38 import org.openide.util.NbBundle; 39 40 41 46 public class SafeDeletePanel extends JPanel implements CustomRefactoringPanel { 47 48 private final transient Collection elements; 49 private final transient SafeDeleteRefactoring refactoring; 50 51 56 public SafeDeletePanel(SafeDeleteRefactoring refactoring, Collection selectedElements) { 57 setName(NbBundle.getMessage(SafeDeletePanel.class,"LBL_SafeDel")); this.elements = selectedElements; 59 this.refactoring = refactoring; 60 initComponents(); 61 } 62 63 private boolean initialized = false; 64 private String methodDeclaringClass = null; 65 66 String getMethodDeclaringClass() { 67 return methodDeclaringClass; 68 } 69 72 public void initialize() { 73 searchInComments.setEnabled(true); 77 78 if (initialized) return; 79 80 final ArrayList <String > names = new ArrayList (); 81 for (Object o:refactoring.getRefactoringSource().lookupAll(Object .class)) { 83 if (o instanceof FileObject) 84 names.add(((FileObject)o).getName()); 85 else if (o instanceof TreePathHandle) { 86 final TreePathHandle handle=(TreePathHandle) o; 87 JavaSource s = JavaSource.forFileObject(handle.getFileObject()); 90 try { 91 s.runUserActionTask(new CancellableTask<CompilationController>() { 92 public void cancel() { 93 } 94 95 public void run(CompilationController parameter) throws Exception { 96 parameter.toPhase(Phase.RESOLVED); 97 names.add(handle.resolveElement(parameter).getSimpleName().toString()); 98 } 99 }, true); 100 } catch (IOException ioe) { 101 throw (RuntimeException ) new RuntimeException ().initCause(ioe); 102 } 103 104 } 105 } 106 141 SwingUtilities.invokeLater(new Runnable () { 142 public void run() { 143 if (names.size()==1) { 144 label.setText(NbBundle.getMessage(SafeDeletePanel.class, "LBL_SafeDelHeader", names.get(0))); 145 } else { 146 label.setText(NbBundle.getMessage(SafeDeletePanel.class, "LBL_SafeDel_Elements", names.get(0), names.get(1))); 147 } 148 validate(); 149 } 150 }); 151 initialized = true; 152 } 153 154 public void requestFocus() { 155 super.requestFocus(); 156 } 157 158 163 private void initComponents() { 165 buttonGroup = new javax.swing.ButtonGroup (); 166 jPanel3 = new javax.swing.JPanel (); 167 label = new javax.swing.JLabel (); 168 searchInComments = new javax.swing.JCheckBox (); 169 170 setLayout(new java.awt.BorderLayout ()); 171 172 jPanel3.setLayout(new java.awt.BorderLayout ()); 173 174 jPanel3.add(label, java.awt.BorderLayout.NORTH); 175 176 searchInComments.setSelected(((Boolean ) RefactoringModule.getOption("searchInComments.whereUsed", Boolean.FALSE)).booleanValue()); 177 java.util.ResourceBundle bundle = java.util.ResourceBundle.getBundle("org/netbeans/modules/refactoring/java/ui/Bundle"); org.openide.awt.Mnemonics.setLocalizedText(searchInComments, bundle.getString("LBL_SafeDelInComents")); searchInComments.setMargin(new java.awt.Insets (10, 14, 2, 2)); 180 searchInComments.addItemListener(new java.awt.event.ItemListener () { 181 public void itemStateChanged(java.awt.event.ItemEvent evt) { 182 searchInCommentsItemStateChanged(evt); 183 } 184 }); 185 186 jPanel3.add(searchInComments, java.awt.BorderLayout.SOUTH); 187 searchInComments.getAccessibleContext().setAccessibleDescription(searchInComments.getText()); 188 189 add(jPanel3, java.awt.BorderLayout.NORTH); 190 191 } 193 private void searchInCommentsItemStateChanged(java.awt.event.ItemEvent evt) { Boolean b = evt.getStateChange() == ItemEvent.SELECTED ? Boolean.TRUE : Boolean.FALSE; 197 RefactoringModule.setOption("searchInComments.whereUsed", b); 198 refactoring.setCheckInComments(b.booleanValue()); 199 } 201 private javax.swing.ButtonGroup buttonGroup; 203 private javax.swing.JPanel jPanel3; 204 private javax.swing.JLabel label; 205 private javax.swing.JCheckBox searchInComments; 206 208 209 public Dimension getPreferredSize() { 210 Dimension orig = super.getPreferredSize(); 211 return new Dimension (orig.width + 30 , orig.height + 30); 212 } 213 214 220 public boolean isSearchInComments() { 221 return searchInComments.isSelected(); 222 } 223 224 public Component getComponent() { 225 return this; 226 } 227 228 229 } 319 320 | Popular Tags |