TrustGrapher
r52
A playabale simulator for modelling trust between agents
|
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 }