Author: thn
Date: 2008-04-30 14:25:08-0700
New Revision: 14537

Added:
   trunk/src/argouml-app/src/org/argouml/uml/reveng/ui/ImportStatusScreen.java  
 (contents, props changed)
   trunk/src/argouml-app/src/org/argouml/uml/reveng/ui/ProblemsDialog.java   
(contents, props changed)
Modified:
   trunk/src/argouml-app/src/org/argouml/i18n/button.properties
   trunk/src/argouml-app/src/org/argouml/uml/reveng/Import.java
   trunk/src/argouml-app/src/org/argouml/uml/reveng/ImportCommon.java

Log:
First step to solve issue #4615 (Reverse engineering should attempt to continue 
after error):

1. extracting 2 classes from Import.java

2. changed GUI of ProblemDialog (Continue&Abort instead of Cancel)

Modified: trunk/src/argouml-app/src/org/argouml/i18n/button.properties
Url: 
http://argouml.tigris.org/source/browse/argouml/trunk/src/argouml-app/src/org/argouml/i18n/button.properties?view=diff&rev=14537&p1=trunk/src/argouml-app/src/org/argouml/i18n/button.properties&p2=trunk/src/argouml-app/src/org/argouml/i18n/button.properties&r1=14536&r2=14537
==============================================================================
--- trunk/src/argouml-app/src/org/argouml/i18n/button.properties        
(original)
+++ trunk/src/argouml-app/src/org/argouml/i18n/button.properties        
2008-04-30 14:25:08-0700
@@ -24,6 +24,7 @@
 #
 # Keys in alphabetical order.
 #
+button.abort = Abort
 button.add = Add
 button.add-rule = Add Rule
 button.add-stereo = Add Stereotype
@@ -38,6 +39,7 @@
 button.cancel.mnemonic = C
 button.close = Close
 button.close.mnemonic = C
+button.continue = Continue
 button.copy-to-clipboard = Copy to Clipboard
 button.copy-to-clipboard.mnemonic = O
 button.delete = Delete

Modified: trunk/src/argouml-app/src/org/argouml/uml/reveng/Import.java
Url: 
http://argouml.tigris.org/source/browse/argouml/trunk/src/argouml-app/src/org/argouml/uml/reveng/Import.java?view=diff&rev=14537&p1=trunk/src/argouml-app/src/org/argouml/uml/reveng/Import.java&p2=trunk/src/argouml-app/src/org/argouml/uml/reveng/Import.java&r1=14536&r2=14537
==============================================================================
--- trunk/src/argouml-app/src/org/argouml/uml/reveng/Import.java        
(original)
+++ trunk/src/argouml-app/src/org/argouml/uml/reveng/Import.java        
2008-04-30 14:25:08-0700
@@ -67,6 +67,7 @@
 import org.argouml.taskmgmt.ProgressEvent;
 import org.argouml.taskmgmt.ProgressMonitor;
 import org.argouml.uml.reveng.java.JavaImport;
+import org.argouml.uml.reveng.ui.ImportStatusScreen;
 import org.argouml.util.SuffixFilter;
 import org.argouml.util.UIUtils;
 import org.tigris.gef.base.Globals;
@@ -123,8 +124,6 @@
     private JDialog dialog;
 
     private ImportStatusScreen iss;
-
-    private StringBuffer problems = new StringBuffer();
     
     private Frame myFrame;
 
