01 /*
02 * SPDX-License-Identifier: Apache-2.0
03 *
04 * Copyright 2008-2017 the original author or authors.
05 *
06 * Licensed under the Apache License, Version 2.0 (the "License");
07 * you may not use this file except in compliance with the License.
08 * You may obtain a copy of the License at
09 *
10 * http://www.apache.org/licenses/LICENSE-2.0
11 *
12 * Unless required by applicable law or agreed to in writing, software
13 * distributed under the License is distributed on an "AS IS" BASIS,
14 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
15 * See the License for the specific language governing permissions and
16 * limitations under the License.
17 */
18 package griffon.swing;
19
20 import griffon.swing.support.SwingUtils;
21 import org.codehaus.griffon.runtime.core.AbstractGriffonApplication;
22
23 import javax.annotation.Nonnull;
24 import java.awt.Toolkit;
25 import java.util.Map;
26
27 /**
28 * @author Andres Almiray
29 * @since 2.0.0
30 */
31 public class SwingGriffonApplication extends AbstractGriffonApplication {
32 public SwingGriffonApplication() {
33 this(EMPTY_ARGS);
34 }
35
36 public SwingGriffonApplication(@Nonnull String[] args) {
37 super(args);
38 }
39
40 @Override
41 protected void showStartingWindow() {
42 super.showStartingWindow();
43
44 // wait for EDT to empty out.... somehow
45 final boolean[] empty = {false};
46 while (true) {
47 getUIThreadManager().runInsideUISync(new Runnable() {
48 public void run() {
49 empty[0] = Toolkit.getDefaultToolkit().getSystemEventQueue().peekEvent() == null;
50 }
51 });
52 if (empty[0]) break;
53 try {
54 Thread.sleep(100);
55 } catch (InterruptedException e) {
56 // ignore
57 }
58 }
59 }
60
61 @Override
62 public boolean shutdown() {
63 if (super.shutdown()) {
64 exit();
65 }
66 return false;
67 }
68
69 public void exit() {
70 System.exit(0);
71 }
72
73 @Nonnull
74 @Override
75 public Object createApplicationContainer(@Nonnull Map<String, Object> attributes) {
76 return SwingUtils.createApplicationFrame(this, attributes);
77 }
78
79 public static void main(String[] args) throws Exception {
80 run(SwingGriffonApplication.class, args);
81 }
82 }
|