001    /*
002     *  Licensed under the Apache License, Version 2.0 (the "License");
003     *  you may not use this file except in compliance with the License.
004     *  You may obtain a copy of the License at
005     *
006     *      http://www.apache.org/licenses/LICENSE-2.0
007     *
008     *  Unless required by applicable law or agreed to in writing, software
009     *  distributed under the License is distributed on an "AS IS" BASIS,
010     *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
011     *  See the License for the specific language governing permissions and
012     *  limitations under the License.
013     */
014    /*
015     * This file has been modified by Chris Pheby in accordance with Section 4.2
016     * of the Apache Software License
017     */
018    package org.jadira.dependencynavigator.implementations.local;
019    
020    import org.jadira.dependencynavigator.implementations.Workspace;
021    import org.jadira.dependencynavigator.implementations.WorkspaceLoader;
022    import org.jadira.dependencynavigator.implementations.local.LocalDiskWorkspace;
023    import org.jadira.dependencynavigator.model.ArtifactInitialisationException;
024    import org.jadira.dependencynavigator.model.RootPom;
025    
026    import javax.swing.*;
027    import javax.swing.filechooser.FileFilter;
028    import java.io.File;
029    
030    public class LocalDiskWorkspaceLoader implements WorkspaceLoader {
031        private Workspace workspace;
032        private JFrame frame;
033    
034        private LocalDiskWorkspace localDiskWorkspace() {
035            if (workspace instanceof LocalDiskWorkspace) {
036                return (LocalDiskWorkspace) workspace;
037            }
038            throw new RuntimeException("Expected workspace of type " + LocalDiskWorkspace.class.getName() + " not " + workspace.getClass().getName());
039        }
040    
041        public void loadPom() throws ArtifactInitialisationException {
042    
043            JFileChooser fc = new JFileChooser() {
044    
045                private static final long serialVersionUID = -3542823132189366492L;
046    
047                @Override
048                public void updateUI() {
049                    // workaround for bug http://bugs.sun.com/bugdatabase/view_bug.do?bug_id=6317789
050                    putClientProperty("FileChooser.useShellFolder", Boolean.FALSE);
051                    super.updateUI();
052                }
053            };
054            fc.setCurrentDirectory(localDiskWorkspace().getWorkspaceDirectory());
055            fc.setFileFilter(new FileFilter() {
056    
057                @Override
058                public boolean accept(File f) {
059                    return f.isDirectory() || "pom.xml".equals(f.getName());
060                }
061    
062                @Override
063                public String getDescription() {
064                    return "Maven 2 pom files";
065                }
066    
067            });
068            int returnVal = fc.showOpenDialog(frame);
069            if (returnVal == JFileChooser.APPROVE_OPTION) {
070                File file = fc.getSelectedFile();
071                localDiskWorkspace().loadRootPom(file);
072            }
073        }
074    
075        public RootPom getRoot() {
076            return workspace.getRoot();
077        }
078    
079        public void reloadPom() throws ArtifactInitialisationException {
080            workspace.reloadPomFile();
081        }
082    
083    }