/* * This file is part of FTB Launcher. * * Copyright © 2012-2016, FTB Launcher Contributors <https://github.com/Slowpoke101/FTBLaunch/> * FTB Launcher is licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package net.ftb.gui.dialogs; import java.awt.Container; import java.awt.Toolkit; import java.util.concurrent.atomic.AtomicInteger; import javax.swing.ImageIcon; import javax.swing.JDialog; import javax.swing.JFrame; import javax.swing.JLabel; import javax.swing.JProgressBar; import javax.swing.SwingConstants; import javax.swing.SwingUtilities; import net.ftb.locale.I18N; import net.ftb.log.Logger; @SuppressWarnings("serial") public class LoadingDialog extends JDialog { private JLabel loadStatusLbl; private JLabel splashLbl; private JProgressBar progressBar; private static LoadingDialog instance; private static int BAR_SIZE = 200; private static int COUNT = 7; private static int INCREMENT = BAR_SIZE / COUNT; private static AtomicInteger progress = new AtomicInteger(0); public LoadingDialog () { super(); setupGui(); instance = this; } public static void advance (final String text) { Logger.logInfo(text); final int newValue = progress.getAndAdd(INCREMENT) + INCREMENT; if (instance != null) { if (SwingUtilities.isEventDispatchThread()) { doAdvance(text, newValue); } else { SwingUtilities.invokeLater(new Runnable() { @Override public void run () { doAdvance(text, newValue); } }); } } } private static void doAdvance (String text, int newValue) { instance.progressBar.setValue(newValue); instance.loadStatusLbl.setText(text); instance.repaint(); } private void setupGui () { setIconImage(Toolkit.getDefaultToolkit().getImage(this.getClass().getResource("/image/logo_ftb.png"))); setTitle(I18N.getLocaleString("TeamNT Launcher")); setSize(300, 260); setLayout(null); setLocationRelativeTo(null); setResizable(false); setUndecorated(true); setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE); Container panel = getContentPane(); splashLbl = new JLabel(new ImageIcon(this.getClass().getResource("/image/logo_ftb_large.png"))); splashLbl.setBounds(0, 20, 300, 160); loadStatusLbl = new JLabel("Loading..."); loadStatusLbl.setHorizontalAlignment(SwingConstants.CENTER); loadStatusLbl.setBounds(0, 200, 300, 20); progressBar = new JProgressBar(0, BAR_SIZE); progressBar.setBounds(10, 230, 280, 20); panel.add(splashLbl); panel.add(loadStatusLbl); panel.add(progressBar); } }