svn commit: r12835 - trunk/src_new/org/argouml: i18n uml/ui/foundation/core

[email protected]
Newsgroups gmane.comp.lang.uml.argouml.cvs
Message-ID <[email protected]>
Author: tfmorris
Date: 2007-06-14 12:48:37-0700
New Revision: 12835

Modified:
   trunk/src_new/org/argouml/i18n/button.properties
   trunk/src_new/org/argouml/i18n/label.properties
   trunk/src_new/org/argouml/uml/ui/foundation/core/UMLAssociationEndAggregationRadioButtonPanel.java
   trunk/src_new/org/argouml/uml/ui/foundation/core/UMLAssociationEndChangeabilityRadioButtonPanel.java
   trunk/src_new/org/argouml/uml/ui/foundation/core/UMLModelElementVisibilityRadioButtonPanel.java
   trunk/src_new/org/argouml/uml/ui/foundation/core/UMLOperationConcurrencyRadioButtonPanel.java
   trunk/src_new/org/argouml/uml/ui/foundation/core/UMLParameterDirectionKindRadioButtonPanel.java
   trunk/src_new/org/argouml/uml/ui/foundation/core/UMLStructuralFeatureChangeabilityRadioButtonPanel.java

Log:
Update the remaining radio button panels to show no buttons selected when value is unspecified.  Resolve button order related TODOs.

Modified: trunk/src_new/org/argouml/i18n/button.properties
Url: http://argouml.tigris.org/source/browse/argouml/trunk/src_new/org/argouml/i18n/button.properties?view=diff&rev=12835&p1=trunk/src_new/org/argouml/i18n/button.properties&p2=trunk/src_new/org/argouml/i18n/button.properties&r1=12834&r2=12835
==============================================================================
--- trunk/src_new/org/argouml/i18n/button.properties	(original)
+++ trunk/src_new/org/argouml/i18n/button.properties	2007-06-14 12:48:37-0700
@@ -68,8 +68,6 @@
 button.go-up-previous-down = Go to previous
 button.help = Help
 button.help.mnemonic = H
-button.in = In
-button.inout = In/Out
 button.move-down = Move Down
 button.move-down.mnemonic = M
 button.move-down.tooltip = Move the selected item Down
@@ -172,7 +170,6 @@
 button.ok = OK
 button.ok.mnemonic = O
 button.open = Open
-button.out = Out
 button.reason-given-below = Reason given below
 button.reason-given-below.mnemonic = R
 button.remove = Remove
@@ -186,7 +183,6 @@
 button.restore-defaults.mnemonic = R
 button.restore-defaults.tooltip = Restore all perspectives to pre-defined \
         defaults
-button.return = Return
 button.run-gc = Run Garbage Collector
 button.run-gc.mnemonic = R
 button.select = Select

Modified: trunk/src_new/org/argouml/i18n/label.properties
Url: http://argouml.tigris.org/source/browse/argouml/trunk/src_new/org/argouml/i18n/label.properties?view=diff&rev=12835&p1=trunk/src_new/org/argouml/i18n/label.properties&p2=trunk/src_new/org/argouml/i18n/label.properties&r1=12834&r2=12835
==============================================================================
--- trunk/src_new/org/argouml/i18n/label.properties	(original)
+++ trunk/src_new/org/argouml/i18n/label.properties	2007-06-14 12:48:37-0700
@@ -94,6 +94,9 @@
 label.component = Component
 label.components = Components:
 label.concurrency = Concurrency:
+label.concurrency-concurrent = concurrent
+label.concurrency-guarded = guarded
+label.concurrency-sequential = sequential
 label.concurrent = Concurrent
 label.condition = Condition:
 label.connections = Connections:
@@ -230,6 +233,10 @@
 label.package = Package
 label.parameter.default-value = Default Value:
 label.parameter.kind = Direction Kind:
+label.parameter-direction-in = in
+label.parameter-direction-inout = in/out
+label.parameter-direction-out = out
+label.parameter-direction-return = return
 label.parameters = Parameters:
 label.parent = Parent:
 label.perspectives = Perspectives

