--- a/diff/src/org/netbeans/modules/diff/DiffAction.java Mon Dec 23 14:01:56 2013 +0400 +++ a/diff/src/org/netbeans/modules/diff/DiffAction.java Mon Dec 23 17:11:55 2013 +0400 @@ -72,6 +72,7 @@ import org.netbeans.modules.diff.builtin.DefaultDiff; import org.netbeans.modules.diff.builtin.SingleDiffPanel; import org.netbeans.modules.diff.options.AccessibleJFileChooser; +import org.netbeans.spi.diff.FileChooserProvider; import org.openide.DialogDisplayer; import org.openide.ErrorManager; import org.openide.util.lookup.ProxyLookup; @@ -199,7 +200,7 @@ private FileObject promptForFileobject(FileObject peer) { String path = DiffModuleConfig.getDefault().getPreferences().get("diffToLatestFolder", peer.getParent().getPath()); File latestPath = FileUtil.normalizeFile(new File(path)); - JFileChooser fileChooser = new AccessibleJFileChooser(NbBundle.getMessage(DiffAction.class, "ACSD_BrowseDiffToFile"), latestPath); // NOI18N + JFileChooser fileChooser = FileChooserProvider.createFileChooser(NbBundle.getMessage(DiffAction.class, "ACSD_BrowseDiffToFile"), peer.getParent()); // NOI18N fileChooser.setDialogTitle(NbBundle.getMessage(DiffAction.class, "DiffTo_BrowseFile_Title", peer.getName())); // NOI18N fileChooser.setMultiSelectionEnabled(false); fileChooser.setFileSelectionMode(JFileChooser.FILES_ONLY); --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ a97a4c508134 Mon Dec 23 17:11:55 2013 +0400 @@ -0,0 +1,72 @@ +/* + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER. + * + * Copyright 2013 Oracle and/or its affiliates. All rights reserved. + * + * Oracle and Java are registered trademarks of Oracle and/or its affiliates. + * Other names may be trademarks of their respective owners. + * + * The contents of this file are subject to the terms of either the GNU + * General Public License Version 2 only ("GPL") or the Common + * Development and Distribution License("CDDL") (collectively, the + * "License"). You may not use this file except in compliance with the + * License. You can obtain a copy of the License at + * http://www.netbeans.org/cddl-gplv2.html + * or nbbuild/licenses/CDDL-GPL-2-CP. See the License for the + * specific language governing permissions and limitations under the + * License. When distributing the software, include this License Header + * Notice in each file and include the License file at + * nbbuild/licenses/CDDL-GPL-2-CP. Oracle designates this + * particular file as subject to the "Classpath" exception as provided + * by Oracle in the GPL Version 2 section of the License file that + * accompanied this code. If applicable, add the following below the + * License Header, with the fields enclosed by brackets [] replaced by + * your own identifying information: + * "Portions Copyrighted [year] [name of copyright owner]" + * + * If you wish your version of this file to be governed by only the CDDL + * or only the GPL Version 2, indicate your decision by adding + * "[Contributor] elects to include this software in this distribution + * under the [CDDL or GPL Version 2] license." If you do not indicate a + * single choice of license, a recipient has the option to distribute + * your version of this file under either the CDDL, the GPL Version 2 or + * to extend the choice of license to its licensees as provided above. + * However, if you add GPL Version 2 code and therefore, elected the GPL + * Version 2 license, then the option applies only if the new code is + * made subject to such option by the copyright holder. + * + * Contributor(s): + * + * Portions Copyrighted 2013 Sun Microsystems, Inc. + */ + +package org.netbeans.spi.diff; + +import java.io.File; +import javax.swing.JFileChooser; +import org.netbeans.modules.diff.DiffModuleConfig; +import org.netbeans.modules.diff.options.AccessibleJFileChooser; +import org.openide.filesystems.FileObject; +import org.openide.filesystems.FileUtil; +import org.openide.util.Lookup; + +/** + * + * @author vkvashin + */ +public abstract class FileChooserProvider { + + public static JFileChooser createFileChooser(String acsd, FileObject currentDirectory) { + for (FileChooserProvider provider : Lookup.getDefault().lookupAll(FileChooserProvider.class)) { + JFileChooser chooser = provider.createFileChooserImpl(acsd, currentDirectory); + if (chooser != null) { + return chooser; + } + } +// String path = DiffModuleConfig.getDefault().getPreferences().get("diffToLatestFolder", currentDirectory.getPath()); +// File latestPath = FileUtil.normalizeFile(new File(path)); + return new AccessibleJFileChooser(acsd, FileUtil.toFile(currentDirectory)); + } + + protected abstract JFileChooser createFileChooserImpl(String acsd, FileObject currentDirectory); +} --- a/dlight.remote/nbproject/project.xml Mon Dec 23 14:01:56 2013 +0400 +++ a/dlight.remote/nbproject/project.xml Mon Dec 23 17:11:55 2013 +0400 @@ -15,6 +15,15 @@ + org.netbeans.modules.diff + + + + 1 + 1.45 + + + org.netbeans.modules.dlight.libs.common --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ a97a4c508134 Mon Dec 23 17:11:55 2013 +0400 @@ -0,0 +1,71 @@ +/* + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER. + * + * Copyright 2013 Oracle and/or its affiliates. All rights reserved. + * + * Oracle and Java are registered trademarks of Oracle and/or its affiliates. + * Other names may be trademarks of their respective owners. + * + * The contents of this file are subject to the terms of either the GNU + * General Public License Version 2 only ("GPL") or the Common + * Development and Distribution License("CDDL") (collectively, the + * "License"). You may not use this file except in compliance with the + * License. You can obtain a copy of the License at + * http://www.netbeans.org/cddl-gplv2.html + * or nbbuild/licenses/CDDL-GPL-2-CP. See the License for the + * specific language governing permissions and limitations under the + * License. When distributing the software, include this License Header + * Notice in each file and include the License file at + * nbbuild/licenses/CDDL-GPL-2-CP. Oracle designates this + * particular file as subject to the "Classpath" exception as provided + * by Oracle in the GPL Version 2 section of the License file that + * accompanied this code. If applicable, add the following below the + * License Header, with the fields enclosed by brackets [] replaced by + * your own identifying information: + * "Portions Copyrighted [year] [name of copyright owner]" + * + * If you wish your version of this file to be governed by only the CDDL + * or only the GPL Version 2, indicate your decision by adding + * "[Contributor] elects to include this software in this distribution + * under the [CDDL or GPL Version 2] license." If you do not indicate a + * single choice of license, a recipient has the option to distribute + * your version of this file under either the CDDL, the GPL Version 2 or + * to extend the choice of license to its licensees as provided above. + * However, if you add GPL Version 2 code and therefore, elected the GPL + * Version 2 license, then the option applies only if the new code is + * made subject to such option by the copyright holder. + * + * Contributor(s): + * + * Portions Copyrighted 2013 Sun Microsystems, Inc. + */ + +package org.netbeans.modules.remote.support; + +import javax.swing.JFileChooser; +import org.netbeans.modules.nativeexecution.api.ExecutionEnvironment; +import org.netbeans.modules.remote.api.ui.FileChooserBuilder; +import org.netbeans.modules.remote.spi.FileSystemProvider; +import org.netbeans.spi.diff.FileChooserProvider; +import org.openide.filesystems.FileObject; +import org.openide.util.lookup.ServiceProvider; + +/** + * + * @author vkvashin + */ +@ServiceProvider(service = FileChooserProvider.class) +public class FileChooserProviderImpl extends FileChooserProvider { + + @Override + protected JFileChooser createFileChooserImpl(String acsd, FileObject currentDirectory) { + ExecutionEnvironment env = FileSystemProvider.getExecutionEnvironment(currentDirectory); + if (env != null && env.isRemote()) { + FileChooserBuilder fcb = new FileChooserBuilder(env); + FileChooserBuilder.JFileChooserEx chooser = fcb.createFileChooser(currentDirectory.getPath()); + return chooser; + } + return null; + } + +}