1554d7ee0f5d177b6c0bce805f5a5917b6b211978Andreas Gampe/*
2554d7ee0f5d177b6c0bce805f5a5917b6b211978Andreas Gampe * Copyright (C) 2015 The Android Open Source Project
3554d7ee0f5d177b6c0bce805f5a5917b6b211978Andreas Gampe *
4554d7ee0f5d177b6c0bce805f5a5917b6b211978Andreas Gampe * Licensed under the Apache License, Version 2.0 (the "License");
5554d7ee0f5d177b6c0bce805f5a5917b6b211978Andreas Gampe * you may not use this file except in compliance with the License.
6554d7ee0f5d177b6c0bce805f5a5917b6b211978Andreas Gampe * You may obtain a copy of the License at
7554d7ee0f5d177b6c0bce805f5a5917b6b211978Andreas Gampe *
8554d7ee0f5d177b6c0bce805f5a5917b6b211978Andreas Gampe *      http://www.apache.org/licenses/LICENSE-2.0
9554d7ee0f5d177b6c0bce805f5a5917b6b211978Andreas Gampe *
10554d7ee0f5d177b6c0bce805f5a5917b6b211978Andreas Gampe * Unless required by applicable law or agreed to in writing, software
11554d7ee0f5d177b6c0bce805f5a5917b6b211978Andreas Gampe * distributed under the License is distributed on an "AS IS" BASIS,
12554d7ee0f5d177b6c0bce805f5a5917b6b211978Andreas Gampe * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13554d7ee0f5d177b6c0bce805f5a5917b6b211978Andreas Gampe * See the License for the specific language governing permissions and
14554d7ee0f5d177b6c0bce805f5a5917b6b211978Andreas Gampe * limitations under the License.
15554d7ee0f5d177b6c0bce805f5a5917b6b211978Andreas Gampe */
16554d7ee0f5d177b6c0bce805f5a5917b6b211978Andreas Gampe
17554d7ee0f5d177b6c0bce805f5a5917b6b211978Andreas Gampepackage com.android.preload.actions;
18554d7ee0f5d177b6c0bce805f5a5917b6b211978Andreas Gampe
193bf65c916ce65c06b0920ec4b8f68d3ef6c5e721Andreas Gampeimport com.android.preload.Main;
20554d7ee0f5d177b6c0bce805f5a5917b6b211978Andreas Gampeimport java.awt.event.ActionEvent;
21554d7ee0f5d177b6c0bce805f5a5917b6b211978Andreas Gampe
22554d7ee0f5d177b6c0bce805f5a5917b6b211978Andreas Gampeimport javax.swing.AbstractAction;
23554d7ee0f5d177b6c0bce805f5a5917b6b211978Andreas Gampe
24554d7ee0f5d177b6c0bce805f5a5917b6b211978Andreas Gampepublic abstract class AbstractThreadedAction extends AbstractAction implements Runnable {
25554d7ee0f5d177b6c0bce805f5a5917b6b211978Andreas Gampe
26554d7ee0f5d177b6c0bce805f5a5917b6b211978Andreas Gampe    protected AbstractThreadedAction(String title) {
27554d7ee0f5d177b6c0bce805f5a5917b6b211978Andreas Gampe        super(title);
28554d7ee0f5d177b6c0bce805f5a5917b6b211978Andreas Gampe    }
29554d7ee0f5d177b6c0bce805f5a5917b6b211978Andreas Gampe
30554d7ee0f5d177b6c0bce805f5a5917b6b211978Andreas Gampe    @Override
31554d7ee0f5d177b6c0bce805f5a5917b6b211978Andreas Gampe    public void actionPerformed(ActionEvent e) {
323bf65c916ce65c06b0920ec4b8f68d3ef6c5e721Andreas Gampe        if (Main.getUI().isSingleThreaded()) {
333bf65c916ce65c06b0920ec4b8f68d3ef6c5e721Andreas Gampe            run();
343bf65c916ce65c06b0920ec4b8f68d3ef6c5e721Andreas Gampe        } else {
353bf65c916ce65c06b0920ec4b8f68d3ef6c5e721Andreas Gampe            new Thread(this).start();
363bf65c916ce65c06b0920ec4b8f68d3ef6c5e721Andreas Gampe        }
37554d7ee0f5d177b6c0bce805f5a5917b6b211978Andreas Gampe    }
38554d7ee0f5d177b6c0bce805f5a5917b6b211978Andreas Gampe
39554d7ee0f5d177b6c0bce805f5a5917b6b211978Andreas Gampe}
40