Modified: trunk/src_new/org/argouml/uml/ui/foundation/core/UMLAssociationEndAggregationRadioButtonPanel.java
Url: http://argouml.tigris.org/source/browse/argouml/trunk/src_new/org/argouml/uml/ui/foundation/core/UMLAssociationEndAggregationRadioButtonPanel.java?view=diff&rev=12835&p1=trunk/src_new/org/argouml/uml/ui/foundation/core/UMLAssociationEndAggregationRadioButtonPanel.java&p2=trunk/src_new/org/argouml/uml/ui/foundation/core/UMLAssociationEndAggregationRadioButtonPanel.java&r1=12834&r2=12835
==============================================================================
--- trunk/src_new/org/argouml/uml/ui/foundation/core/UMLAssociationEndAggregationRadioButtonPanel.java	(original)
+++ trunk/src_new/org/argouml/uml/ui/foundation/core/UMLAssociationEndAggregationRadioButtonPanel.java	2007-06-14 12:48:37-0700
@@ -1,5 +1,5 @@
 // $Id$
-// Copyright (c) 1996-2006 The Regents of the University of California. All
+// Copyright (c) 1996-2007 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
@@ -24,8 +24,8 @@
 
 package org.argouml.uml.ui.foundation.core;
 
-import java.util.HashMap;
-import java.util.Map;
+import java.util.ArrayList;
+import java.util.List;
 
 import org.argouml.i18n.Translator;
 import org.argouml.model.Model;
