@@ -0,0 +1,1748 @@
+/*%0A *  Licensed to the Apache Software Foundation (ASF) under one or more%0A *  contributor license agreements.  See the NOTICE file distributed with%0A *  this work for additional information regarding copyright ownership.%0A *  The ASF licenses this file to You under the Apache License, Version 2.0%0A *  (the %22License%22); you may not use this file except in compliance with%0A *  the License.  You may obtain a copy of the License at%0A *%0A *     http://www.apache.org/licenses/LICENSE-2.0%0A *%0A *  Unless required by applicable law or agreed to in writing, software%0A *  distributed under the License is distributed on an %22AS IS%22 BASIS,%0A *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.%0A *  See the License for the specific language governing permissions and%0A *  limitations under the License.%0A */%0A/**%0A * @author Pavel Dolgov%0A * @version $Revision$%0A */%0Apackage java.awt;%0A%0A/**%0A *%0A * The context for nested event loop. It can be dialog, popup menu etc.%0A */%0Aclass ModalContext %7B%0A%0A    private boolean running = false;%0A%0A    private final Toolkit toolkit;%0A%0A    ModalContext() %7B%0A        toolkit = Toolkit.getDefaultToolkit();%0A    %7D%0A%0A    /**%0A     * Set up and run modal loop in this context%0A     *%0A     */%0A    void runModalLoop() %7B%0A    %09if(!running) %7B%0A    %09%09running = true;%0A    %09%09toolkit.dispatchThread.runModalLoop(this);%0A    %09%7D%0A    %7D%0A%0A    /**%0A     * Leave the modal loop running in this context%0A     * This method doesn't stops the loop immediately,%0A     * it just sets the flag that says the modal loop to stop%0A     *%0A     */%0A    void endModalLoop() %7B%0A        running = false;%0A    %7D%0A%0A    /**%0A     *%0A     * @return modal loop is currently running in this context%0A     */%0A    boolean isModalLoopRunning() %7B%0A        return running;%0A    %7D%0A%0A%7D%0A

Patch for HARMONY-4838 "[classlib][swing] hang up when call JDialog.setVisible"