Author: thn Date: 2008-05-01 11:05:26-0700 New Revision: 14562 Modified: trunk/src/argouml-app/src/org/argouml/uml/reveng/java/JavaImport.java trunk/src/argouml-app/src/org/argouml/uml/reveng/ui/ImportStatusScreen.java trunk/src/argouml-app/src/org/argouml/uml/reveng/ui/ProblemsDialog.java
Log: Fix completed for issue #4615 (Reverse engineering should attempt to continue after error) Modified: trunk/src/argouml-app/src/org/argouml/uml/reveng/java/JavaImport.java Url: http://argouml.tigris.org/source/browse/argouml/trunk/src/argouml-app/src/org/argouml/uml/reveng/java/JavaImport.java?view=diff&rev=14562&p1=trunk/src/argouml-app/src/org/argouml/uml/reveng/java/JavaImport.java&p2=trunk/src/argouml-app/src/org/argouml/uml/reveng/java/JavaImport.java&r1=14561&r2=14562 ============================================================================== --- trunk/src/argouml-app/src/org/argouml/uml/reveng/java/JavaImport.java (original) +++ trunk/src/argouml-app/src/org/argouml/uml/reveng/java/JavaImport.java 2008-05-01 11:05:26-0700 @@ -29,6 +29,8 @@ import java.io.FileInputStream; import java.io.IOException; import java.io.InputStreamReader; +import java.io.PrintWriter; +import java.io.StringWriter; import java.io.UnsupportedEncodingException; import java.util.Collection; import java.util.HashSet; @@ -102,7 +104,22 @@ } Object file = it.next(); if (file instanceof File) { - parseFile(p, (File) file, settings, pass); + try { + parseFile(p, (File) file, settings, pass); + } catch (ImportException e) { + StringWriter sw = new StringWriter(); + PrintWriter pw = new java.io.PrintWriter(sw); + e.printStackTrace(pw); + monitor.notifyMessage( + Translator.localize( + "dialog.title.import-problems"), //$NON-NLS-1$ + Translator.localize( + "label.import-problems"), //$NON-NLS-1$ + sw.toString()); + if (monitor.isCanceled()) { + break; + } + } monitor.updateProgress(count++); monitor.updateSubTask(Translator.localize( "dialog.import.parsingAction", @@ -183,9 +200,10 @@ LOG.error(e.getClass().getName() + errorString, e); throw new ImportException(errorString, e); + } finally { + newElements.addAll(modeller.getNewElements()); + in.close(); } - newElements.addAll(modeller.getNewElements()); - in.close(); } catch (IOException e) { throw new ImportException(buildErrorString(f), e); } Modified: trunk/src/argouml-app/src/org/argouml/uml/reveng/ui/ImportStatusScreen.java Url: http://argouml.tigris.org/source/browse/argouml/trunk/src/argouml-app/src/org/argouml/uml/reveng/ui/ImportStatusScreen.java?view=diff&rev=14562&p1=trunk/src/argouml-app/src/org/argouml/uml/reveng/ui/ImportStatusScreen.java&p2=trunk/src/argouml-app/src/org/argouml/uml/reveng/ui/ImportStatusScreen.java&r1=14561&r2=14562 ============================================================================== --- trunk/src/argouml-app/src/org/argouml/uml/reveng/ui/ImportStatusScreen.java (original) +++ trunk/src/argouml-app/src/org/argouml/uml/reveng/ui/ImportStatusScreen.java 2008-05-01 11:05:26-0700 @@ -156,13 +156,16 @@ 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(parentFrame, message); + ProblemsDialog problemsDialog = new ProblemsDialog(parentFrame, message); problemsDialog.setTitle(title); problemsDialog.setVisible(true); + cancelled = problemsDialog.isAborted(); // TODO: Only needed while we have a separate problem dialog // (see above) - setVisible(false); - dispose(); + if (cancelled) { + setVisible(false); + dispose(); + } } /* Modified: trunk/src/argouml-app/src/org/argouml/uml/reveng/ui/ProblemsDialog.java Url: http://argouml.tigris.org/source/browse/argouml/trunk/src/argouml-app/src/org/argouml/uml/reveng/ui/ProblemsDialog.java?view=diff&rev=14562&p1=trunk/src/argouml-app/src/org/argouml/uml/reveng/ui/ProblemsDialog.java&p2=trunk/src/argouml-app/src/org/argouml/uml/reveng/ui/ProblemsDialog.java&r1=14561&r2=14562 ============================================================================== --- trunk/src/argouml-app/src/org/argouml/uml/reveng/ui/ProblemsDialog.java (original) +++ trunk/src/argouml-app/src/org/argouml/uml/reveng/ui/ProblemsDialog.java 2008-05-01 11:05:26-0700 @@ -74,6 +74,7 @@ private JButton abortButton; private JButton continueButton; private JLabel northLabel; + private boolean aborted = false; /** * The constructor. @@ -107,6 +108,7 @@ bottomPanel.add(continueButton); bottomPanel.add(abortButton); getContentPane().add(bottomPanel, BorderLayout.SOUTH); + continueButton.requestFocusInWindow(); // listeners continueButton.addActionListener(this); @@ -127,9 +129,20 @@ * @see java.awt.event.ActionListener#actionPerformed(java.awt.event.ActionEvent) */ public void actionPerformed(ActionEvent e) { + if (e.getSource().equals(abortButton)) { + aborted = true; + } disposeDialog(); } + /** + * Returns whether the Abort button was pressed. + * @return aborted + */ + public boolean isAborted() { + return aborted; + } + private void disposeDialog() { setVisible(false); dispose(); --------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]
