Bump jruby-parser and hopefully see green (commented out tests pass individually -- some state surviving to kill them later -- workaround for now)
2 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
4 * Copyright 1997-2010 Oracle and/or its affiliates. All rights reserved.
6 * Oracle and Java are registered trademarks of Oracle and/or its affiliates.
7 * Other names may be trademarks of their respective owners.
9 * The contents of this file are subject to the terms of either the GNU
10 * General Public License Version 2 only ("GPL") or the Common
11 * Development and Distribution License("CDDL") (collectively, the
12 * "License"). You may not use this file except in compliance with the
13 * License. You can obtain a copy of the License at
14 * http://www.netbeans.org/cddl-gplv2.html
15 * or nbbuild/licenses/CDDL-GPL-2-CP. See the License for the
16 * specific language governing permissions and limitations under the
17 * License. When distributing the software, include this License Header
18 * Notice in each file and include the License file at
19 * nbbuild/licenses/CDDL-GPL-2-CP. Oracle designates this
20 * particular file as subject to the "Classpath" exception as provided
21 * by Oracle in the GPL Version 2 section of the License file that
22 * accompanied this code. If applicable, add the following below the
23 * License Header, with the fields enclosed by brackets [] replaced by
24 * your own identifying information:
25 * "Portions Copyrighted [year] [name of copyright owner]"
29 * The Original Software is NetBeans. The Initial Developer of the Original
30 * Software is Sun Microsystems, Inc. Portions Copyright 1997-2008 Sun
31 * Microsystems, Inc. All Rights Reserved.
33 * If you wish your version of this file to be governed by only the CDDL
34 * or only the GPL Version 2, indicate your decision by adding
35 * "[Contributor] elects to include this software in this distribution
36 * under the [CDDL or GPL Version 2] license." If you do not indicate a
37 * single choice of license, a recipient has the option to distribute
38 * your version of this file under either the CDDL, the GPL Version 2 or
39 * to extend the choice of license to its licensees as provided above.
40 * However, if you add GPL Version 2 code and therefore, elected the GPL
41 * Version 2 license, then the option applies only if the new code is
42 * made subject to such option by the copyright holder.
44 package org.netbeans.modules.refactoring.ruby;
46 import java.io.IOException;
47 import java.lang.ref.WeakReference;
48 import org.netbeans.modules.csl.spi.support.ModificationResult;
49 import org.netbeans.modules.csl.spi.support.ModificationResult.Difference;
50 import org.netbeans.modules.refactoring.spi.SimpleRefactoringElementImplementation;
51 import org.openide.filesystems.FileLock;
52 import org.openide.filesystems.FileObject;
53 import org.openide.text.PositionBounds;
54 import org.openide.util.Exceptions;
55 import org.openide.util.Lookup;
56 import org.openide.util.lookup.Lookups;
62 public class DiffElement extends SimpleRefactoringElementImplementation {
64 private PositionBounds bounds;
65 private String displayText;
66 private FileObject parentFile;
67 private Difference diff;
68 private ModificationResult modification;
69 private WeakReference<String> newFileContent;
71 public DiffElement(Difference diff, PositionBounds bounds, FileObject parentFile, ModificationResult modification) {
73 this.displayText = diff.getDescription();
74 this.parentFile = parentFile;
76 this.modification = modification;
80 public String getDisplayText() {
85 public Lookup getLookup() {
86 // Object composite = ElementGripFactory.getDefault().get(parentFile, bounds.getBegin().getOffset());
87 // if (composite==null)
88 // composite = parentFile;
89 // return Lookups.fixed(composite, diff);
90 return Lookups.fixed(diff);
94 public void setEnabled(boolean enabled) {
95 diff.exclude(!enabled);
96 newFileContent = null;
97 super.setEnabled(enabled);
101 public PositionBounds getPosition() {
105 public String getText() {
110 public void performChange() {
111 String oldFileName = diff.getOldText();
112 String newFileName = diff.getNewText();
114 if (parentFile.getName().equals(oldFileName)) {
116 FileLock fileLock = parentFile.lock();
117 parentFile.rename(fileLock, newFileName, "ruby"); // NOI18N
118 fileLock.releaseLock();
119 } catch (IOException e) {
120 Exceptions.printStackTrace(e);
127 public FileObject getParentFile() {
132 protected String getNewFileContent() {
134 if (newFileContent !=null) {
135 result = newFileContent.get();
140 result = modification.getResultingSource(parentFile);
141 } catch (IOException ex) {
142 Exceptions.printStackTrace(ex);
145 newFileContent = new WeakReference<String>(result);
149 public static DiffElement create(Difference diff, FileObject fileObject, ModificationResult modification) {
150 PositionBounds bounds = new PositionBounds(diff.getStartPosition(), diff.getEndPosition());
152 return new DiffElement(diff, bounds, fileObject, modification);