Changeset 5252

Show
Ignore:
Timestamp:
08/25/08 08:42:23 (3 months ago)
Author:
artur.signell@…
Message:

Fixed #677 disabling components inside a disabled container

Location:
trunk
Files:
5 modified

Legend:

Unmodified
Added
Removed
  • trunk/WebContent/ITMILL/themes/default/common/common.css

    r5239 r5252  
    5252        opacity: 0.3; 
    5353        filter: Alpha(opacity=30); 
     54} 
     55.i-disabled .i-disabled { 
     56        opacity: 1.0; 
    5457} 
    5558.i-required-field-indicator { 
  • trunk/WebContent/ITMILL/themes/default/styles.css

    r5245 r5252  
    176176        opacity: 0.3; 
    177177        filter: Alpha(opacity=30); 
     178} 
     179.i-disabled .i-disabled { 
     180        opacity: 1.0; 
    178181} 
    179182.i-required-field-indicator { 
  • trunk/src/com/itmill/toolkit/tests/tickets/Ticket677.java

    r5251 r5252  
    5151        panel.addComponent(innerLayout1); 
    5252 
    53         innerLayout1.addComponent(new TextField( 
    54                 "TextField inside orderedLayout")); 
    55         innerLayout1.addComponent(new Button("Button inside orderedLayout")); 
     53        TextField tf = new TextField("TextField inside orderedLayout"); 
     54        tf.setImmediate(true); 
     55        innerLayout1.addComponent(tf); 
     56        innerLayout1.addComponent(new Button("Button inside orderedLayout", 
     57                new ClickListener() { 
     58 
     59                    @Override 
     60                    public void buttonClick(ClickEvent event) { 
     61                        System.out.println("Clicked " 
     62                                + event.getButton().getCaption()); 
     63                    } 
     64 
     65                })); 
    5666        innerLayout1.addComponent(new Label("Label inside orderedLayout")); 
    5767 
     
    6070        GridLayout innerLayout2 = new GridLayout(3, 3); 
    6171        innerLayout2.setSpacing(true); 
    62         innerLayout2.addComponent(new TextField("TextField inside gridLayout")); 
     72        tf = new TextField("TextField inside gridLayout"); 
     73        tf.setImmediate(true); 
     74        innerLayout2.addComponent(tf); 
    6375        innerLayout2.addComponent(new Button("Button inside gridLayout")); 
    6476        innerLayout2.addComponent(new Label("Label inside gridLayout")); 
  • trunk/src/com/itmill/toolkit/ui/AbstractComponent.java

    r5250 r5252  
    5959 
    6060    /** 
    61      * Is the component enable (its normal usage is allowed). 
     61     * Is the component enabled (its normal usage is allowed). 
    6262     */ 
    6363    private boolean enabled = true; 
     64 
     65    /** 
     66     * Has the component been disabled by the container 
     67     */ 
     68    private boolean disabledByContainer = false; 
    6469 
    6570    /** 
     
    307312     */ 
    308313    public boolean isEnabled() { 
    309         return enabled && isVisible(); 
     314        return enabled && !disabledByContainer && isVisible(); 
    310315    } 
    311316 
     
    317322        if (this.enabled != enabled) { 
    318323            this.enabled = enabled; 
     324            requestRepaint(); 
     325        } 
     326    } 
     327 
     328    /** 
     329     * Enable or disable the component by the container. Normally used to 
     330     * disable the component when the container is disabled without altering the 
     331     * actual enabled state of the component. 
     332     *  
     333     * @param disabledByContainer 
     334     *                Should the component be disabled 
     335     */ 
     336    public void setDisabledByContainer(boolean disabledByContainer) { 
     337        if (disabledByContainer != this.disabledByContainer) { 
     338            this.disabledByContainer = disabledByContainer; 
    319339            requestRepaint(); 
    320340        } 
  • trunk/src/com/itmill/toolkit/ui/AbstractComponentContainer.java

    r3701 r5252  
    206206    } 
    207207 
     208    public void setEnabled(boolean enabled) { 
     209        super.setEnabled(enabled); 
     210 
     211        updateComponentDisabledState(!enabled); 
     212    } 
     213 
     214    public void setDisabledByContainer(boolean disabledByContainer) { 
     215        super.setDisabledByContainer(disabledByContainer); 
     216 
     217        updateComponentDisabledState(disabledByContainer); 
     218    } 
     219 
     220    private void updateComponentDisabledState(boolean disabled) { 
     221        // Update the disabledByContainer state for all subcomponents 
     222        for (Iterator i = getComponentIterator(); i.hasNext();) { 
     223            Component c = (Component) i.next(); 
     224            if (c instanceof AbstractComponent) { 
     225                ((AbstractComponent) c).setDisabledByContainer(disabled); 
     226            } 
     227        } 
     228 
     229    } 
     230 
    208231}