TrustGrapher  r52
A playabale simulator for modelling trust between agents
D:/src/cu/trustGrapher/OptionsWindow.java
Go to the documentation of this file.
00001 
00002 package cu.trustGrapher;
00003 
00004 import cu.trustGrapher.eventplayer.EventPlayer;
00005 import cu.trustGrapher.eventplayer.PlaybackPanel;
00006 import aohara.utilities.ChatterBox;
00007 import aohara.utilities.PropertyManager;
00008 
00015 public class OptionsWindow extends javax.swing.JFrame {
00016 
00017     public static final String DELAY = "delay", SCRUB_MODE = "scrubMode";
00018     protected TrustGrapher trustGrapher;
00019 
00021     public OptionsWindow(TrustGrapher trustGrapher) {
00022         this.trustGrapher = trustGrapher;
00023         initComponents();
00024 
00025         PropertyManager config = trustGrapher.getPropertyManager();
00026 
00027         if (config.containsKey(DELAY)) { //Load current delay from properties
00028             if (config.getProperty(DELAY).equals("" + EventPlayer.DEFAULT_DELAY)) { //If the current delay is the default delay
00029                 defaultDelayButton.doClick();
00030                 delayField.setText("");
00031             } else { //Otherwise, the delay is custom
00032                 customDelayButton.doClick();
00033                 delayField.setText(config.getProperty(DELAY));
00034             }
00035         }
00036         if (config.containsKey(SCRUB_MODE)) { //Load current playbackSlider mode from properties
00037             if (Boolean.parseBoolean(config.getProperty(SCRUB_MODE))) { //If the mode is set to scrub
00038                 scrubButton.doClick();
00039             } else { //Othwerise, it must be set to drag & drop
00040                 dragDropButton.doClick();
00041             }
00042         }
00043         setVisible(true);
00044     }
00045 
00047     public static void run(TrustGrapher trustGrapher) {
00048         OptionsWindow optionsWindow = new OptionsWindow(trustGrapher);
00049     }
00050 
00052 
00057     @SuppressWarnings("unchecked")
00058     // <editor-fold defaultstate="collapsed" desc="Generated Code">//GEN-BEGIN:initComponents
00059     private void initComponents() {
00060 
00061         buttonGroup1 = new javax.swing.ButtonGroup();
00062         buttonGroup2 = new javax.swing.ButtonGroup();
00063         javax.swing.JPanel jPanel1 = new javax.swing.JPanel();
00064         defaultDelayButton = new javax.swing.JRadioButton();
00065         customDelayButton = new javax.swing.JRadioButton();
00066         delayField = new javax.swing.JTextField();
00067         delayLabel = new javax.swing.JLabel();
00068         msLabel = new javax.swing.JLabel();
00069         javax.swing.JPanel jPanel2 = new javax.swing.JPanel();
00070         scrubButton = new javax.swing.JRadioButton();
00071         dragDropButton = new javax.swing.JRadioButton();
00072         javax.swing.JButton cancelButton = new javax.swing.JButton();
00073         javax.swing.JButton okButton = new javax.swing.JButton();
00074 
00075         setTitle("TrustGrapher Options");
00076 
00077         jPanel1.setBorder(javax.swing.BorderFactory.createTitledBorder("Delay Between each Event"));
00078 
00079         buttonGroup1.add(defaultDelayButton);
00080         defaultDelayButton.setSelected(true);
00081         defaultDelayButton.setText("Default Delay (250 ms)");
00082         defaultDelayButton.addActionListener(new java.awt.event.ActionListener() {
00083             public void actionPerformed(java.awt.event.ActionEvent evt) {
00084                 defaultDelayButtonActionPerformed(evt);
00085             }
00086         });
00087 
00088         buttonGroup1.add(customDelayButton);
00089         customDelayButton.setText("Custom Delay");
00090         customDelayButton.addActionListener(new java.awt.event.ActionListener() {
00091             public void actionPerformed(java.awt.event.ActionEvent evt) {
00092                 customDelayButtonActionPerformed(evt);
00093             }
00094         });
00095 
00096         delayField.setColumns(4);
00097         delayField.setText("250");
00098         delayField.setEnabled(false);
00099 
00100         delayLabel.setText("Delay: ");
00101         delayLabel.setEnabled(false);
00102 
00103         msLabel.setText("ms");
00104         msLabel.setEnabled(false);
00105 
00106         javax.swing.GroupLayout jPanel1Layout = new javax.swing.GroupLayout(jPanel1);
00107         jPanel1.setLayout(jPanel1Layout);
00108         jPanel1Layout.setHorizontalGroup(
00109             jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
00110             .addGroup(jPanel1Layout.createSequentialGroup()
00111                 .addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
00112                 .addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
00113                     .addGroup(jPanel1Layout.createSequentialGroup()
00114                         .addGap(12, 12, 12)
00115                         .addComponent(delayLabel)
00116                         .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
00117                         .addComponent(delayField, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
00118                         .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
00119                         .addComponent(msLabel))
00120                     .addComponent(defaultDelayButton)
00121                     .addComponent(customDelayButton)))
00122         );
00123         jPanel1Layout.setVerticalGroup(
00124             jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
00125             .addGroup(jPanel1Layout.createSequentialGroup()
00126                 .addComponent(defaultDelayButton)
00127                 .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
00128                 .addComponent(customDelayButton)
00129                 .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
00130                 .addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
00131                     .addComponent(delayLabel)
00132                     .addComponent(delayField, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
00133                     .addComponent(msLabel))
00134                 .addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
00135         );
00136 
00137         jPanel2.setBorder(javax.swing.BorderFactory.createTitledBorder("Timeline Slider Mode"));
00138 
00139         buttonGroup2.add(scrubButton);
00140         scrubButton.setSelected(true);
00141         scrubButton.setText("Scrub");
00142         scrubButton.addActionListener(new java.awt.event.ActionListener() {
00143             public void actionPerformed(java.awt.event.ActionEvent evt) {
00144                 scrubButtonActionPerformed(evt);
00145             }
00146         });
00147 
00148         buttonGroup2.add(dragDropButton);
00149         dragDropButton.setText("Drag & Drop");
00150 
00151         javax.swing.GroupLayout jPanel2Layout = new javax.swing.GroupLayout(jPanel2);
00152         jPanel2.setLayout(jPanel2Layout);
00153         jPanel2Layout.setHorizontalGroup(
00154             jPanel2Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
00155             .addGroup(jPanel2Layout.createSequentialGroup()
00156                 .addContainerGap()
00157                 .addGroup(jPanel2Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
00158                     .addComponent(scrubButton)
00159                     .addComponent(dragDropButton))
00160                 .addContainerGap(70, Short.MAX_VALUE))
00161         );
00162         jPanel2Layout.setVerticalGroup(
00163             jPanel2Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
00164             .addGroup(jPanel2Layout.createSequentialGroup()
00165                 .addComponent(scrubButton)
00166                 .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
00167                 .addComponent(dragDropButton))
00168         );
00169 
00170         cancelButton.setText("Cancel");
00171         cancelButton.addActionListener(new java.awt.event.ActionListener() {
00172             public void actionPerformed(java.awt.event.ActionEvent evt) {
00173                 cancelButtonActionPerformed(evt);
00174             }
00175         });
00176 
00177         okButton.setText("OK");
00178         okButton.addActionListener(new java.awt.event.ActionListener() {
00179             public void actionPerformed(java.awt.event.ActionEvent evt) {
00180                 okButtonActionPerformed(evt);
00181             }
00182         });
00183 
00184         javax.swing.GroupLayout layout = new javax.swing.GroupLayout(getContentPane());
00185         getContentPane().setLayout(layout);
00186         layout.setHorizontalGroup(
00187             layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
00188             .addGroup(layout.createSequentialGroup()
00189                 .addContainerGap()
00190                 .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
00191                     .addGroup(layout.createSequentialGroup()
00192                         .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILING)
00193                             .addComponent(jPanel2, javax.swing.GroupLayout.Alignment.LEADING, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
00194                             .addComponent(jPanel1, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
00195                         .addContainerGap())
00196                     .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, layout.createSequentialGroup()
00197                         .addComponent(okButton)
00198                         .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
00199                         .addComponent(cancelButton)
00200                         .addGap(64, 64, 64))))
00201         );
00202         layout.setVerticalGroup(
00203             layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
00204             .addGroup(layout.createSequentialGroup()
00205                 .addContainerGap()
00206                 .addComponent(jPanel1, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
00207                 .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
00208                 .addComponent(jPanel2, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
00209                 .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
00210                 .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
00211                     .addComponent(okButton)
00212                     .addComponent(cancelButton))
00213                 .addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
00214         );
00215 
00216         pack();
00217     }// </editor-fold>//GEN-END:initComponents
00218 
00219 private void defaultDelayButtonActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_defaultDelayButtonActionPerformed
00220     //If the defaultDelayButton is pressed, disable the custom delay field and text
00221     delayLabel.setEnabled(false);
00222     delayField.setEnabled(false);
00223     msLabel.setEnabled(false);
00224 }//GEN-LAST:event_defaultDelayButtonActionPerformed
00225 
00226 private void customDelayButtonActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_customDelayButtonActionPerformed
00227     //Id the customDelayButton is pressed, enable the custom delay field and text
00228     delayLabel.setEnabled(true);
00229     delayField.setEnabled(true);
00230     msLabel.setEnabled(true);
00231 }//GEN-LAST:event_customDelayButtonActionPerformed
00232 
00233 private void okButtonActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_okButtonActionPerformed
00234     try {
00235         int delay = EventPlayer.DEFAULT_DELAY;
00236         if (customDelayButton.isSelected()) { //Try to parse the custom delay into an int
00237             delay = Integer.parseInt(delayField.getText());
00238             if (delay < 1 || delay > 9000) {
00239                 throw new NumberFormatException();
00240             }
00241         }
00242         EventPlayer eventThread = trustGrapher.getEventPlayer();
00243         if (eventThread != null) { //If the eventThread exists
00244             eventThread.setDelay(delay); //Set the new delay
00245             PlaybackPanel playbackPanel = eventThread.getPlaybackPanel();
00246             if (playbackPanel != null) { //If the playbackPanel exists too
00247                 playbackPanel.setScrubMode(scrubButton.isSelected()); //Set the scrub mode
00248             }
00249         }
00250         PropertyManager config = trustGrapher.getPropertyManager(); //Set the properties
00251         config.setProperty(DELAY, "" + delay);
00252         config.setProperty(SCRUB_MODE, scrubButton.isSelected() ? "true" : "false");
00253         config.save();
00254         dispose();
00255         //If there is an error with the customDelayField, give an error message, but don't do anything
00256     } catch (NumberFormatException ex) {
00257         ChatterBox.alert("You must enter an integer between 1 and 9 000");
00258     }
00259 }//GEN-LAST:event_okButtonActionPerformed
00260 
00261 private void cancelButtonActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_cancelButtonActionPerformed
00262     dispose();
00263 }//GEN-LAST:event_cancelButtonActionPerformed
00264 
00265 private void scrubButtonActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_scrubButtonActionPerformed
00266 // TODO add your handling code here:
00267 }//GEN-LAST:event_scrubButtonActionPerformed
00268     // Variables declaration - do not modify//GEN-BEGIN:variables
00269     private javax.swing.ButtonGroup buttonGroup1;
00270     private javax.swing.ButtonGroup buttonGroup2;
00271     private javax.swing.JRadioButton customDelayButton;
00272     private javax.swing.JRadioButton defaultDelayButton;
00273     private javax.swing.JTextField delayField;
00274     private javax.swing.JLabel delayLabel;
00275     private javax.swing.JRadioButton dragDropButton;
00276     private javax.swing.JLabel msLabel;
00277     private javax.swing.JRadioButton scrubButton;
00278     // End of variables declaration//GEN-END:variables
00279 }