/* * KerhoWinView.java */ package kerhowin; import org.jdesktop.application.Action; import org.jdesktop.application.ResourceMap; import org.jdesktop.application.SingleFrameApplication; import org.jdesktop.application.FrameView; import org.jdesktop.application.TaskMonitor; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.awt.event.WindowAdapter; import java.awt.event.WindowEvent; import javax.swing.JOptionPane; import javax.swing.Timer; import javax.swing.Icon; import javax.swing.JDialog; import javax.swing.JFrame; import kerhoswing.KerhoSwing; /** * The application's main frame. * Itse lisätty koodi merkitty: /// VL: */ public class KerhoWinView extends FrameView { private KerhoSwing kerhoswing; /** * Alustetaan sovelluksen ikkuna * @param app viite sovellukseen */ public KerhoWinView(SingleFrameApplication app) { super(app); initComponents(); kerhoswing = new KerhoSwing(cbKentat,editHaku,listJasenet,panelJasen); /// VL: String virhe = kerhoswing.lueTiedosto("kelmit"); /// VL: if ( virhe != null ) JOptionPane.showMessageDialog(null, virhe); /// VL: this.getFrame().addWindowListener(new WindowAdapter() { /// VL: @Override public void windowClosing(WindowEvent arg0) { /// VL: kerhoswing.tarkistaMuutos(); /// VL: } /// VL: }); /// VL: // status bar initialization - message timeout, idle icon and busy animation, etc ResourceMap resourceMap = getResourceMap(); int messageTimeout = resourceMap.getInteger("StatusBar.messageTimeout"); messageTimer = new Timer(messageTimeout, new ActionListener() { public void actionPerformed(ActionEvent e) { statusMessageLabel.setText(""); } }); messageTimer.setRepeats(false); int busyAnimationRate = resourceMap.getInteger("StatusBar.busyAnimationRate"); for (int i = 0; i < busyIcons.length; i++) { busyIcons[i] = resourceMap.getIcon("StatusBar.busyIcons[" + i + "]"); } busyIconTimer = new Timer(busyAnimationRate, new ActionListener() { public void actionPerformed(ActionEvent e) { busyIconIndex = (busyIconIndex + 1) % busyIcons.length; statusAnimationLabel.setIcon(busyIcons[busyIconIndex]); } }); idleIcon = resourceMap.getIcon("StatusBar.idleIcon"); statusAnimationLabel.setIcon(idleIcon); progressBar.setVisible(false); // connecting action tasks to status bar via TaskMonitor TaskMonitor taskMonitor = new TaskMonitor(getApplication().getContext()); 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); 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); } } }); } @Action public void showAboutBox() { if (aboutBox == null) { JFrame mainFrame = KerhoWinApp.getApplication().getMainFrame(); aboutBox = new KerhoWinAboutBox(mainFrame); aboutBox.setLocationRelativeTo(mainFrame); } KerhoWinApp.getApplication().show(aboutBox); } /** 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") // //GEN-BEGIN:initComponents private void initComponents() { mainPanel = new javax.swing.JPanel(); panelJasenet = new javax.swing.JPanel(); panelHaku = new javax.swing.JPanel(); cbKentat = new javax.swing.JComboBox(); editHaku = new javax.swing.JTextField(); jScrollPane2 = new javax.swing.JScrollPane(); listJasenet = new javax.swing.JList(); panelJasenHallinta = new javax.swing.JPanel(); panelJasen = new javax.swing.JPanel(); panelNappulat = new javax.swing.JPanel(); buttonLisaa = new javax.swing.JButton(); buttonTalleta = new javax.swing.JButton(); menuBar = new javax.swing.JMenuBar(); javax.swing.JMenu fileMenu = new javax.swing.JMenu(); javax.swing.JMenuItem exitMenuItem = new javax.swing.JMenuItem(); javax.swing.JMenu helpMenu = new javax.swing.JMenu(); javax.swing.JMenuItem aboutMenuItem = new javax.swing.JMenuItem(); 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(); mainPanel.setName("mainPanel"); // NOI18N mainPanel.setLayout(new java.awt.BorderLayout()); panelJasenet.setName("panelJasenet"); // NOI18N panelJasenet.setLayout(new java.awt.BorderLayout()); panelHaku.setName("panelHaku"); // NOI18N panelHaku.setPreferredSize(new java.awt.Dimension(100, 40)); panelHaku.setLayout(new java.awt.BorderLayout()); cbKentat.setModel(new javax.swing.DefaultComboBoxModel(new String[] { "Item 1", "Item 2", "Item 3", "Item 4" })); cbKentat.setName("cbKentat"); // NOI18N panelHaku.add(cbKentat, java.awt.BorderLayout.NORTH); org.jdesktop.application.ResourceMap resourceMap = org.jdesktop.application.Application.getInstance(kerhowin.KerhoWinApp.class).getContext().getResourceMap(KerhoWinView.class); editHaku.setText(resourceMap.getString("editHaku.text")); // NOI18N editHaku.setName("editHaku"); // NOI18N panelHaku.add(editHaku, java.awt.BorderLayout.CENTER); panelJasenet.add(panelHaku, java.awt.BorderLayout.NORTH); jScrollPane2.setName("jScrollPane2"); // NOI18N listJasenet.setModel(new javax.swing.AbstractListModel() { String[] strings = { "Item 1", "Item 2", "Item 3", "Item 4", "Item 5" }; public int getSize() { return strings.length; } public Object getElementAt(int i) { return strings[i]; } }); listJasenet.setName("listJasenet"); // NOI18N jScrollPane2.setViewportView(listJasenet); panelJasenet.add(jScrollPane2, java.awt.BorderLayout.CENTER); mainPanel.add(panelJasenet, java.awt.BorderLayout.LINE_START); panelJasenHallinta.setName("panelJasenHallinta"); // NOI18N panelJasenHallinta.setLayout(new java.awt.BorderLayout()); panelJasen.setName("panelJasen"); // NOI18N panelJasen.setLayout(new java.awt.GridLayout(13, 2, 2, 2)); panelJasenHallinta.add(panelJasen, java.awt.BorderLayout.CENTER); panelNappulat.setName("panelNappulat"); // NOI18N panelNappulat.setLayout(new java.awt.FlowLayout(java.awt.FlowLayout.CENTER, 15, 5)); buttonLisaa.setText(resourceMap.getString("buttonLisaa.text")); // NOI18N buttonLisaa.setName("buttonLisaa"); // NOI18N buttonLisaa.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { buttonLisaaActionPerformed(evt); } }); panelNappulat.add(buttonLisaa); buttonTalleta.setText(resourceMap.getString("buttonTalleta.text")); // NOI18N buttonTalleta.setName("buttonTalleta"); // NOI18N buttonTalleta.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { buttonTalletaActionPerformed(evt); } }); panelNappulat.add(buttonTalleta); panelJasenHallinta.add(panelNappulat, java.awt.BorderLayout.SOUTH); mainPanel.add(panelJasenHallinta, java.awt.BorderLayout.CENTER); menuBar.setName("menuBar"); // NOI18N fileMenu.setText(resourceMap.getString("fileMenu.text")); // NOI18N fileMenu.setName("fileMenu"); // NOI18N javax.swing.ActionMap actionMap = org.jdesktop.application.Application.getInstance(kerhowin.KerhoWinApp.class).getContext().getActionMap(KerhoWinView.class, this); exitMenuItem.setAction(actionMap.get("quit")); // NOI18N exitMenuItem.setName("exitMenuItem"); // NOI18N exitMenuItem.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { exitMenuItemActionPerformed(evt); } }); fileMenu.add(exitMenuItem); menuBar.add(fileMenu); helpMenu.setText(resourceMap.getString("helpMenu.text")); // NOI18N helpMenu.setName("helpMenu"); // NOI18N aboutMenuItem.setAction(actionMap.get("showAboutBox")); // NOI18N aboutMenuItem.setName("aboutMenuItem"); // NOI18N helpMenu.add(aboutMenuItem); menuBar.add(helpMenu); 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, 547, Short.MAX_VALUE) .addGroup(statusPanelLayout.createSequentialGroup() .addContainerGap() .addComponent(statusMessageLabel) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED, 373, 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)) ); setComponent(mainPanel); setMenuBar(menuBar); setStatusBar(statusPanel); }// //GEN-END:initComponents private void buttonLisaaActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_buttonLisaaActionPerformed kerhoswing.lisaa(); /// VL: }//GEN-LAST:event_buttonLisaaActionPerformed private void buttonTalletaActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_buttonTalletaActionPerformed kerhoswing.talleta(); /// VL: }//GEN-LAST:event_buttonTalletaActionPerformed private void exitMenuItemActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_exitMenuItemActionPerformed kerhoswing.tarkistaMuutos(); /// VL: }//GEN-LAST:event_exitMenuItemActionPerformed // Variables declaration - do not modify//GEN-BEGIN:variables private javax.swing.JButton buttonLisaa; private javax.swing.JButton buttonTalleta; private javax.swing.JComboBox cbKentat; private javax.swing.JTextField editHaku; private javax.swing.JScrollPane jScrollPane2; private javax.swing.JList listJasenet; private javax.swing.JPanel mainPanel; private javax.swing.JMenuBar menuBar; private javax.swing.JPanel panelHaku; private javax.swing.JPanel panelJasen; private javax.swing.JPanel panelJasenHallinta; private javax.swing.JPanel panelJasenet; private javax.swing.JPanel panelNappulat; 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 private final Timer messageTimer; private final Timer busyIconTimer; private final Icon idleIcon; private final Icon[] busyIcons = new Icon[15]; private int busyIconIndex = 0; private JDialog aboutBox; }