// 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.Stack;
import java.util.WeakHashMap;


class
StackStrategy
implements GlassPaneInterceptorStrategy
{

    public StackStrategy()
    {
        stacks = new WeakHashMap();
    }

    public boolean isFirstBlockRequest(RootPaneContainer rootpanecontainer, Component component)
    {
        Stack stack = getStackFor(rootpanecontainer);
        stack.push(component);
        return stack.size() == 1;
    }

    public boolean isLastUnblockRequest(RootPaneContainer rootpanecontainer, Component component)
    {
        Stack stack = getStackFor(rootpanecontainer);
        Object obj = stack.pop();
        if(!component.equals(obj))
            throw new IllegalStateException("Component that unblocked the frame is different from the one that blocked it: blocker=" + obj + " unblocker= " + component);
        else
            return stack.size() < 1;
    }

    private Stack getStackFor(RootPaneContainer rootpanecontainer)
    {
        Stack stack = (Stack)stacks.get(rootpanecontainer);
        if(stack == null)
        {
            stack = new Stack();
            stacks.put(rootpanecontainer, stack);
        }
        return stack;
    }

    private WeakHashMap stacks;
}
