Author: tfmorris Date: 2008-04-06 12:28:59-0700 New Revision: 14295 Modified: trunk/src/app/src/org/argouml/uml/reveng/Import.java trunk/src/app/src/org/argouml/uml/reveng/ImportCommon.java
Log: All multiple disjoint source file selections. Interpret no selection as selecting the current directory. Fix error dialog display Add Java 5 generics. Modified: trunk/src/app/src/org/argouml/uml/reveng/Import.java Url: http://argouml.tigris.org/source/browse/argouml/trunk/src/app/src/org/argouml/uml/reveng/Import.java?view=diff&rev=14295&p1=trunk/src/app/src/org/argouml/uml/reveng/Import.java&p2=trunk/src/app/src/org/argouml/uml/reveng/Import.java&r1=14294&r2=14295 ============================================================================== --- trunk/src/app/src/org/argouml/uml/reveng/Import.java (original) +++ trunk/src/app/src/org/argouml/uml/reveng/Import.java 2008-04-06 12:28:59-0700 @@ -1,5 +1,5 @@ // $Id$ -// Copyright (c) 1996-2007 The Regents of the University of California. All +// Copyright (c) 1996-2008 The Regents of the University of California. All // Rights Reserved. Permission to use, copy, modify, and distribute this // software and its documentation without fee, and without a written // agreement is hereby granted, provided that the above copyright notice @@ -66,6 +66,7 @@ import org.argouml.moduleloader.ModuleInterface; import org.argouml.taskmgmt.ProgressEvent; import org.argouml.taskmgmt.ProgressMonitor; +import org.argouml.uml.reveng.java.JavaImport; import org.argouml.util.SuffixFilter; import org.argouml.util.UIUtils; import org.tigris.gef.base.Globals; @@ -93,8 +94,6 @@ */ public class Import extends ImportCommon implements ImportSettings { - private static final String SEPARATOR = "/"; - private JComponent configPanel; private JCheckBox descend; @@ -130,7 +129,6 @@ private Frame myFrame; - /** * The default extended configuration panel. * TODO: This used to be provided by the abstract class FileImportSupport @@ -554,15 +552,26 @@ private Import theImport; - /* + /** + * Constructs a new ImportFileChooser opened to the given directory. + * + * @param imp the import manager + * @param currentDirectoryPath the directory path * @see javax.swing.JFileChooser#JFileChooser(String) */ public ImportFileChooser(Import imp, String currentDirectoryPath) { super(currentDirectoryPath); theImport = imp; + initChooser(); } - /* + /** + * Constructs a JFileChooser using the given current directory path and + * FileSystemView. + * + * @param imp the import manager + * @param currentDirectoryPath the directory path + * @param fsv the file system view * @see javax.swing.JFileChooser#JFileChooser(String, FileSystemView) */ public ImportFileChooser( @@ -571,17 +580,26 @@ FileSystemView fsv) { super(currentDirectoryPath, fsv); theImport = imp; + initChooser(); } - /* + /** + * Constructs a new default ImportFileChooser. + * + * @param imp the import manager * @see javax.swing.JFileChooser#JFileChooser() */ public ImportFileChooser(Import imp) { super(); theImport = imp; + initChooser(); } - /* + /** + * Constructs a JFileChooser using the given FileSystemView. + * + * @param imp the import manager + * @param fsv the file system view * @see javax.swing.JFileChooser#JFileChooser(FileSystemView) */ public ImportFileChooser( @@ -589,32 +607,51 @@ FileSystemView fsv) { super(fsv); theImport = imp; + initChooser(); } + + private void initChooser() { + setFileSelectionMode(JFileChooser.FILES_AND_DIRECTORIES); + setMultiSelectionEnabled(true); + setSelectedFile(getCurrentDirectory()); + } + /* * @see javax.swing.JFileChooser#approveSelection() */ + @Override public void approveSelection() { - theImport.setSelectedFile(getSelectedFile()); - if (getSelectedFile() != null) { - String path = getSelectedFile().getParent(); - String filename = - path + SEPARATOR + getSelectedFile().getName(); - Globals.setLastDirectory(path); - if (filename != null) { - theImport.disposeDialog(); - // TODO: This is only relevant for Java import - // move out of normal control flow. The OK button of this - // dialog transfers to Import.doFile - new ImportClasspathDialog(theImport); - return; + File[] files = getSelectedFiles(); + File dir = getCurrentDirectory(); + if (files.length == 0) { + files = new File[] {dir}; + } + if (files.length == 1) { + File file = files[0]; + if (file != null && file.isDirectory()) { + dir = file; + } else { + dir = file.getParentFile(); } } + theImport.setSelectedFiles(files); + Globals.setLastDirectory(dir.getPath()); + theImport.disposeDialog(); + + if (theImport.getCurrentModule() instanceof JavaImport) { + // The OK button of this + // dialog transfers to Import.doFile + new ImportClasspathDialog(theImport); + } else { + theImport.doFile(); + } } /* * @see javax.swing.JFileChooser#cancelSelection() */ + @Override public void cancelSelection() { theImport.disposeDialog(); } @@ -739,7 +776,7 @@ String message) { // TODO: Create an error dialog or panel in our progress dialog // for now we just use our old style separate error dialog - JDialog problemsDialog = new ProblemsDialog(message); + JDialog problemsDialog = new ProblemsDialog(getFrame(), message); problemsDialog.setTitle(title); problemsDialog.setVisible(true); // TODO: Only needed while we have a separate problem dialog @@ -799,15 +836,15 @@ /** * The constructor. */ - public ProblemsDialog() { - this(problems.toString()); + ProblemsDialog() { + this(getFrame(), problems.toString()); } /** * The constructor. */ - public ProblemsDialog(String errors) { - super(); + ProblemsDialog(Frame frame, String errors) { + super(frame); setResizable(true); setModal(true); setTitle(Translator.localize("dialog.title.import-problems")); @@ -855,7 +892,7 @@ disposeDialog(); } - public void disposeDialog() { + private void disposeDialog() { setVisible(false); dispose(); } Modified: trunk/src/app/src/org/argouml/uml/reveng/ImportCommon.java Url: http://argouml.tigris.org/source/browse/argouml/trunk/src/app/src/org/argouml/uml/reveng/ImportCommon.java?view=diff&rev=14295&p1=trunk/src/app/src/org/argouml/uml/reveng/ImportCommon.java&p2=trunk/src/app/src/org/argouml/uml/reveng/ImportCommon.java&r1=14294&r2=14295 ============================================================================== --- trunk/src/app/src/org/argouml/uml/reveng/ImportCommon.java (original) +++ trunk/src/app/src/org/argouml/uml/reveng/ImportCommon.java 2008-04-06 12:28:59-0700 @@ -1,5 +1,5 @@ // $Id$ -// Copyright (c) 2006-2007 The Regents of the University of California. All +// Copyright (c) 2006-2008 The Regents of the University of California. All // Rights Reserved. Permission to use, copy, modify, and distribute this // software and its documentation without fee, and without a written // agreement is hereby granted, provided that the above copyright notice @@ -29,6 +29,7 @@ import java.io.StringWriter; import java.net.URL; import java.util.ArrayList; +import java.util.Arrays; import java.util.Collection; import java.util.Collections; import java.util.HashSet; @@ -91,7 +92,7 @@ */ private DiagramInterface diagramInterface; - private File selectedFile; + private File[] selectedFiles; protected ImportCommon() { super(); @@ -172,23 +173,25 @@ } /** - * Get the files. For old style modules, this asks the module for the list. - * For new style modules we generate it ourselves based on their specified + * Get the files. We generate it based on their specified * file suffixes. * @param monitor progress monitor which can be used to cancel long running * request * @return the list of files to be imported */ - protected List getFileList(ProgressMonitor monitor) { - List files; - files = + protected List<File> getFileList(ProgressMonitor monitor) { + List<File> files = Arrays.asList(getSelectedFiles()); + if (files.size() == 1) { + File file = files.get(0); + files = FileImportUtils.getList( - getSelectedFile(), isDescendSelected(), currentModule - .getSuffixFilters(), monitor); - if (getSelectedFile().isDirectory()) { - setSrcPath(getSelectedFile().getAbsolutePath()); - } else { - setSrcPath(null); + file, isDescendSelected(), currentModule + .getSuffixFilters(), monitor); + if (file.isDirectory()) { + setSrcPath(file.getAbsolutePath()); + } else { + setSrcPath(null); + } } @@ -197,7 +200,7 @@ Object model = ProjectManager.getManager().getCurrentProject().getModel(); for (int i = files.size() - 1; i >= 0; i--) { - File f = (File) files.get(i); + File f = files.get(i); String fn = f.getAbsolutePath(); String lm = String.valueOf(f.lastModified()); if (lm.equals( @@ -272,14 +275,33 @@ return modules; } + /** + * @param file the selected file + * @deprecated for 0.25.5 by tfmorris. Use + * [EMAIL PROTECTED] #setSelectedFiles(File[])}. + */ + @Deprecated protected void setSelectedFile(File file) { - selectedFile = file; + selectedFiles = new File[] {file}; } + /** + * @return the first selected file. + * @deprecated for 0.25.4 by tfmorris. Use [EMAIL PROTECTED] #getSelectedFiles()}. + */ + @Deprecated protected File getSelectedFile() { - return selectedFile; + return selectedFiles[0]; + } + + protected void setSelectedFiles(final File[] files) { + selectedFiles = files; } + protected File[] getSelectedFiles() { + return Arrays.copyOf(selectedFiles, selectedFiles.length); + } + protected void setCurrentModule(ImportInterface module) { currentModule = module; } @@ -292,8 +314,9 @@ * Returns the possible languages in which the user can import the sources. * @return a list of Strings with the names of the languages available */ - public List getLanguages() { - return Collections.unmodifiableList(new ArrayList(modules.keySet())); + public List<String> getLanguages() { + return Collections.unmodifiableList( + new ArrayList<String>(modules.keySet())); } /** --------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]
