OSDN Git Service

show warning when closing window without saving configuration
authortama3 <tama3@acee48c3-7b26-0410-bdac-b3d0e5314bbc>
Thu, 4 Oct 2007 10:41:54 +0000 (10:41 +0000)
committertama3 <tama3@acee48c3-7b26-0410-bdac-b3d0e5314bbc>
Thu, 4 Oct 2007 10:41:54 +0000 (10:41 +0000)
git-svn-id: svn+ssh://svn.sourceforge.jp/svnroot/stigmata/trunk@236 acee48c3-7b26-0410-bdac-b3d0e5314bbc

src/main/java/jp/naist/se/stigmata/format/xml/BirthmarkComparisonResultXmlFormat.java
src/main/java/jp/naist/se/stigmata/result/ExtractionResultSetFactory.java
src/main/java/jp/naist/se/stigmata/result/XmlFileExtractionResultSet.java
src/main/java/jp/naist/se/stigmata/ui/swing/ClasspathSettingsPane.java
src/main/java/jp/naist/se/stigmata/ui/swing/PropertyEditPane.java
src/main/java/jp/naist/se/stigmata/ui/swing/StigmataFrame.java
src/main/java/jp/naist/se/stigmata/ui/swing/WellknownClassesSettingsPane.java
src/main/resources/resources/messages.properties
src/main/resources/resources/messages_ja.source

index eb5e8bd..ba334cd 100644 (file)
@@ -74,7 +74,6 @@ public class BirthmarkComparisonResultXmlFormat extends AbstractBirthmarkCompari
         out.printf("        <name>%s</name>%n", list.escapeToXmlString(set.getName()));\r
         out.printf("        <location>%s</location>%n", list.escapeToXmlString(set.getLocation()));\r
         out.printf("      </target%d>%n", index);\r