@@ -39,18 +39,22 @@
 public class UMLAssociationEndAggregationRadioButtonPanel
     extends UMLRadioButtonPanel {
 
-    private static Map labelTextsAndActionCommands = new HashMap();
+    private static List<String[]> labelTextsAndActionCommands =
+        new ArrayList<String[]>();
 
     static {
-        labelTextsAndActionCommands.put(
+        labelTextsAndActionCommands.add(new String[] {
             Translator.localize("label.aggregationkind-aggregate"),
-            ActionSetAssociationEndAggregation.AGGREGATE_COMMAND);
-        labelTextsAndActionCommands.put(
+            ActionSetAssociationEndAggregation.AGGREGATE_COMMAND
+        });
+        labelTextsAndActionCommands.add(new String[] {
             Translator.localize("label.aggregationkind-composite"),
-            ActionSetAssociationEndAggregation.COMPOSITE_COMMAND);
-        labelTextsAndActionCommands.put(
+            ActionSetAssociationEndAggregation.COMPOSITE_COMMAND
+        });
+        labelTextsAndActionCommands.add(new String[] {
             Translator.localize("label.aggregationkind-none"),
-            ActionSetAssociationEndAggregation.NONE_COMMAND);
+            ActionSetAssociationEndAggregation.NONE_COMMAND
+        });
     }
 
     /**
@@ -71,27 +75,18 @@
         if (getTarget() != null) {
             Object target = getTarget();
             Object kind = Model.getFacade().getAggregation(target);
-            if (kind == null
-                    || kind.equals(
-                            Model.getAggregationKind().getNone())) {
+            if (kind == null) {
+                setSelected(null);
+            } else if (kind.equals(Model.getAggregationKind().getNone())) {
                 setSelected(ActionSetAssociationEndAggregation.NONE_COMMAND);
+            } else if (kind.equals(Model.getAggregationKind().getAggregate())) {
+                setSelected(
+                        ActionSetAssociationEndAggregation.AGGREGATE_COMMAND);
+            } else if (kind.equals(Model.getAggregationKind().getComposite())) {
+                setSelected(
+                        ActionSetAssociationEndAggregation.COMPOSITE_COMMAND);
             } else {
-		if (kind.equals(
-		        Model.getAggregationKind().getAggregate())) {
-		    setSelected(ActionSetAssociationEndAggregation
-		            .AGGREGATE_COMMAND);
-		} else {
-		    if (kind.equals(
-		            Model.getAggregationKind()
-		            	.getComposite())) {
-			setSelected(ActionSetAssociationEndAggregation
-			        .COMPOSITE_COMMAND);
-		    } else {
-		        setSelected(ActionSetAssociationEndAggregation
-
-			        .NONE_COMMAND);
-		    }
-		}
+                setSelected(ActionSetAssociationEndAggregation.NONE_COMMAND);
             }
         }
     }

Modified: trunk/src_new/org/argouml/uml/ui/foundation/core/UMLAssociationEndChangeabilityRadioButtonPanel.java
Url: http://argouml.tigris.org/source/browse/argouml/trunk/src_new/org/argouml/uml/ui/foundation/core/UMLAssociationEndChangeabilityRadioButtonPanel.java?view=diff&rev=12835&p1=trunk/src_new/org/argouml/uml/ui/foundation/core/UMLAssociationEndChangeabilityRadioButtonPanel.java&p2=trunk/src_new/org/argouml/uml/ui/foundation/core/UMLAssociationEndChangeabilityRadioButtonPanel.java&r1=12834&r2=12835
==============================================================================
--- trunk/src_new/org/argouml/uml/ui/foundation/core/UMLAssociationEndChangeabilityRadioButtonPanel.java	(original)
+++ trunk/src_new/org/argouml/uml/ui/foundation/core/UMLAssociationEndChangeabilityRadioButtonPanel.java	2007-06-14 12:48:37-0700
@@ -24,8 +24,8 @@
 
 package org.argouml.uml.ui.foundation.core;
 
-import java.util.HashMap;
-import java.util.Map;
+import java.util.ArrayList;
+import java.util.List;
 
 import org.argouml.i18n.Translator;
 import org.argouml.model.Model;
@@ -33,26 +33,33 @@
 
 /**
  * This panel contains radio buttons that represent the Changeability
- * of an sssociation-end.
+ * of an asssociation-end.
  *
  * @author [email protected]
  * @since Jan 4, 2003
+ * 
+ * TODO: For UML 2.x this needs to be changed to be just ReadOnly (frozen)
+ * or not (changeable).
  */
 public class UMLAssociationEndChangeabilityRadioButtonPanel
     extends UMLRadioButtonPanel {
 
-    private static Map labelTextsAndActionCommands = new HashMap();
+    private static List<String[]> labelTextsAndActionCommands =
+        new ArrayList<String[]>();
 
     static {
-        labelTextsAndActionCommands.put(Translator.localize(
-                "label.changeability-addonly"),
-                ActionSetChangeability.ADDONLY_COMMAND);
-        labelTextsAndActionCommands.put(Translator.localize(
-                "label.changeability-changeable"),
-                ActionSetChangeability.CHANGEABLE_COMMAND);
-        labelTextsAndActionCommands.put(Translator.localize(
-                "label.changeability-frozen"),
-                ActionSetChangeability.FROZEN_COMMAND);
+        labelTextsAndActionCommands.add(new String[] {
+            Translator.localize("label.changeability-addonly"),
+            ActionSetChangeability.ADDONLY_COMMAND
+        });
+        labelTextsAndActionCommands.add(new String[] {
+            Translator.localize("label.changeability-changeable"),
+            ActionSetChangeability.CHANGEABLE_COMMAND
+        });
+        labelTextsAndActionCommands.add(new String[] {
+            Translator.localize("label.changeability-frozen"),
+            ActionSetChangeability.FROZEN_COMMAND
+        });
     }
 
     /**
@@ -73,18 +80,17 @@
         if (getTarget() != null) {
             Object target = getTarget();
             Object kind = Model.getFacade().getChangeability(target);
-            if (kind == null
-                || kind.equals(Model.getChangeableKind().getChangeable())) {
+            if (kind == null) {
+                setSelected(null);
+            } else if (kind.equals(Model.getChangeableKind().getChangeable())) {
                 setSelected(ActionSetChangeability.CHANGEABLE_COMMAND);
-            } else
-		if (kind.equals(Model.getChangeableKind().getAddOnly())) {
-		    setSelected(ActionSetChangeability.ADDONLY_COMMAND);
-		} else
-		    if (kind.equals(Model.getChangeableKind().getFrozen())) {
-			setSelected(ActionSetChangeability.FROZEN_COMMAND);
-		    } else {
-		        setSelected(ActionSetChangeability.CHANGEABLE_COMMAND);
-		    }
+            } else if (kind.equals(Model.getChangeableKind().getAddOnly())) {
+                setSelected(ActionSetChangeability.ADDONLY_COMMAND);
+            } else if (kind.equals(Model.getChangeableKind().getFrozen())) {
+                setSelected(ActionSetChangeability.FROZEN_COMMAND);
+            } else {
+                setSelected(ActionSetChangeability.CHANGEABLE_COMMAND);
+            }
         }
     }
 }

Modified: trunk/src_new/org/argouml/uml/ui/foundation/core/UMLModelElementVisibilityRadioButtonPanel.java
Url: http://argouml.tigris.org/source/browse/argouml/trunk/src_new/org/argouml/uml/ui/foundation/core/UMLModelElementVisibilityRadioButtonPanel.java?view=diff&rev=12835&p1=trunk/src_new/org/argouml/uml/ui/foundation/core/UMLModelElementVisibilityRadioButtonPanel.java&p2=trunk/src_new/org/argouml/uml/ui/foundation/core/UMLModelElementVisibilityRadioButtonPanel.java&r1=12834&r2=12835
==============================================================================
--- trunk/src_new/org/argouml/uml/ui/foundation/core/UMLModelElementVisibilityRadioButtonPanel.java	(original)
+++ trunk/src_new/org/argouml/uml/ui/foundation/core/UMLModelElementVisibilityRadioButtonPanel.java	2007-06-14 12:48:37-0700
@@ -24,7 +24,8 @@
 
 package org.argouml.uml.ui.foundation.core;
 
-import java.util.HashMap;
+import java.util.ArrayList;
+import java.util.List;
 
 import org.argouml.i18n.Translator;
 import org.argouml.model.Model;
@@ -45,23 +46,26 @@
      */
     private static final long serialVersionUID = -1705561978481456281L;
     
-    private static HashMap labelTextsAndActionCommands = new HashMap();
+    private static List<String[]> labelTextsAndActionCommands =
+        new ArrayList<String[]>();
 
-    // TODO: The buttons should be order of reducing visibility, but
-    // they get ordered by natural order of the keys (hash order?) - tfm
     static {
-        labelTextsAndActionCommands.put(Translator.localize(
-                "label.visibility-public"),
-                ActionSetModelElementVisibility.PUBLIC_COMMAND);
-        labelTextsAndActionCommands.put(Translator.localize(
-                "label.visibility-package"),
-                ActionSetModelElementVisibility.PACKAGE_COMMAND);
-        labelTextsAndActionCommands.put(Translator.localize(
-                "label.visibility-protected"),
-                ActionSetModelElementVisibility.PROTECTED_COMMAND);
-        labelTextsAndActionCommands.put(Translator.localize(
-                "label.visibility-private"),
-                ActionSetModelElementVisibility.PRIVATE_COMMAND);
+        labelTextsAndActionCommands.add(new String[] {
+            Translator.localize("label.visibility-public"),
+            ActionSetModelElementVisibility.PUBLIC_COMMAND
+        });
+        labelTextsAndActionCommands.add(new String[] {
+            Translator.localize("label.visibility-package"),
+            ActionSetModelElementVisibility.PACKAGE_COMMAND
+        });
+        labelTextsAndActionCommands.add(new String[] {
+            Translator.localize("label.visibility-protected"),
+            ActionSetModelElementVisibility.PROTECTED_COMMAND
+        });
+        labelTextsAndActionCommands.add(new String[] {
+            Translator.localize("label.visibility-private"),
+            ActionSetModelElementVisibility.PRIVATE_COMMAND
+        });
     }
 
     /**
@@ -82,8 +86,9 @@
         if (getTarget() != null) {
             Object target = getTarget();
             Object kind = Model.getFacade().getVisibility(target);
-            if (kind == null
-                    || kind.equals(
+            if (kind == null) {
+                setSelected(null);
+            } else if (kind.equals(
                             Model.getVisibilityKind().getPublic())) {
                 setSelected(ActionSetModelElementVisibility.PUBLIC_COMMAND);
             } else if (kind.equals(

Modified: trunk/src_new/org/argouml/uml/ui/foundation/core/UMLOperationConcurrencyRadioButtonPanel.java
Url: http://argouml.tigris.org/source/browse/argouml/trunk/src_new/org/argouml/uml/ui/foundation/core/UMLOperationConcurrencyRadioButtonPanel.java?view=diff&rev=12835&p1=trunk/src_new/org/argouml/uml/ui/foundation/core/UMLOperationConcurrencyRadioButtonPanel.java&p2=trunk/src_new/org/argouml/uml/ui/foundation/core/UMLOperationConcurrencyRadioButtonPanel.java&r1=12834&r2=12835
==============================================================================
--- trunk/src_new/org/argouml/uml/ui/foundation/core/UMLOperationConcurrencyRadioButtonPanel.java	(original)
+++ trunk/src_new/org/argouml/uml/ui/foundation/core/UMLOperationConcurrencyRadioButtonPanel.java	2007-06-14 12:48:37-0700
@@ -1,5 +1,5 @@
 // $Id$
-// Copyright (c) 1996-2006 The Regents of the University of California. All
+// Copyright (c) 1996-2007 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
@@ -24,8 +24,8 @@
 
 package org.argouml.uml.ui.foundation.core;
 
-import java.util.HashMap;
-import java.util.Map;
+import java.util.ArrayList;
+import java.util.List;
 
 import org.argouml.model.Model;
 import org.argouml.uml.ui.UMLRadioButtonPanel;
@@ -38,17 +38,22 @@
 public class UMLOperationConcurrencyRadioButtonPanel extends
         UMLRadioButtonPanel {
 
-    private static Map labelTextsAndActionCommands =
-        new HashMap();
+    private static List<String[]> labelTextsAndActionCommands =
+        new ArrayList<String[]>();
 
     static {
-        // TODO: i18n, use Translator
-        labelTextsAndActionCommands.put("sequential",
-                ActionSetOperationConcurrencyKind.SEQUENTIAL_COMMAND);
-        labelTextsAndActionCommands.put("guarded",
-                ActionSetOperationConcurrencyKind.GUARDED_COMMAND);
-        labelTextsAndActionCommands.put("concurrent",
-                ActionSetOperationConcurrencyKind.CONCURRENT_COMMAND);
+        labelTextsAndActionCommands.add(new String[] {
+            "label.concurrency-sequential",
+            ActionSetOperationConcurrencyKind.SEQUENTIAL_COMMAND
+        });
+        labelTextsAndActionCommands.add(new String[] {
+            "label.concurrency-guarded",
+            ActionSetOperationConcurrencyKind.GUARDED_COMMAND
+        });
+        labelTextsAndActionCommands.add(new String[] {
+            "label.concurrency-concurrent",
+            ActionSetOperationConcurrencyKind.CONCURRENT_COMMAND
+        });
     }
 
     /**
@@ -59,8 +64,7 @@
      */
     public UMLOperationConcurrencyRadioButtonPanel(String title,
             boolean horizontal) {
-        // TODO: i18n
-        super(title, labelTextsAndActionCommands, "Concurrency",
+        super(title, labelTextsAndActionCommands, "concurrency",
                 ActionSetOperationConcurrencyKind.getInstance(), horizontal);
     }
 
@@ -69,24 +73,25 @@
      */
     public void buildModel() {
         if (getTarget() != null) {
-            Object target = /* (MModelElement) */getTarget();
+            Object target = getTarget();
             Object kind = Model.getFacade().getConcurrency(target);
-            if (kind == null
-                    || kind.equals(
-                            Model.getConcurrencyKind()
-                            	.getSequential())) {
-                setSelected(ActionSetOperationConcurrencyKind
-                        .SEQUENTIAL_COMMAND);
+            if (kind == null) {
+                setSelected(null);
+            } else if (kind.equals(
+                    Model.getConcurrencyKind().getSequential())) {
+                setSelected(
+                        ActionSetOperationConcurrencyKind.SEQUENTIAL_COMMAND);
             } else if (kind.equals(
                     Model.getConcurrencyKind().getGuarded())) {
-                setSelected(ActionSetOperationConcurrencyKind.GUARDED_COMMAND);
+                setSelected(
+                        ActionSetOperationConcurrencyKind.GUARDED_COMMAND);
             } else if (kind.equals(
                     Model.getConcurrencyKind().getConcurrent())) {
-                setSelected(ActionSetOperationConcurrencyKind
-                        .CONCURRENT_COMMAND);
+                setSelected(
+                        ActionSetOperationConcurrencyKind.CONCURRENT_COMMAND);
             } else {
-                setSelected(ActionSetOperationConcurrencyKind
-                        .SEQUENTIAL_COMMAND);
+                setSelected(
+                        ActionSetOperationConcurrencyKind.SEQUENTIAL_COMMAND);
             }
         }
     }

Modified: trunk/src_new/org/argouml/uml/ui/foundation/core/UMLParameterDirectionKindRadioButtonPanel.java
Url: http://argouml.tigris.org/source/browse/argouml/trunk/src_new/org/argouml/uml/ui/foundation/core/UMLParameterDirectionKindRadioButtonPanel.java?view=diff&rev=12835&p1=trunk/src_new/org/argouml/uml/ui/foundation/core/UMLParameterDirectionKindRadioButtonPanel.java&p2=trunk/src_new/org/argouml/uml/ui/foundation/core/UMLParameterDirectionKindRadioButtonPanel.java&r1=12834&r2=12835
==============================================================================
--- trunk/src_new/org/argouml/uml/ui/foundation/core/UMLParameterDirectionKindRadioButtonPanel.java	(original)
+++ trunk/src_new/org/argouml/uml/ui/foundation/core/UMLParameterDirectionKindRadioButtonPanel.java	2007-06-14 12:48:37-0700
@@ -44,19 +44,19 @@
 
     static {
         labelTextsAndActionCommands.add(new String[] {
-            Translator.localize("button.in"),
+            Translator.localize("label.parameter-direction-in"),
             ActionSetParameterDirectionKind.IN_COMMAND
         });
         labelTextsAndActionCommands.add(new String[] {
-            Translator.localize("button.out"),
+            Translator.localize("label.parameter-direction-out"),
             ActionSetParameterDirectionKind.OUT_COMMAND
         });
         labelTextsAndActionCommands.add(new String[] {
-            Translator.localize("button.inout"),
+            Translator.localize("label.parameter-direction-inout"),
             ActionSetParameterDirectionKind.INOUT_COMMAND
         });
         labelTextsAndActionCommands.add(new String[] {
-            Translator.localize("button.return"),
+            Translator.localize("label.parameter-Sdirection-return"),
             ActionSetParameterDirectionKind.RETURN_COMMAND
         });
     }

Modified: trunk/src_new/org/argouml/uml/ui/foundation/core/UMLStructuralFeatureChangeabilityRadioButtonPanel.java
Url: http://argouml.tigris.org/source/browse/argouml/trunk/src_new/org/argouml/uml/ui/foundation/core/UMLStructuralFeatureChangeabilityRadioButtonPanel.java?view=diff&rev=12835&p1=trunk/src_new/org/argouml/uml/ui/foundation/core/UMLStructuralFeatureChangeabilityRadioButtonPanel.java&p2=trunk/src_new/org/argouml/uml/ui/foundation/core/UMLStructuralFeatureChangeabilityRadioButtonPanel.java&r1=12834&r2=12835
==============================================================================
--- trunk/src_new/org/argouml/uml/ui/foundation/core/UMLStructuralFeatureChangeabilityRadioButtonPanel.java	(original)
+++ trunk/src_new/org/argouml/uml/ui/foundation/core/UMLStructuralFeatureChangeabilityRadioButtonPanel.java	2007-06-14 12:48:37-0700
@@ -24,8 +24,8 @@
 
 package org.argouml.uml.ui.foundation.core;
 
-import java.util.HashMap;
-import java.util.Map;
+import java.util.ArrayList;
+import java.util.List;
 
 import org.argouml.i18n.Translator;
 import org.argouml.model.Model;
@@ -34,22 +34,29 @@
 /**
  * @author [email protected]
  * @since Jan 29, 2003
+ * 
+ * TODO: For UML 2.x this needs to be changed to just a toggle which 
+ * represents ReadOnly (frozen) or not (changeable).
  */
 public class UMLStructuralFeatureChangeabilityRadioButtonPanel
 	extends UMLRadioButtonPanel {
 
-    private static Map labelTextsAndActionCommands = new HashMap();
+    private static List<String[]> labelTextsAndActionCommands =
+        new ArrayList<String[]>();
 
     static {
-        labelTextsAndActionCommands.put(Translator.localize(
-                "label.changeability-addonly"),
-                ActionSetChangeability.ADDONLY_COMMAND);
-        labelTextsAndActionCommands.put(Translator.localize(
-                "label.changeability-changeable"),
-                ActionSetChangeability.CHANGEABLE_COMMAND);
-        labelTextsAndActionCommands.put(Translator.localize(
-                "label.changeability-frozen"),
-                ActionSetChangeability.FROZEN_COMMAND);
+        labelTextsAndActionCommands.add(new String[] {
+            Translator.localize("label.changeability-addonly"),
+            ActionSetChangeability.ADDONLY_COMMAND
+        });
+        labelTextsAndActionCommands.add(new String[] {
+            Translator.localize("label.changeability-changeable"),
+            ActionSetChangeability.CHANGEABLE_COMMAND
+        });
+        labelTextsAndActionCommands.add(new String[] {
+            Translator.localize("label.changeability-frozen"),
+            ActionSetChangeability.FROZEN_COMMAND
+        });
     }
 
     /**
@@ -70,8 +77,9 @@
         if (getTarget() != null) {
             Object target =  getTarget();
             Object kind = Model.getFacade().getChangeability(target);
-            if (kind == null
-                    || kind.equals(
+            if (kind == null) {
+                setSelected(null);
+            } else if (kind.equals(
                             Model.getChangeableKind().getAddOnly())) {
                 setSelected(ActionSetChangeability.ADDONLY_COMMAND);
             } else if (kind.equals(
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.