// Decompiled by Jad v1.5.8c. Copyright 2001 Pavel Kouznetsov.
// Jad home page: http://www.geocities.com/kpdus/jad.html
// Decompiler options: packimports(3) 

package org.pietschy.command.interceptor;

import javax.swing.*;
import java.awt.*;
import java.util.WeakHashMap;

/**
 *
 */
class CounterStrategy
implements GlassPaneInterceptorStrategy
{
    private class Counter
    {

        public boolean isZero()
        {
            return count == 0;
        }

        public int inc()
        {
            return ++count;
        }

        public int dec()
        {
            return --count;
        }

        int count;

        public Counter()
        {
            super();
            count = 0;
        }
    }


    public CounterStrategy()
    {
        counters = new WeakHashMap();
    }

    public boolean
    isFirstBlockRequest(RootPaneContainer rootpanecontainer, Component component)
    {
        Counter counter = getCounterFor(rootpanecontainer);
        return counter.inc() == 1;
    }

    public boolean
    isLastUnblockRequest(RootPaneContainer rootpanecontainer, Component component)
    {
        Counter counter = getCounterFor(rootpanecontainer);
        if(counter.isZero())
            throw new IllegalStateException("Unblock requested when container not blocked.  Requestor= " + component);
        else
            return counter.dec() == 0;
    }

    private Counter
    getCounterFor(RootPaneContainer rootpanecontainer)
    {
        Counter counter = (Counter)counters.get(rootpanecontainer);
        if(counter == null)
        {
            counter = new Counter();
            counters.put(rootpanecontainer, counter);
        }
        return counter;
    }

    private WeakHashMap counters;
}
