@Override public void actionPerformed(PhpModule phpModule) { // Check CakePHP project if (!CakePhpUtils.isCakePHP(phpModule)) { return; } // get EditorCookie Lookup lookup = Utilities.actionsGlobalContext(); EditorCookie context = lookup.lookup(EditorCookie.class); if (context == null) { return; } Document doc = context.getDocument(); if (doc == null) { return; } reformat(doc); // Change line feed if (!BaseDocument.LS_LF.equals(doc.getProperty(BaseDocument.READ_LINE_SEPARATOR_PROP))) { doc.putProperty(BaseDocument.READ_LINE_SEPARATOR_PROP, BaseDocument.LS_LF); } }
@Override public void actionPerformed(ActionEvent e) { if (null == this.context || null == this.context.getDocument()) { return; } final StyledDocument document = context.getDocument(); DocumentGenerator.RegenerateALL(document); }
public static void overwriteFile(Node srcNode, Node destNode) throws IOException { DataObject srcDO = srcNode.getLookup().lookup(DataObject.class); FileObject srcFO = srcDO.getPrimaryFile(); DataObject destDO = destNode.getLookup().lookup(DataObject.class); FileObject destFO = destDO.getPrimaryFile(); // To avoid any confusion, save modified source first. if (srcDO.isModified()) { NotifyDescriptor d = new NotifyDescriptor.Confirmation( NbBundle.getMessage( FileNodeUtil.class, "MSG_SaveModifiedSource", srcFO.getNameExt()), // NOI18N NbBundle.getMessage(FileNodeUtil.class, "TTL_SaveModifiedSource"), // NOI18N NotifyDescriptor.OK_CANCEL_OPTION); if (DialogDisplayer.getDefault().notify(d) == NotifyDescriptor.OK_OPTION) { EditorCookie srcEditorCookie = srcDO.getCookie(EditorCookie.class); srcEditorCookie.saveDocument(); } } // // Alternatively, we could use the in-memory copy of the source file // EditorCookie srcEditorCookie = // (EditorCookie) srcDO.getCookie(EditorCookie.class); // Document srcDocument = srcEditorCookie.getDocument(); // if (srcDocument == null) { // Task loadTask = srcEditorCookie.prepareDocument(); // new RequestProcessor().post(loadTask); // // loadTask.waitFinished(); // srcDocument = srcEditorCookie.getDocument(); // } // String srcText = srcDocument.getText(0, srcDocument.getLength()); // From now on, we will only be using the on-disk copy of the source file. if (destDO.isModified()) { NotifyDescriptor d = new NotifyDescriptor.Confirmation( NbBundle.getMessage( FileNodeUtil.class, "MSG_OverwriteModifiedDestination", destFO.getNameExt()), // NOI18N NbBundle.getMessage(FileNodeUtil.class, "TTL_OverwriteModifiedDestination"), // NOI18N NotifyDescriptor.OK_CANCEL_OPTION); if (DialogDisplayer.getDefault().notify(d) == NotifyDescriptor.CANCEL_OPTION) { return; } EditorCookie destEditorCookie = destDO.getCookie(EditorCookie.class); InputStream inputStream = null; try { inputStream = srcFO.getInputStream(); String srcText = getInputStreamContents(inputStream); Document outputDocument = destEditorCookie.getDocument(); try { outputDocument.remove(0, outputDocument.getLength()); } catch (java.lang.Exception e) { // Ignore exception here on purpose. // One of the listener from xml module throws NPE: // at // org.netbeans.modules.xml.text.completion.GrammarManager.isGuarded(GrammarManager.java:170) // at // org.netbeans.modules.xml.text.completion.GrammarManager.removeUpdate(GrammarManager.java:140) // at // org.netbeans.lib.editor.util.swing.PriorityDocumentListenerList.removeUpdate(PriorityDocumentListenerList.java:63) // at javax.swing.text.AbstractDocument.fireRemoveUpdate(AbstractDocument.java:242) // at org.netbeans.editor.BaseDocument.fireRemoveUpdate(BaseDocument.java:1305) // at org.netbeans.editor.BaseDocument.remove(BaseDocument.java:737) } outputDocument.insertString(0, srcText, null); destEditorCookie.saveDocument(); } catch (BadLocationException e) { e.printStackTrace(); throw new IOException(e.getMessage()); } finally { try { if (inputStream != null) { inputStream.close(); } } catch (Exception e) {; } } } else { FileLock lock = destFO.lock(); InputStream inputStream = null; OutputStream outputStream = null; try { outputStream = destFO.getOutputStream(lock); inputStream = srcFO.getInputStream(); FileUtil.copy(inputStream, outputStream); } finally { try { if (inputStream != null) { inputStream.close(); } if (outputStream != null) { outputStream.close(); } lock.releaseLock(); } catch (Exception e) {; } } } }
public static List<ErrorDescription> runFindBugs( CompilationInfo info, Preferences customSettings, String singleBug, FileObject sourceRoot, Iterable<? extends String> classNames, FindBugsProgress progress, SigFilesValidator validator) { List<ErrorDescription> result = new ArrayList<ErrorDescription>(); try { Class.forName( "org.netbeans.modules.findbugs.NbClassFactory", true, RunFindBugs.class.getClassLoader()); // NOI18N Project p = new Project(); URL[] binaryRoots = CacheBinaryForSourceQuery.findCacheBinaryRoots(sourceRoot.toURL()).getRoots(); if (classNames == null) { for (URL binary : binaryRoots) { try { p.addFile(new File(binary.toURI()).getAbsolutePath()); } catch (URISyntaxException ex) { Exceptions.printStackTrace(ex); } } } else { ClassPath binary = ClassPathSupport.createClassPath(binaryRoots); List<FileObject> sigFiles = new ArrayList<FileObject>(); for (String className : classNames) { FileObject classFO = binary.findResource(className.replace('.', '/') + ".sig"); // NOI18N if (classFO != null) { sigFiles.add(classFO); } else { LOG.log( Level.WARNING, "Cannot find sig file for: " + className); // TODO: should probably become FINE eventually } } assert validator != null; if (!validator.validate(sigFiles)) return null; for (FileObject classFO : sigFiles) { p.addFile(new File(classFO.toURI()).getAbsolutePath()); } addCompileRootAsSource(p, sourceRoot); } ClassPath compile = ClassPath.getClassPath(sourceRoot, ClassPath.COMPILE); for (FileObject compileRoot : compile.getRoots()) { addCompileRoot(p, compileRoot); } BugCollectionBugReporter r = new BugCollectionBugReporter(p) { @Override protected void emitLine(String line) { LOG.log(Level.FINE, line); } }; r.setPriorityThreshold(Integer.MAX_VALUE); r.setRankThreshold(Integer.MAX_VALUE); FindBugs2 engine = new FindBugs2(); engine.setProject(p); engine.setNoClassOk(true); engine.setBugReporter(r); if (progress != null) { engine.setProgressCallback(progress); } boolean inEditor = validator != null; Preferences settings = customSettings != null ? customSettings : NbPreferences.forModule(RunFindBugs.class).node("global-settings"); UserPreferences preferences; if (singleBug != null) { singleBug = singleBug.substring(PREFIX_FINDBUGS.length()); preferences = forSingleBug(singleBug); } else { preferences = readPreferences(settings, customSettings != null); } if (preferences == null) { // nothing enabled, stop return result; } engine.setUserPreferences(preferences); engine.setDetectorFactoryCollection(DetectorFactoryCollection.instance()); LOG.log(Level.FINE, "Running FindBugs"); engine.execute(); Map<FileObject, List<BugInstance>> file2Bugs = new HashMap<FileObject, List<BugInstance>>(); for (BugInstance b : r.getBugCollection().getCollection()) { if (singleBug != null && !singleBug.equals(b.getBugPattern().getType())) continue; if (singleBug == null && !settings.getBoolean( b.getBugPattern().getType(), customSettings == null && isEnabledByDefault(b.getBugPattern()))) { continue; } SourceLineAnnotation sourceLine = b.getPrimarySourceLineAnnotation(); FileObject sourceFile = null; if (sourceLine != null) { sourceFile = sourceRoot.getFileObject(sourceLine.getSourcePath()); if (sourceFile != null) { List<BugInstance> bugs = file2Bugs.get(sourceFile); if (bugs == null) { file2Bugs.put(sourceFile, bugs = new ArrayList<BugInstance>()); } bugs.add(b); } else { LOG.log( Level.WARNING, "{0}, location: {1}:{2}", new Object[] {b, sourceLine.getSourcePath(), sourceLine.getStartLine()}); } } } for (Entry<FileObject, List<BugInstance>> e : file2Bugs.entrySet()) { int[] lineOffsets = null; FileObject sourceFile = e.getKey(); DataObject d = DataObject.find(sourceFile); EditorCookie ec = d.getLookup().lookup(EditorCookie.class); Document doc = ec.getDocument(); JavaSource js = null; for (BugInstance b : e.getValue()) { SourceLineAnnotation sourceLine = b.getPrimarySourceLineAnnotation(); if (sourceLine.getStartLine() >= 0) { LazyFixList fixes = prepareFixes(b, inEditor, sourceFile, sourceLine.getStartLine(), null); if (doc != null) { result.add( ErrorDescriptionFactory.createErrorDescription( PREFIX_FINDBUGS + b.getType(), Severity.VERIFIER, b.getMessageWithoutPrefix(), b.getBugPattern().getDetailHTML(), fixes, doc, sourceLine.getStartLine())); } else { if (lineOffsets == null) { lineOffsets = computeLineMap(sourceFile, FileEncodingQuery.getEncoding(sourceFile)); } int edLine = 2 * (Math.min(sourceLine.getStartLine(), lineOffsets.length / 2) - 1); result.add( ErrorDescriptionFactory.createErrorDescription( PREFIX_FINDBUGS + b.getType(), Severity.VERIFIER, b.getMessageWithoutPrefix(), b.getBugPattern().getDetailHTML(), fixes, sourceFile, lineOffsets[edLine], lineOffsets[edLine + 1])); } } else { if (js == null) { js = JavaSource.forFileObject(sourceFile); } addByElementAnnotation(b, info, sourceFile, js, result, inEditor); } } } } catch (ClassNotFoundException ex) { Exceptions.printStackTrace(ex); } catch (IOException ex) { Exceptions.printStackTrace(ex); } catch (InterruptedException ex) { LOG.log(Level.FINE, null, ex); } return result; }
public static Project GetProjectFromActivatedNodes(Node[] activatedNodes) { EditorCookie ec = activatedNodes[0].getLookup().lookup(EditorCookie.class); return GetProjectFromDocument(ec.getDocument()); }