/* * To change this template, choose Tools | Templates * and open the template in the editor. */ /* * GUIFrame.java * * Created on 10/09/2010, 12:34:30 */ package modmanager.gui.developing; import modmanager.business.ManagerOptions; import modmanager.gui.ManagerAboutBox; import modmanager.gui.l10n.L10n; import org.jdesktop.application.TaskMonitor; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.io.IOException; import java.util.GregorianCalendar; import javax.swing.Icon; import javax.swing.Timer; import javax.swing.ImageIcon; import org.jdesktop.application.Action; import org.jdesktop.application.Application; import org.jdesktop.application.ApplicationContext; import org.jdesktop.application.Task; import org.jdesktop.application.TaskService; /** * * @author Shirkit */ public class GUIFrame extends javax.swing.JFrame { @Action public void processar() { long l = GregorianCalendar.getInstance().getTimeInMillis() + 3000; while (GregorianCalendar.getInstance().getTimeInMillis() < l) { } } /** Creates new form GUIFrame */ public GUIFrame() { initComponents(); // status bar initialization - message timeout, idle icon and busy animation, etc int messageTimeout = 5000; messageTimer = new Timer(messageTimeout, new ActionListener() { public void actionPerformed(ActionEvent e) { statusMessageLabel.setText(""); } }); messageTimer.setRepeats(false); int busyAnimationRate = 30; for (int i = 0; i < busyIcons.length; i++) { busyIcons[i] = new ImageIcon("/gui/resources/busyicons/busy-icon" + i + ".png"); } busyIconTimer = new Timer(busyAnimationRate, new ActionListener() { public void actionPerformed(ActionEvent e) { busyIconIndex = (busyIconIndex + 1) % busyIcons.length; statusAnimationLabel.setIcon(busyIcons[busyIconIndex]); } }); idleIcon = new ImageIcon("/gui/resources/busyicons/idle-icon.png"); statusAnimationLabel.setIcon(idleIcon); progressBar.setVisible(false); // connecting action tasks to status bar via TaskMonitor TaskMonitor taskMonitor = new TaskMonitor(Application.getInstance().getContext()); TaskService taskService = getContext().getTaskService(); taskMonitor.addPropertyChangeListener(new java.beans.PropertyChangeListener() { public void propertyChange(java.beans.PropertyChangeEvent evt) { String propertyName = evt.getPropertyName(); if ("started".equals(propertyName)) { if (!busyIconTimer.isRunning()) { statusAnimationLabel.setIcon(busyIcons[0]); busyIconIndex = 0; busyIconTimer.start(); } progressBar.setVisible(true); progressBar.setIndeterminate(true); } else if ("done".equals(propertyName)) { busyIconTimer.stop(); statusAnimationLabel.setIcon(idleIcon); statusMessageLabel.setVisible(false); progressBar.setVisible(false); progressBar.setValue(0); } else if ("message".equals(propertyName)) { String text = (String) (evt.getNewValue()); statusMessageLabel.setText((text == null) ? "" : text); messageTimer.restart(); } else if ("progress".equals(propertyName)) { int value = (Integer) (evt.getNewValue()); progressBar.setVisible(true); progressBar.setIndeterminate(false); progressBar.setValue(value); } } }); Task task = new Task<Void, Void>(getApplication(), "desc") { @Override public synchronized String getDescription() { return "getdesc"; } @Override public String getMessage() { return "getmessage"; } @Override protected Void doInBackground() throws Exception { this.setMessage(getMessage()); this.setTitle(getTitle()); this.setDescription(getDescription()); this.setProgress(5); processar(); return null; } @Override public synchronized String getTitle() { return "title"; } }; taskService.execute(task); taskMonitor.setForegroundTask(task); } /** This method is called from within the constructor to * initialize the form. * WARNING: Do NOT modify this code. The content of this method is * always regenerated by the Form Editor. */ @SuppressWarnings("unchecked") // <editor-fold defaultstate="collapsed" desc="Generated Code">//GEN-BEGIN:initComponents private void initComponents() { statusPanel = new javax.swing.JPanel(); javax.swing.JSeparator statusPanelSeparator = new javax.swing.JSeparator(); statusMessageLabel = new javax.swing.JLabel(); statusAnimationLabel = new javax.swing.JLabel(); progressBar = new javax.swing.JProgressBar(); mainMenu = new javax.swing.JMenuBar(); menuFile = new javax.swing.JMenu(); itemApplyMods = new javax.swing.JMenuItem(); itemApplyAndLaunch = new javax.swing.JMenuItem(); itemUnapplyAllMods = new javax.swing.JMenuItem(); jSeparator1 = new javax.swing.JPopupMenu.Separator(); itemOpenModFolder = new javax.swing.JMenuItem(); jSeparator3 = new javax.swing.JPopupMenu.Separator(); itemDownloadModUpdates = new javax.swing.JMenuItem(); jSeparator2 = new javax.swing.JPopupMenu.Separator(); itemExit = new javax.swing.JMenuItem(); menuOptions = new javax.swing.JMenu(); itemOpenPreferences = new javax.swing.JMenuItem(); itemRefresh = new javax.swing.JMenuItem(); menuHelp = new javax.swing.JMenu(); itemVisitForumThread = new javax.swing.JMenuItem(); jSeparator4 = new javax.swing.JPopupMenu.Separator(); itemAbout = new javax.swing.JMenuItem(); setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE); setName("Form"); // NOI18N statusPanel.setName("statusPanel"); // NOI18N statusPanelSeparator.setName("statusPanelSeparator"); // NOI18N statusMessageLabel.setName("statusMessageLabel"); // NOI18N statusAnimationLabel.setHorizontalAlignment(javax.swing.SwingConstants.LEFT); statusAnimationLabel.setName("statusAnimationLabel"); // NOI18N progressBar.setName("progressBar"); // NOI18N javax.swing.GroupLayout statusPanelLayout = new javax.swing.GroupLayout(statusPanel); statusPanel.setLayout(statusPanelLayout); statusPanelLayout.setHorizontalGroup( statusPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addComponent(statusPanelSeparator, javax.swing.GroupLayout.DEFAULT_SIZE, 752, Short.MAX_VALUE) .addGroup(statusPanelLayout.createSequentialGroup() .addContainerGap() .addComponent(statusMessageLabel) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED, 577, Short.MAX_VALUE) .addComponent(progressBar, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) .addComponent(statusAnimationLabel) .addContainerGap()) ); statusPanelLayout.setVerticalGroup( statusPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addGroup(statusPanelLayout.createSequentialGroup() .addComponent(statusPanelSeparator, javax.swing.GroupLayout.PREFERRED_SIZE, 2, javax.swing.GroupLayout.PREFERRED_SIZE) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) .addGroup(statusPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE) .addComponent(statusMessageLabel) .addComponent(statusAnimationLabel) .addComponent(progressBar, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)) .addGap(3, 3, 3)) ); mainMenu.setName("mainMenu"); // NOI18N menuFile.setMnemonic(L10n.getMnemonic("menu.file")); menuFile.setText(L10n.getString("menu.file")); menuFile.setName("menuFile"); // NOI18N itemApplyMods.setAccelerator(javax.swing.KeyStroke.getKeyStroke(java.awt.event.KeyEvent.VK_S, java.awt.event.InputEvent.CTRL_MASK)); itemApplyMods.setMnemonic(L10n.getMnemonic("menu.file.applymods")); itemApplyMods.setText(L10n.getString("menu.file.applymods")); itemApplyMods.setName("itemApplyMods"); // NOI18N menuFile.add(itemApplyMods); itemApplyAndLaunch.setAccelerator(javax.swing.KeyStroke.getKeyStroke(java.awt.event.KeyEvent.VK_S, java.awt.event.InputEvent.SHIFT_MASK | java.awt.event.InputEvent.CTRL_MASK)); itemApplyAndLaunch.setMnemonic(L10n.getMnemonic("menu.file.applyandlaunch")); itemApplyAndLaunch.setText(L10n.getString("menu.file.applyandlaunch")); itemApplyAndLaunch.setName("itemApplyAndLaunch"); // NOI18N menuFile.add(itemApplyAndLaunch); itemUnapplyAllMods.setMnemonic(L10n.getMnemonic("menu.file.unapplymods")); itemUnapplyAllMods.setText(L10n.getString("menu.file.unapplymods")); itemUnapplyAllMods.setName("itemUnapplyAllMods"); // NOI18N menuFile.add(itemUnapplyAllMods); jSeparator1.setName("jSeparator1"); // NOI18N menuFile.add(jSeparator1); itemOpenModFolder.setAccelerator(javax.swing.KeyStroke.getKeyStroke(java.awt.event.KeyEvent.VK_F, java.awt.event.InputEvent.CTRL_MASK)); itemOpenModFolder.setMnemonic(L10n.getMnemonic("menu.file.openfolder")); itemOpenModFolder.setText(L10n.getString("menu.file.openfolder")); itemOpenModFolder.setName("itemOpenModFolder"); // NOI18N menuFile.add(itemOpenModFolder); jSeparator3.setName("jSeparator3"); // NOI18N menuFile.add(jSeparator3); itemDownloadModUpdates.setAccelerator(javax.swing.KeyStroke.getKeyStroke(java.awt.event.KeyEvent.VK_U, java.awt.event.InputEvent.SHIFT_MASK | java.awt.event.InputEvent.CTRL_MASK)); itemDownloadModUpdates.setMnemonic(L10n.getMnemonic("menu.file.downloadmodupdates")); itemDownloadModUpdates.setText(L10n.getString("menu.file.downloadmodupdates")); itemDownloadModUpdates.setName("itemDownloadModUpdates"); // NOI18N menuFile.add(itemDownloadModUpdates); jSeparator2.setName("jSeparator2"); // NOI18N menuFile.add(jSeparator2); itemExit.setAccelerator(javax.swing.KeyStroke.getKeyStroke(java.awt.event.KeyEvent.VK_Q, java.awt.event.InputEvent.CTRL_MASK)); itemExit.setMnemonic(L10n.getMnemonic("menu.file.exit")); itemExit.setText(L10n.getString("menu.file.exit")); itemExit.setName("itemExit"); // NOI18N menuFile.add(itemExit); mainMenu.add(menuFile); menuOptions.setMnemonic(L10n.getMnemonic("menu.options")); menuOptions.setText(L10n.getString("menu.options")); menuOptions.setName("menuOptions"); // NOI18N itemOpenPreferences.setAccelerator(javax.swing.KeyStroke.getKeyStroke(java.awt.event.KeyEvent.VK_P, java.awt.event.InputEvent.CTRL_MASK)); itemOpenPreferences.setMnemonic(L10n.getMnemonic("menu.options.preferences")); itemOpenPreferences.setText(L10n.getString("menu.options.preferences")); itemOpenPreferences.setName("itemOpenPreferences"); // NOI18N itemOpenPreferences.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { itemOpenPreferencesActionPerformed(evt); } }); menuOptions.add(itemOpenPreferences); itemRefresh.setAccelerator(javax.swing.KeyStroke.getKeyStroke(java.awt.event.KeyEvent.VK_F5, 0)); itemRefresh.setMnemonic(L10n.getMnemonic("menu.options.refresh")); itemRefresh.setText(L10n.getString("menu.options.refresh")); itemRefresh.setName("itemRefresh"); // NOI18N menuOptions.add(itemRefresh); mainMenu.add(menuOptions); menuHelp.setMnemonic(L10n.getMnemonic("menu.help")); menuHelp.setText(L10n.getString("menu.help")); menuHelp.setName("menuHelp"); // NOI18N itemVisitForumThread.setMnemonic(L10n.getMnemonic("menu.help.website")); itemVisitForumThread.setText(L10n.getString("menu.help.website")); itemVisitForumThread.setName("itemVisitForumThread"); // NOI18N menuHelp.add(itemVisitForumThread); jSeparator4.setName("jSeparator4"); // NOI18N menuHelp.add(jSeparator4); itemAbout.setAccelerator(javax.swing.KeyStroke.getKeyStroke(java.awt.event.KeyEvent.VK_F1, 0)); itemAbout.setMnemonic(L10n.getMnemonic("menu.help.about")); itemAbout.setText(L10n.getString("menu.help.about")); itemAbout.setName("itemAbout"); // NOI18N itemAbout.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { itemAboutActionPerformed(evt); } }); menuHelp.add(itemAbout); mainMenu.add(menuHelp); setJMenuBar(mainMenu); javax.swing.GroupLayout layout = new javax.swing.GroupLayout(getContentPane()); getContentPane().setLayout(layout); layout.setHorizontalGroup( layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addComponent(statusPanel, javax.swing.GroupLayout.Alignment.TRAILING, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) ); layout.setVerticalGroup( layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, layout.createSequentialGroup() .addContainerGap(314, Short.MAX_VALUE) .addComponent(statusPanel, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)) ); pack(); }// </editor-fold>//GEN-END:initComponents private void itemOpenPreferencesActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_itemOpenPreferencesActionPerformed }//GEN-LAST:event_itemOpenPreferencesActionPerformed private void itemAboutActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_itemAboutActionPerformed ManagerAboutBox about = new ManagerAboutBox(this, ManagerOptions.getInstance()); about.setLocation(this.getX() + 20, this.getY() + 20); about.setVisible(true); }//GEN-LAST:event_itemAboutActionPerformed private ApplicationContext getContext() { return getApplication().getContext(); } private Application getApplication() { return Application.getInstance(); } /** * @param args the command line arguments */ public static void main(String args[]) { java.awt.EventQueue.invokeLater(new Runnable() { public void run() { try { L10n.load(); } catch (IOException ex) { ex.printStackTrace(); } new GUIFrame().setVisible(true); } }); } private final Timer messageTimer; private final Timer busyIconTimer; private final Icon idleIcon; private final Icon[] busyIcons = new Icon[15]; private int busyIconIndex = 0; // Variables declaration - do not modify//GEN-BEGIN:variables private javax.swing.JMenuItem itemAbout; private javax.swing.JMenuItem itemApplyAndLaunch; private javax.swing.JMenuItem itemApplyMods; private javax.swing.JMenuItem itemDownloadModUpdates; private javax.swing.JMenuItem itemExit; private javax.swing.JMenuItem itemOpenModFolder; private javax.swing.JMenuItem itemOpenPreferences; private javax.swing.JMenuItem itemRefresh; private javax.swing.JMenuItem itemUnapplyAllMods; private javax.swing.JMenuItem itemVisitForumThread; private javax.swing.JPopupMenu.Separator jSeparator1; private javax.swing.JPopupMenu.Separator jSeparator2; private javax.swing.JPopupMenu.Separator jSeparator3; private javax.swing.JPopupMenu.Separator jSeparator4; private javax.swing.JMenuBar mainMenu; private javax.swing.JMenu menuFile; private javax.swing.JMenu menuHelp; private javax.swing.JMenu menuOptions; private javax.swing.JProgressBar progressBar; private javax.swing.JLabel statusAnimationLabel; private javax.swing.JLabel statusMessageLabel; private javax.swing.JPanel statusPanel; // End of variables declaration//GEN-END:variables }