@@ -437,7 +436,7 @@
      * parser methods depending on the type of the file.<p>
      */
     public void doFile() {
-        iss = new ImportStatusScreen("Importing", "Splash");
+        iss = new ImportStatusScreen(myFrame, "Importing", "Splash");
         Thread t = new Thread(new Runnable() {
             public void run() {
                 doImport(iss);
@@ -658,259 +657,12 @@
 
     }
 
-
-    /**
-     * A window that shows the progress bar and a cancel button.
-     * As a convenience to callers which may be executing on a thread other
-     * than the Swing event thread, all methods use 
SwingUtilities.invokeLater()
-     * to make sure that Swing calls happen on the appropriate thread.
-     *
-     * TODO: React on the close button as if the Cancel button was pressed.
-     * 
-     * TODO: Refactor to use a common progress dialog.  There's really no 
reason
-     * to have our own specific implementation - tfm - 20070201
-     */
-    class ImportStatusScreen extends JDialog implements ProgressMonitor {
-
-        private JButton cancelButton;
-
-        private JLabel progressLabel;
-
-        private JProgressBar progress;
-
-        private boolean cancelled = false;
-
-        /**
-         * The constructor.
-         *
-         * @param title
-         * @param iconName
-         */
-        public ImportStatusScreen(String title, String iconName) {
-            super(myFrame, true);
-            if (title != null) {
-                setTitle(title);
-            }
-            Dimension scrSize = Toolkit.getDefaultToolkit().getScreenSize();
-            getContentPane().setLayout(new BorderLayout(4, 4));
-
-            // Parsing file x of z.
-            JPanel topPanel = new JPanel();
-            progressLabel = new JLabel();
-            progressLabel.setPreferredSize(new Dimension(400, 20));
-            progressLabel.setHorizontalAlignment(SwingConstants.RIGHT);
-            topPanel.add(progressLabel);
-            getContentPane().add(topPanel, BorderLayout.NORTH);
-
-            // progress bar
-            progress = new JProgressBar();
-            progress.setPreferredSize(new Dimension(350, 20));
-            getContentPane().add(progress, BorderLayout.CENTER);
-
-            // stop button
-            cancelButton = new JButton(Translator.localize("button.cancel"));
-            JPanel bottomPanel = new JPanel();
-            bottomPanel.add(cancelButton);
-            getContentPane().add(bottomPanel, BorderLayout.SOUTH);
-            cancelButton.addActionListener(new ActionListener() {
-
-                public void actionPerformed(ActionEvent e) {
-                    cancelled = true;
-
-                }
-
-            });
-
-            pack();
-            Dimension contentPaneSize = getContentPane().getPreferredSize();
-            setLocation(scrSize.width / 2 - contentPaneSize.width / 2,
-                    scrSize.height / 2 - contentPaneSize.height / 2);
-            setResizable(false);
-        }
-
-        public void setMaximumProgress(final int i) {
-            SwingUtilities.invokeLater(new Runnable () {
-                public void run() {
-                    progress.setMaximum(i);
-                    setVisible(true);
-                }
-            });
-        }
-
-        public void updateProgress(final int i) {
-            SwingUtilities.invokeLater(new Runnable () {
-                public void run() {
-                    progress.setValue(i);
-                }
-            });
-        }
-
-        /**
-         * The UID.
-         */
-        private static final long serialVersionUID = -1336242911879462274L;
-
-        /*
-         * @see org.argouml.application.api.ProgressMonitor#close()
-         */
-        public void close() {
-            SwingUtilities.invokeLater(new Runnable () {
-                public void run() {
-                    setVisible(false);
-                    dispose();
-                }
-            });
-        }
-
-        /*
-         * @see org.argouml.application.api.ProgressMonitor#isCanceled()
-         */
-        public boolean isCanceled() {
-            return cancelled;
-        }
-
-        /*
-         * @see 
org.argouml.application.api.ProgressMonitor#notifyMessage(java.lang.String, 
java.lang.String, java.lang.String)
-         */
-        public void notifyMessage(String title, String introduction,
-                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(getFrame(), message);
-            problemsDialog.setTitle(title);
-            problemsDialog.setVisible(true);
-            // TODO: Only needed while we have a separate problem dialog
-            // (see above)
-            setVisible(false);
-            dispose();
-        }
-
-        /*
-         * @see org.argouml.application.api.ProgressMonitor#notifyNullAction()
-         */
-        public void notifyNullAction() {
-            String msg = Translator.localize("label.import.empty");
-            notifyMessage(msg, msg, msg);
-        }
-
-        /*
-         * @see 
org.argouml.application.api.ProgressMonitor#updateMainTask(java.lang.String)
-         */
-        public void updateMainTask(final String name) {
-            SwingUtilities.invokeLater(new Runnable () {
-                public void run() {
-                    setTitle(name);
-                }
-            });
-        }
-
-        /*
-         * @see 
org.argouml.application.api.ProgressMonitor#updateSubTask(java.lang.String)
-         */
-        public void updateSubTask(final String action) {
-            SwingUtilities.invokeLater(new Runnable () {
-                public void run() {
-                    progressLabel.setText(action);
-                }
-            });
-        }
-
-        /*
-         * @see 
org.argouml.persistence.ProgressListener#progress(org.argouml.persistence.ProgressEvent)
-         */
-        public void progress(ProgressEvent event) throws InterruptedException {
-            // ignored
-        }
-
-    }
-
-
-    /**
-     * A window that shows the problems occured during import.
-     */
-    class ProblemsDialog extends JDialog implements ActionListener {
-
-        private JButton closeButton;
-        private JLabel northLabel;
-
-        /**
-         * The constructor.
-         */
-        ProblemsDialog() {
-            this(getFrame(), problems.toString());
-        }
-
-        /**
-         * The constructor.
-         */
-        ProblemsDialog(Frame frame, String errors) {
-            super(frame);
-            setResizable(true);
-            setModal(true);
-            setTitle(Translator.localize("dialog.title.import-problems"));
-
-            Dimension scrSize = Toolkit.getDefaultToolkit().getScreenSize();
-            getContentPane().setLayout(new BorderLayout(0, 0));
-
-            // the introducing label
-            northLabel =
-                new JLabel(Translator.localize("label.import-problems"));
-            getContentPane().add(northLabel, BorderLayout.NORTH);
-
-            // the text box containing the problem messages
-            JEditorPane textArea = new JEditorPane();
-            textArea.setText(errors);
-            JPanel centerPanel = new JPanel(new BorderLayout());
-            centerPanel.add(new JScrollPane(textArea));
-            centerPanel.setPreferredSize(new Dimension(600, 200));
-            getContentPane().add(centerPanel);
-
-            // close button
-            closeButton = new JButton(Translator.localize("button.close"));
-            JPanel bottomPanel = new JPanel();
-            bottomPanel.add(closeButton);
-            getContentPane().add(bottomPanel, BorderLayout.SOUTH);
-
-            // listeners
-            closeButton.addActionListener(this);
-            addWindowListener(new WindowAdapter() {
-                public void windowClosing(WindowEvent evt) {
-                    disposeDialog();
-                }
-            });
-
-            pack();
-            Dimension contentPaneSize = getContentPane().getSize();
-            setLocation(scrSize.width / 2 - contentPaneSize.width / 2,
-                    scrSize.height / 2 - contentPaneSize.height / 2);
-        }
-
-        /*
-         * @see 
java.awt.event.ActionListener#actionPerformed(java.awt.event.ActionEvent)
-         */
-        public void actionPerformed(ActionEvent e) {
-            disposeDialog();
-        }
-
-        private void disposeDialog() {
-            setVisible(false);
-            dispose();
-        }
-
-        /**
-         * The UID.
-         */
-        private static final long serialVersionUID = -9221358976863603143L;
-    }
-
     /**
      * @return Returns the Frame.
      */
     public Frame getFrame() {
         return myFrame;
     }
-
-
 }
 
 /**
@@ -1112,10 +864,8 @@
         }
     }
 
-
     /**
      * The UID.
      */
     private static final long serialVersionUID = -8684620532717336574L;
 }
-

Modified: trunk/src/argouml-app/src/org/argouml/uml/reveng/ImportCommon.java
Url: 
http://argouml.tigris.org/source/browse/argouml/trunk/src/argouml-app/src/org/argouml/uml/reveng/ImportCommon.java?view=diff&rev=14537&p1=trunk/src/argouml-app/src/org/argouml/uml/reveng/ImportCommon.java&p2=trunk/src/argouml-app/src/org/argouml/uml/reveng/ImportCommon.java&r1=14536&r2=14537
==============================================================================
--- trunk/src/argouml-app/src/org/argouml/uml/reveng/ImportCommon.java  
(original)
+++ trunk/src/argouml-app/src/org/argouml/uml/reveng/ImportCommon.java  
2008-04-30 14:25:08-0700
@@ -50,6 +50,7 @@
 import org.argouml.uml.diagram.static_structure.ClassDiagramGraphModel;

 import org.argouml.uml.diagram.static_structure.layout.ClassdiagramLayouter;

 import org.argouml.uml.reveng.ImportInterface.ImportException;

+import org.argouml.uml.reveng.ui.ImportStatusScreen;

 import org.tigris.gef.base.Globals;

 

 /**

@@ -502,7 +503,7 @@
      *            a ProgressMonitor to both receive progress updates and to be

      *            polled for user requests to cancel.

      */

-    protected void doImport(ProgressMonitor monitor) {

+    protected void doImport(ImportStatusScreen monitor) {

         // Roughly equivalent to and derived from old Import.doFile()

         monitor.setMaximumProgress(MAX_PROGRESS_PREPARE + MAX_PROGRESS_IMPORT);

         int progress = 0;


Added: 
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=auto&rev=14537
==============================================================================
--- (empty file)
+++ trunk/src/argouml-app/src/org/argouml/uml/reveng/ui/ImportStatusScreen.java 
2008-04-30 14:25:08-0700
@@ -0,0 +1,205 @@
+// $Id$
+// Copyright (c) 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
+// and this paragraph appear in all copies. This software program and
+// documentation are copyrighted by The Regents of the University of
+// California. The software program and documentation are supplied "AS
+// IS", without any accompanying services from The Regents. The Regents
+// does not warrant that the operation of the program will be
+// uninterrupted or error-free. The end-user understands that the program
+// was developed for research purposes and is advised not to rely
+// exclusively on the program for any reason. IN NO EVENT SHALL THE
+// UNIVERSITY OF CALIFORNIA BE LIABLE TO ANY PARTY FOR DIRECT, INDIRECT,
+// SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES, INCLUDING LOST PROFITS,
+// ARISING OUT OF THE USE OF THIS SOFTWARE AND ITS DOCUMENTATION, EVEN IF
+// THE UNIVERSITY OF CALIFORNIA HAS BEEN ADVISED OF THE POSSIBILITY OF
+// SUCH DAMAGE. THE UNIVERSITY OF CALIFORNIA SPECIFICALLY DISCLAIMS ANY
+// WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
+// MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE SOFTWARE
+// PROVIDED HEREUNDER IS ON AN "AS IS" BASIS, AND THE UNIVERSITY OF
+// CALIFORNIA HAS NO OBLIGATIONS TO PROVIDE MAINTENANCE, SUPPORT,
+// UPDATES, ENHANCEMENTS, OR MODIFICATIONS.
+
+package org.argouml.uml.reveng.ui;
+
+import java.awt.BorderLayout;
+import java.awt.Dimension;
+import java.awt.Frame;
+import java.awt.Toolkit;
+import java.awt.event.ActionEvent;
+import java.awt.event.ActionListener;
+
+import javax.swing.JButton;
+import javax.swing.JDialog;
+import javax.swing.JLabel;
+import javax.swing.JPanel;
+import javax.swing.JProgressBar;
+import javax.swing.SwingConstants;
+import javax.swing.SwingUtilities;
+
+import org.argouml.i18n.Translator;
+import org.argouml.taskmgmt.ProgressEvent;
+import org.argouml.taskmgmt.ProgressMonitor;
+
+/**
+ * A window that shows the progress bar and a cancel button.
+ * As a convenience to callers which may be executing on a thread other
+ * than the Swing event thread, all methods use SwingUtilities.invokeLater()
+ * to make sure that Swing calls happen on the appropriate thread.
+ *
+ * TODO: React on the close button as if the Cancel button was pressed.
+ */
+public class ImportStatusScreen extends JDialog implements ProgressMonitor {
+    
+    private Frame parentFrame;
+    private JButton cancelButton;
+    private JLabel progressLabel;
+    private JProgressBar progress;
+    private boolean cancelled = false;
+
+    /**
+     * The constructor.
+     *
+     * @param title
+     * @param iconName
+     */
+    public ImportStatusScreen(Frame frame, String title, String iconName) {
+        super(frame, true);
+        if (title != null) {
+            setTitle(title);
+        }
+        Dimension scrSize = Toolkit.getDefaultToolkit().getScreenSize();
+        getContentPane().setLayout(new BorderLayout(4, 4));
+        parentFrame = frame;
+
+        // Parsing file x of z.
+        JPanel topPanel = new JPanel();
+        progressLabel = new JLabel();
+        progressLabel.setPreferredSize(new Dimension(400, 20));
+        progressLabel.setHorizontalAlignment(SwingConstants.RIGHT);
+        topPanel.add(progressLabel);
+        getContentPane().add(topPanel, BorderLayout.NORTH);
+
+        // progress bar
+        progress = new JProgressBar();
+        progress.setPreferredSize(new Dimension(350, 20));
+        getContentPane().add(progress, BorderLayout.CENTER);
+
+        // stop button
+        cancelButton = new JButton(Translator.localize("button.cancel"));
+        JPanel bottomPanel = new JPanel();
+        bottomPanel.add(cancelButton);
+        getContentPane().add(bottomPanel, BorderLayout.SOUTH);
+        cancelButton.addActionListener(new ActionListener() {
+
+            public void actionPerformed(ActionEvent e) {
+                cancelled = true;
+
+            }
+
+        });
+
+        pack();
+        Dimension contentPaneSize = getContentPane().getPreferredSize();
+        setLocation(scrSize.width / 2 - contentPaneSize.width / 2,
+                scrSize.height / 2 - contentPaneSize.height / 2);
+        setResizable(false);
+    }
+
+    public void setMaximumProgress(final int i) {
+        SwingUtilities.invokeLater(new Runnable () {
+            public void run() {
+                progress.setMaximum(i);
+                setVisible(true);
+            }
+        });
+    }
+
+    public void updateProgress(final int i) {
+        SwingUtilities.invokeLater(new Runnable () {
+            public void run() {
+                progress.setValue(i);
+            }
+        });
+    }
+
+    /**
+     * The UID.
+     */
+    private static final long serialVersionUID = -1336242911879462274L;
+
+    /*
+     * @see org.argouml.application.api.ProgressMonitor#close()
+     */
+    public void close() {
+        SwingUtilities.invokeLater(new Runnable () {
+            public void run() {
+                setVisible(false);
+                dispose();
+            }
+        });
+    }
+
+    /*
+     * @see org.argouml.application.api.ProgressMonitor#isCanceled()
+     */
+    public boolean isCanceled() {
+        return cancelled;
+    }
+
+    /*
+     * @see 
org.argouml.application.api.ProgressMonitor#notifyMessage(java.lang.String, 
java.lang.String, java.lang.String)
+     */
+    public void notifyMessage(String title, String introduction,
+            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.setTitle(title);
+        problemsDialog.setVisible(true);
+        // TODO: Only needed while we have a separate problem dialog
+        // (see above)
+        setVisible(false);
+        dispose();
+    }
+
+    /*
+     * @see org.argouml.application.api.ProgressMonitor#notifyNullAction()
+     */
+    public void notifyNullAction() {
+        String msg = Translator.localize("label.import.empty");
+        notifyMessage(msg, msg, msg);
+    }
+
+    /*
+     * @see 
org.argouml.application.api.ProgressMonitor#updateMainTask(java.lang.String)
+     */
+    public void updateMainTask(final String name) {
+        SwingUtilities.invokeLater(new Runnable () {
+            public void run() {
+                setTitle(name);
+            }
+        });
+    }
+
+    /*
+     * @see 
org.argouml.application.api.ProgressMonitor#updateSubTask(java.lang.String)
+     */
+    public void updateSubTask(final String action) {
+        SwingUtilities.invokeLater(new Runnable () {
+            public void run() {
+                progressLabel.setText(action);
+            }
+        });
+    }
+
+    /*
+     * @see 
org.argouml.persistence.ProgressListener#progress(org.argouml.persistence.ProgressEvent)
+     */
+    public void progress(ProgressEvent event) throws InterruptedException {
+        // ignored
+    }
+
+}

Added: 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=auto&rev=14537
==============================================================================
--- (empty file)
+++ trunk/src/argouml-app/src/org/argouml/uml/reveng/ui/ProblemsDialog.java     
2008-04-30 14:25:08-0700
@@ -0,0 +1,142 @@
+// $Id$
+// Copyright (c) 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
+// and this paragraph appear in all copies. This software program and
+// documentation are copyrighted by The Regents of the University of
+// California. The software program and documentation are supplied "AS
+// IS", without any accompanying services from The Regents. The Regents
+// does not warrant that the operation of the program will be
+// uninterrupted or error-free. The end-user understands that the program
+// was developed for research purposes and is advised not to rely
+// exclusively on the program for any reason. IN NO EVENT SHALL THE
+// UNIVERSITY OF CALIFORNIA BE LIABLE TO ANY PARTY FOR DIRECT, INDIRECT,
+// SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES, INCLUDING LOST PROFITS,
+// ARISING OUT OF THE USE OF THIS SOFTWARE AND ITS DOCUMENTATION, EVEN IF
+// THE UNIVERSITY OF CALIFORNIA HAS BEEN ADVISED OF THE POSSIBILITY OF
+// SUCH DAMAGE. THE UNIVERSITY OF CALIFORNIA SPECIFICALLY DISCLAIMS ANY
+// WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
+// MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE SOFTWARE
+// PROVIDED HEREUNDER IS ON AN "AS IS" BASIS, AND THE UNIVERSITY OF
+// CALIFORNIA HAS NO OBLIGATIONS TO PROVIDE MAINTENANCE, SUPPORT,
+// UPDATES, ENHANCEMENTS, OR MODIFICATIONS.
+
+package org.argouml.uml.reveng.ui;
+
+import java.awt.BorderLayout;
+import java.awt.Dimension;
+import java.awt.Frame;
+import java.awt.Toolkit;
+import java.awt.event.ActionEvent;
+import java.awt.event.ActionListener;
+import java.awt.event.WindowAdapter;
+import java.awt.event.WindowEvent;
+
+import javax.swing.JButton;
+import javax.swing.JDialog;
+import javax.swing.JEditorPane;
+import javax.swing.JLabel;
+import javax.swing.JPanel;
+import javax.swing.JScrollPane;
+//$Id$
+//Copyright (c) 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
+//and this paragraph appear in all copies. This software program and
+//documentation are copyrighted by The Regents of the University of
+//California. The software program and documentation are supplied "AS
+//IS", without any accompanying services from The Regents. The Regents
+//does not warrant that the operation of the program will be
+//uninterrupted or error-free. The end-user understands that the program
+//was developed for research purposes and is advised not to rely
+//exclusively on the program for any reason. IN NO EVENT SHALL THE
+//UNIVERSITY OF CALIFORNIA BE LIABLE TO ANY PARTY FOR DIRECT, INDIRECT,
+//SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES, INCLUDING LOST PROFITS,
+//ARISING OUT OF THE USE OF THIS SOFTWARE AND ITS DOCUMENTATION, EVEN IF
+//THE UNIVERSITY OF CALIFORNIA HAS BEEN ADVISED OF THE POSSIBILITY OF
+//SUCH DAMAGE. THE UNIVERSITY OF CALIFORNIA SPECIFICALLY DISCLAIMS ANY
+//WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
+//MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE SOFTWARE
+//PROVIDED HEREUNDER IS ON AN "AS IS" BASIS, AND THE UNIVERSITY OF
+//CALIFORNIA HAS NO OBLIGATIONS TO PROVIDE MAINTENANCE, SUPPORT,
+//UPDATES, ENHANCEMENTS, OR MODIFICATIONS.
+
+import org.argouml.i18n.Translator;
+
+/**
+ * A window that shows the problems occurred during import.
+ */
+class ProblemsDialog extends JDialog implements ActionListener {
+
+    private Frame parentFrame;
+    private JButton abortButton;
+    private JButton continueButton;
+    private JLabel northLabel;
+
+    /**
+     * The constructor.
+     */
+    ProblemsDialog(Frame frame, String errors) {
+        super(frame);
+        setResizable(true);
+        setModal(true);
+        setTitle(Translator.localize("dialog.title.import-problems"));
+
+        Dimension scrSize = Toolkit.getDefaultToolkit().getScreenSize();
+        getContentPane().setLayout(new BorderLayout(0, 0));
+
+        // the introducing label
+        northLabel =
+            new JLabel(Translator.localize("label.import-problems"));
+        getContentPane().add(northLabel, BorderLayout.NORTH);
+
+        // the text box containing the problem messages
+        JEditorPane textArea = new JEditorPane();
+        textArea.setText(errors);
+        JPanel centerPanel = new JPanel(new BorderLayout());
+        centerPanel.add(new JScrollPane(textArea));
+        centerPanel.setPreferredSize(new Dimension(600, 200));
+        getContentPane().add(centerPanel);
+
+        // continue and abort buttons
+        continueButton = new JButton(Translator.localize("button.continue"));
+        abortButton = new JButton(Translator.localize("button.abort"));
+        JPanel bottomPanel = new JPanel();
+        bottomPanel.add(continueButton);
+        bottomPanel.add(abortButton);
+        getContentPane().add(bottomPanel, BorderLayout.SOUTH);
+
+        // listeners
+        continueButton.addActionListener(this);
+        abortButton.addActionListener(this);
+        addWindowListener(new WindowAdapter() {
+            public void windowClosing(WindowEvent evt) {
+                disposeDialog();
+            }
+        });
+
+        pack();
+        Dimension contentPaneSize = getContentPane().getSize();
+        setLocation(scrSize.width / 2 - contentPaneSize.width / 2,
+                scrSize.height / 2 - contentPaneSize.height / 2);
+    }
+
+    /*
+     * @see 
java.awt.event.ActionListener#actionPerformed(java.awt.event.ActionEvent)
+     */
+    public void actionPerformed(ActionEvent e) {
+        disposeDialog();
+    }
+
+    private void disposeDialog() {
+        setVisible(false);
+        dispose();
+    }
+
+    /**
+     * The UID.
+     */
+    private static final long serialVersionUID = -9221358976863603143L;
+}

---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to