-\r
     }\r
 \r
     private void printPairElement(PrintWriter out, ComparisonPairElement e){\r
index d8bbf77..f2b83f1 100755 (executable)
@@ -24,7 +24,7 @@ public class ExtractionResultSetFactory{
 \r
     private ExtractionResultSetFactory(){\r
         map.put(BirthmarkStoreTarget.MEMORY.name(),        MemoryExtractionResultSet.class);\r
-        map.put(BirthmarkStoreTarget.XMLFILE.name(),      XmlFileExtractionResultSet.class);\r
+        map.put(BirthmarkStoreTarget.XMLFILE.name(),       XmlFileExtractionResultSet.class);\r
         map.put(BirthmarkStoreTarget.MEMORY_SINGLE.name(), SingleExtractionResultSet.class);\r
     }\r
 \r
index 5813186..7a0c72e 100755 (executable)
@@ -36,6 +36,8 @@ import jp.naist.se.stigmata.ExtractionTarget;
 import jp.naist.se.stigmata.spi.BirthmarkSpi;
 
 /**
+ * This class manages extracted birthmarks as xml file.
+ * This instance do not use {@link ExtractionTarget <code>ExtractionTarget</code>}.
  * 
  * @author Haruaki Tamada
  * @version $Revision$ $Date$
index eb1d5cf..50d18d7 100644 (file)
@@ -84,6 +84,7 @@ public class ClasspathSettingsPane extends JPanel{
     private void addClasspath(TargetSelectionPane target, String classpath){\r
         if(classpath != null){\r
             target.addValues(classpath.split(System.getProperty("path.separator")));\r
+            stigmata.setNeedToSaveSettings(true);\r
         }\r
     }\r
 \r
@@ -179,6 +180,13 @@ public class ClasspathSettingsPane extends JPanel{
                 );\r
             }\r
         };\r
+\r
+        classpath.addDataChangeListener(new DataChangeListener(){\r
+            public void valueChanged(Object source){\r
+                stigmata.setNeedToSaveSettings(true);\r
+            }\r
+        });\r
+\r
         findButton.addActionListener(action);\r
         text.addActionListener(action);\r
     }\r
index ee0582c..4b94347 100644 (file)
@@ -83,6 +83,7 @@ public class PropertyEditPane extends JPanel{
         if(index >= 0){\r
             model.removeRow(index);\r
         }\r
+        stigmata.setNeedToSaveSettings(true);\r
     }\r
 \r
     private void addOrUpdateProperty(String name, String value){\r
@@ -93,6 +94,7 @@ public class PropertyEditPane extends JPanel{
         else{\r
             model.addRow(new Object[] { name, value, });\r
         }\r
+        stigmata.setNeedToSaveSettings(true);\r
     }\r
 \r
     private int findIndex(String name){\r
@@ -146,6 +148,7 @@ public class PropertyEditPane extends JPanel{
                 name.getText().trim(),\r
                 value.getText()\r
             });\r
+            stigmata.setNeedToSaveSettings(true);\r
         }\r
     }\r
 \r
@@ -154,6 +157,7 @@ public class PropertyEditPane extends JPanel{
         for(int i = indexes.length - 1; i >= 0; i--){\r
             model.removeRow(indexes[i]);\r
         }\r
+        stigmata.setNeedToSaveSettings(true);\r
     }\r
 \r
     private void initLayouts(){\r
index a7f86d5..534f992 100644 (file)
@@ -8,6 +8,8 @@ import java.awt.BorderLayout;
 import java.awt.Image;\r
 import java.awt.event.ActionEvent;\r
 import java.awt.event.ActionListener;\r
+import java.awt.event.WindowAdapter;\r
+import java.awt.event.WindowEvent;\r
 import java.io.BufferedReader;\r
 import java.io.File;\r
 import java.io.FileReader;\r
@@ -72,6 +74,7 @@ public class StigmataFrame extends JFrame{
 \r
     private JTabbedPane tabPane;\r
     private JMenuItem closeTabMenu;\r
+    private JMenuItem saveMenu;\r
     private JCheckBoxMenuItem expertmodeMenu;\r
     private Stigmata stigmata;\r
     private BirthmarkEnvironment environment;\r
@@ -106,6 +109,14 @@ public class StigmataFrame extends JFrame{
         initLayouts();\r
     }\r
 \r
+    public boolean isNeedToSaveSettings(){\r
+        return saveMenu.isEnabled();\r
+    }\r
+\r
+    public void setNeedToSaveSettings(boolean flag){\r
+        saveMenu.setEnabled(flag);\r
+    }\r
+\r
     public Stigmata getStigmata(){\r
         return stigmata;\r
     }\r
@@ -376,6 +387,7 @@ public class StigmataFrame extends JFrame{
         control.inititalize();\r
         tabPane.setSelectedIndex(tabPane.getTabCount() - 1);\r
 \r
+        setNeedToSaveSettings(false);\r
         setSize(900, 600);\r
     }\r
 \r
@@ -414,7 +426,29 @@ public class StigmataFrame extends JFrame{
                 closeTabMenu.setEnabled(!title.equals(Messages.getString("control.tab.label")));\r
             }\r
         });\r
-\r
+        addWindowListener(new WindowAdapter(){\r
+            @Override\r
+            public void windowClosing(WindowEvent e){\r
+                boolean closeFlag = true;\r
+                if(isNeedToSaveSettings()){\r
+                    int returnValue = JOptionPane.showConfirmDialog(\r
+                        StigmataFrame.this,\r
+                        Messages.getString("needtosave.settings.message"),\r
+                        Messages.getString("needtosave.settings.title"),\r
+                        JOptionPane.YES_NO_CANCEL_OPTION,\r
+                        JOptionPane.WARNING_MESSAGE\r
+                    );\r
+                    closeFlag = returnValue != JOptionPane.CANCEL_OPTION;\r
+                    if(returnValue == JOptionPane.YES_OPTION){\r
+                        control.saveSettings(new File(BirthmarkEnvironment.getStigmataHome(), "stigmata.xml"));\r
+                    }\r
+                }\r
+                if(closeFlag){\r
+                    setVisible(false);\r
+                    dispose();\r
+                }\r
+            }\r
+        });\r
         setDefaultCloseOperation(WindowConstants.DISPOSE_ON_CLOSE);\r
     }\r
 \r
@@ -428,6 +462,8 @@ public class StigmataFrame extends JFrame{
         JMenuItem closeMenu = Utility.createJMenuItem("closeframe");\r
         JMenuItem exitMenu = Utility.createJMenuItem("exit");\r
         this.closeTabMenu = closeTabMenu;\r
+        this.saveMenu = saveMenu;\r
+        saveMenu.setEnabled(false);\r
 \r
         fileMenu.add(newFrameMenu);\r
         fileMenu.add(new JSeparator());\r
@@ -449,6 +485,7 @@ public class StigmataFrame extends JFrame{
         saveMenu.addActionListener(new ActionListener(){\r
             public void actionPerformed(ActionEvent e){\r
                 control.saveSettings(new File(BirthmarkEnvironment.getStigmataHome(), "stigmata.xml"));\r
+                setNeedToSaveSettings(false);\r
             }\r
         });\r
 \r
index 57748ad..0905a3f 100644 (file)
@@ -97,6 +97,7 @@ public class WellknownClassesSettingsPane extends JPanel{
     public void addRule(WellknownClassJudgeRule rule){\r
         if(rule != null){\r
             listmodel.addElement(rule);\r
+            stigmata.setNeedToSaveSettings(true);\r
         }\r
     }\r
 \r
@@ -105,6 +106,7 @@ public class WellknownClassesSettingsPane extends JPanel{
         WellknownClassJudgeRule newrule = createOrUpdateRule(rule);\r
         if(newrule != null){\r
             listmodel.setElementAt(newrule, index);\r
+            stigmata.setNeedToSaveSettings(true);\r
         }\r
     }\r
 \r
@@ -230,6 +232,7 @@ public class WellknownClassesSettingsPane extends JPanel{
                     listmodel.removeElementAt(indeces[i]);\r
                 }\r
                 list.getSelectionModel().clearSelection();\r
+                stigmata.setNeedToSaveSettings(true);\r
             }\r
         });\r
 \r
index 9c717ec..f517ae0 100755 (executable)
@@ -100,6 +100,9 @@ cannotclosecontroltab.dialog.message=Control tab cannot be closed
 notdirectory.dialog.title=Directory Setting Error\r
 notdirectory.dialog.message={0} is not directory.\r
 \r
+needtosave.settings.title=Configuration is changed\r
+needtosave.settings.message=Configuration is changed.  Do you save configuration?\r
+\r
 ################################################\r
 # TargetSelectionPane\r
 ################################################\r
index 859100c..8e5e284 100755 (executable)
@@ -77,6 +77,9 @@ cannotclosecontroltab.dialog.message=
 notdirectory.dialog.title=\83G\83\89\81[\r
 notdirectory.dialog.message={0}\82Í\83f\83B\83\8c\83N\83g\83\8a\82Å\82Í\82 \82è\82Ü\82¹\82ñ\81D\r
 \r
+needtosave.settings.title=\90Ý\92è\82ª\95Ï\8dX\82³\82ê\82Ä\82¢\82Ü\82·\81D\r
+needtosave.settings.message=\90Ý\92è\82ª\95Ï\8dX\82³\82ê\82Ä\82¢\82Ü\82·\81D\95Û\91\82µ\82Ü\82·\82©\81D\r
+\r
 ################################################\r
 # TargetSelectionPane\r
 ################################################\r