Preferences: cancel on escape 25/7625/2
Calixte DENIZET [Wed, 20 Jun 2012 15:09:46 +0000 (17:09 +0200)]
Change-Id: Ie55adfc7d56dc61a80b189bb527170af7ac7d0bf

scilab/modules/preferences/src/java/org/scilab/modules/preferences/XConfigManager.java
scilab/modules/preferences/src/java/org/scilab/modules/preferences/XSentinel.java

index 0db636d..8ae85c3 100644 (file)
@@ -24,6 +24,8 @@ import java.awt.Toolkit;
 import java.awt.event.ComponentAdapter;
 import java.awt.event.ComponentEvent;
 import java.awt.event.ComponentListener;
+import java.awt.event.WindowAdapter;
+import java.awt.event.WindowEvent;
 import java.io.File;
 import java.util.HashMap;
 import java.util.List;
@@ -41,6 +43,7 @@ import org.scilab.modules.commons.ScilabCommons;
 import org.scilab.modules.commons.xml.XConfiguration;
 import org.scilab.modules.gui.utils.Position;
 import org.scilab.modules.gui.utils.Size;
+import org.scilab.modules.gui.utils.ScilabSwingUtilities;
 import org.scilab.modules.preferences.ScilabPreferences.ToolboxInfos;
 
 /**
@@ -108,6 +111,14 @@ public final class XConfigManager extends XCommonManager {
             }
         });
 
+        dialog.addWindowListener(new WindowAdapter() {
+            @Override
+            public void windowClosing(WindowEvent e) {
+                cancel();
+            }
+        });
+        ScilabSwingUtilities.closeOnEscape(dialog);
+
         // Set up correspondence
         correspondance = new HashMap<Component, XSentinel>();
 
@@ -221,6 +232,19 @@ public final class XConfigManager extends XCommonManager {
         }
     }
 
+    private static void cancel() {
+        dialog.dispose();
+        XCommonManager.invalidateXSL();
+        XConfiguration.invalidate();
+        NodeList toolboxes = document.getElementsByTagName("toolboxes");
+        if (toolboxes != null && toolboxes.getLength() != 0) {
+            Element tbxs = (Element) toolboxes.item(0);
+            document.getDocumentElement().removeChild(tbxs);
+        }
+        updated = false;
+        refreshDisplay();
+    }
+
     /** Interpret action.
      *
      * @param action : to be interpreted.
@@ -282,16 +306,7 @@ public final class XConfigManager extends XCommonManager {
             return true;
         }
         if (callback.equals("Cancel")) {
-            dialog.dispose();
-            XCommonManager.invalidateXSL();
-            XConfiguration.invalidate();
-            NodeList toolboxes = document.getElementsByTagName("toolboxes");
-            if (toolboxes != null && toolboxes.getLength() != 0) {
-                Element tbxs = (Element) toolboxes.item(0);
-                document.getDocumentElement().removeChild(tbxs);
-            }
-            updated = false;
-            refreshDisplay();
+            cancel();
             return true;
         }
         return false;
index c75cf5c..ba42af0 100644 (file)
@@ -50,7 +50,7 @@ import org.scilab.modules.preferences.Component.Table;
  **/
 public class XSentinel implements MouseListener, ActionListener, TableModelListener, KeyListener, DocumentListener {
 
-    private static final Set<String> LAYOUT = new TreeSet<String>(Arrays.asList(new String[]{"listener", "gridx", "gridy", "gridwidth", "gridheight", "weightx", "weighty", "anchor", "ipadx", "ipday", "insets", "fill", "border-side", "fixed-height", "fixed-width"}));
+    private static final Set<String> LAYOUT = new TreeSet<String>(Arrays.asList(new String[] {"listener", "gridx", "gridy", "gridwidth", "gridheight", "weightx", "weighty", "anchor", "ipadx", "ipday", "insets", "fill", "border-side", "fixed-height", "fixed-width"}));
 
     /** Associated DOM Node.
      * TODO Add accessors for this attribute. */
@@ -156,7 +156,7 @@ public class XSentinel implements MouseListener, ActionListener, TableModelListe
         return false;
     }
 
-//
+    //
     /** Returns the first event node of the given type.
      *
      * @param node : the node to browse.
@@ -180,7 +180,7 @@ public class XSentinel implements MouseListener, ActionListener, TableModelListe
         long when = e.getWhen();
         if (when != timestamp) {
             Node[] action = getEventNodes(peer, "mouseClicked");
-            triggerEventNodes((Component) e.getSource(),action) ;
+            triggerEventNodes((Component) e.getSource(), action) ;
             timestamp = when;
         }
     }
@@ -205,7 +205,7 @@ public class XSentinel implements MouseListener, ActionListener, TableModelListe
             if (actions.length == 0) {
                 actions = getEventNodes(peer, e.getActionCommand());
             }
-           if (actions.length != 0) {
+            if (actions.length != 0) {
                 triggerEventNodes((Component) e.getSource(), actions);
                 timestamp = when;
             }
@@ -217,32 +217,31 @@ public class XSentinel implements MouseListener, ActionListener, TableModelListe
     }
 
     /** Mouse listener callback. @param e : event*/
-    public void keyPressed(final KeyEvent e) {
+    public void keyPressed(final KeyEvent e) { }
 
-    }
     /** Mouse listener callback. @param e : event*/
-    public void keyReleased(final KeyEvent e) {
-    }
+    public void keyReleased(final KeyEvent e) { }
+
     /** Mouse listener callback. @param e : event*/
     public void keyTyped(final KeyEvent e) {
-       long when = e.getWhen();
+        long when = e.getWhen();
         if (when != timestamp) {
             Node[] action = getEventNodes(peer, "keyTyped");
-            triggerEventNodes((Component) e.getSource(),action) ;
+            triggerEventNodes((Component) e.getSource(), action) ;
             timestamp = when;
         }
     }
-    
+
     public void changedUpdate(DocumentEvent e) { }
+
     public void insertUpdate(DocumentEvent e) {
-       Node[] action = getEventNodes(peer, "entryChanged");
-       triggerEventNodes((Component) xComponent, action) ;
+        Node[] action = getEventNodes(peer, "entryChanged");
+        triggerEventNodes((Component) xComponent, action) ;
     }
 
     public void removeUpdate(DocumentEvent e) {
-       Node[] action = getEventNodes(peer, "entryChanged");
-       triggerEventNodes((Component) xComponent, action) ;
+        Node[] action = getEventNodes(peer, "entryChanged");
+        triggerEventNodes((Component) xComponent, action) ;
     }
 
     /** Table listener callback. @param e : event*/