Math2mat

/home/ythoma/docs/math2mat/svn/wp1/framework/m2mGUI/src/m2m/frontend/actions/ConfigureSimulationAction.java

Go to the documentation of this file.
00001 
00020 package m2m.frontend.actions;
00021 
00022 import org.eclipse.jface.dialogs.Dialog;
00023 import org.eclipse.swt.SWT;
00024 import org.eclipse.swt.layout.GridData;
00025 import org.eclipse.swt.layout.GridLayout;
00026 import org.eclipse.swt.widgets.Composite;
00027 import org.eclipse.swt.widgets.Control;
00028 import org.eclipse.swt.widgets.Display;
00029 import org.eclipse.swt.widgets.Group;
00030 import org.eclipse.swt.widgets.Label;
00031 import org.eclipse.swt.widgets.MessageBox;
00032 import org.eclipse.swt.widgets.Shell;
00033 import org.eclipse.swt.widgets.Text;
00034 import org.eclipse.ui.IWorkbenchWindow;
00035 
00036 import m2m.backend.project.SimulationProperties;
00037 import m2m.frontend.M2MToolTips;
00038 import m2m.frontend.actions.M2MAction;
00039 
00040 
00041 public class ConfigureSimulationAction extends M2MAction{
00042 
00043         public ConfigureSimulationAction(IWorkbenchWindow window, String label) {
00044                 super(window,label);
00045         // The id is used to refer to the action in a menu or toolbar
00046                 setId(ICommandIds.CMD_CONFSIM);
00047         // Associate the action with a pre-defined command, to allow key bindings.
00048                 setActionDefinitionId(ICommandIds.CMD_CONFSIM);
00049                 //setImageDescriptor(m2mgui.Activator.getImageDescriptor("/icons/open.gif"));
00050         }
00051         
00055         public void run() {
00056 
00057                 if (!getEditor("Error","Select the tab with the code you want to transform in VHDL"))
00058                         return;
00059 
00060                 Display display = window.getShell().getDisplay();
00061                 final Shell shell = new Shell(display);
00062                 shell.setText("Simulation configuration");
00063                 SimulationPropertiesDlg dlg=new SimulationPropertiesDlg(shell);
00064                 dlg.setSimulationProperties(editor.getM2MProject().getSimulationProperties());
00065                 dlg.open();
00066                 if (dlg.pressedOk()) {
00067                         editor.setModified(true);
00068                 }
00069 //                      editor.saveProject();
00070         }
00071 
00072         class SimulationPropertiesDlg extends Dialog {
00073 
00074                 
00078                 private SimulationProperties simProp;
00082                 private Text calcPres;
00086                 private Text nbSamplesEntry;
00090                 private Text systemFreqEntry;
00094                 private Text inputFreqEntry;
00098                 private Text outputFreqEntry;
00102                 private Text inactivityTimeoutEntry;
00103                 
00107                 private boolean pressedOnOk;
00108                 
00109 
00110                 public SimulationPropertiesDlg(Shell parentShell) {
00111                         super(parentShell);
00112                         pressedOnOk=false;
00113                 }
00114 
00115                 protected void configureShell(Shell shell) {
00116                         super.configureShell(shell);
00117                     shell.setText("Simulation properties");
00118                 }
00119 
00120                 
00121                 @Override
00122                 public void create() {
00123                         super.create();
00124                 }
00125 
00126                 @Override
00127                 protected Control createDialogArea(Composite parent) {
00128 
00129                         //create global GridLayout
00130                         GridLayout globalGridLayout = new GridLayout();
00131                         globalGridLayout.numColumns = 1;
00132                 
00133                         //create global Group
00134                         Group globalGroup = new Group(parent, SWT.NONE);
00135                         globalGroup.setLayout(globalGridLayout);
00136                         
00137                         //create main GridLayout
00138                         GridLayout gridLayout = new GridLayout();
00139                         gridLayout.numColumns = 3;
00140                         gridLayout.verticalSpacing = 5;
00141                         
00142                         //create date format Group
00143                         Group formatGroup = new Group(globalGroup, SWT.SHADOW_ETCHED_IN);
00144                         formatGroup.setText("Data format");
00145                         formatGroup.setBounds(globalGroup.getClientArea());
00146                         formatGroup.setLayout(gridLayout);
00147 
00148                         
00149                         //calculation precision label placement
00150                         GridData gridCalc = new GridData();
00151                         gridCalc.verticalSpan = 8;
00152                         gridCalc.verticalAlignment = SWT.BOTTOM;
00153                         
00154                         //calculation precision label
00155                         Label calcLabel = new Label(formatGroup, SWT.NONE);
00156                         calcLabel.setText("Number bit precision :");
00157                         calcLabel.setLayoutData(gridCalc);
00158                         calcLabel.pack();
00159                         
00160                         //calculation precision text entry placement
00161                         GridData gridCalcPres = new GridData();
00162                         gridCalcPres.widthHint = 100;
00163                         gridCalcPres.verticalSpan = 8;
00164                         gridCalcPres.verticalAlignment = SWT.BOTTOM;
00165                         
00166                         //text precision text entry
00167                         calcPres = new Text(formatGroup, SWT.NONE);
00168                         calcPres.setLayoutData(gridCalcPres);
00169                         calcPres.pack();
00170 
00171                         calcLabel.setToolTipText(M2MToolTips.SIMPROPERTIES_CALCPRECISION);
00172                         calcPres.setToolTipText(M2MToolTips.SIMPROPERTIES_CALCPRECISION);
00173 
00174                         //rating and sampling group
00175                         Group freqGroup = new Group(globalGroup, SWT.SHADOW_ETCHED_IN);
00176                         freqGroup.setText("Rating and sampling");
00177                         freqGroup.setLocation(5, 200);
00178                         freqGroup.setBounds(globalGroup.getClientArea());
00179 
00180                         //create main GridLayout
00181                         GridLayout freqGridLayout = new GridLayout();
00182                         freqGridLayout.numColumns = 3;
00183                         freqGridLayout.verticalSpacing = 5;
00184                         
00185                         freqGroup.setLayout(freqGridLayout);
00186                         
00187         /*
00188                         //Stress factor placement
00189                         GridData gridStressFactor = new GridData();
00190                         gridStressFactor.verticalSpan = 8;
00191                         gridStressFactor.verticalAlignment = SWT.BOTTOM;
00192                         
00193                         //Stress factor label
00194                         Label stressFactorLabel = new Label(freqGroup, SWT.NONE);
00195                         stressFactorLabel.setText("Stress factor :");
00196                         stressFactorLabel.setLayoutData(gridStressFactor);
00197                         stressFactorLabel.pack();
00198                         
00199                         //Stress factor text entry placement
00200                         GridData gridstressFactor = new GridData();
00201                         gridstressFactor.widthHint = 100;
00202                 //      gridstressFactor.horizontalSpan = 2;
00203                         gridstressFactor.verticalSpan = 8;
00204                         gridstressFactor.verticalAlignment = SWT.BOTTOM;
00205 
00206                         //Stress factor entry
00207                         stressFactor = new Spinner(freqGroup, SWT.NONE);
00208                         stressFactor.setLayoutData(gridStressFactor);
00209                 
00210 //                      stressFactor.pack();
00211 
00212                         Label emptyLabel = new Label(freqGroup, SWT.NONE);
00213                         emptyLabel.setText("");
00214                         emptyLabel.setLayoutData(gridStressFactor);
00215                         emptyLabel.pack();*/
00216                         
00217                         
00218                         
00219                         
00220 
00221                         //number of samples label placement
00222                         GridData gridNumberOfSample = new GridData();
00223                         gridNumberOfSample.verticalSpan = 8;
00224                         gridNumberOfSample.verticalAlignment = SWT.BOTTOM;
00225                         
00226                         //number of samples label
00227                         Label nbSamplesLabel = new Label(freqGroup, SWT.NONE);
00228                         nbSamplesLabel.setLayoutData(gridNumberOfSample);
00229                         nbSamplesLabel.setText("Number of samples :");
00230                         nbSamplesLabel.pack();
00231                         
00232                         //number of samples text entry placement
00233                         GridData gridNbSamplesEntry = new GridData();
00234                         gridNbSamplesEntry.widthHint = 100;
00235                         gridNbSamplesEntry.verticalSpan = 8;
00236                         gridNbSamplesEntry.horizontalSpan = 2;
00237                         gridNbSamplesEntry.verticalAlignment = SWT.BOTTOM;
00238 
00239                         //number of samples text entry
00240                         nbSamplesEntry = new Text(freqGroup, SWT.RIGHT);
00241                         nbSamplesEntry.setLayoutData(gridNbSamplesEntry);
00242                         nbSamplesEntry.pack();
00243 
00244                         nbSamplesLabel.setToolTipText(M2MToolTips.SIMPROPERTIES_NBSAMPLES);
00245                         nbSamplesEntry.setToolTipText(M2MToolTips.SIMPROPERTIES_NBSAMPLES);
00246                                                 
00247                         
00248                         //system frequency label placement
00249                         GridData gridSystFreq = new GridData();
00250                         gridSystFreq.verticalSpan = 8;
00251                         gridSystFreq.verticalAlignment = SWT.BOTTOM;
00252                         
00253                         //system frequency label
00254                         Label systFreq = new Label(freqGroup, SWT.NONE);
00255                         systFreq.setLayoutData(gridSystFreq);
00256                         systFreq.setText("System frequency :");
00257                         systFreq.pack();
00258 
00259                         //stimuli read frequency text entry placement
00260                         GridData gridSystFreqEntry = new GridData();
00261                         gridSystFreqEntry.widthHint = 100;
00262                         gridSystFreqEntry.verticalSpan = 8;
00263                         gridSystFreqEntry.verticalAlignment = SWT.BOTTOM;
00264                         
00265                         //stimuli read frequency text entry
00266                         systemFreqEntry = new Text(freqGroup, SWT.RIGHT);
00267                         systemFreqEntry.setLayoutData(gridSystFreqEntry);
00268                         systemFreqEntry.pack();
00269 
00270                         //stimuli read frequency unit label placement
00271                         GridData gridSystFreqUnit = new GridData();
00272                         gridSystFreqUnit.verticalSpan = 8;
00273                         gridSystFreqUnit.verticalAlignment = SWT.BOTTOM;
00274                         
00275                         //stimuli read frequency unit label
00276                         Label systFreqUnit = new Label(freqGroup, SWT.NONE);
00277                         systFreqUnit.setLayoutData(gridSystFreqUnit);
00278                         systFreqUnit.setText("MHz");
00279                         systFreqUnit.pack();
00280 
00281                         systFreq.setToolTipText(M2MToolTips.SIMPROPERTIES_SYSFREQ);
00282                         systemFreqEntry.setToolTipText(M2MToolTips.SIMPROPERTIES_SYSFREQ);
00283                         
00284 
00285                         //stimuli read frequency label placement
00286                         GridData gridReadStimFreqSample = new GridData();
00287                         gridReadStimFreqSample.verticalSpan = 8;
00288                         gridReadStimFreqSample.verticalAlignment = SWT.BOTTOM;
00289                         
00290                         //stimuli read frequency label
00291                         Label readFreq = new Label(freqGroup, SWT.NONE);
00292                         readFreq.setLayoutData(gridReadStimFreqSample);
00293                         readFreq.setText("Input frequency :");
00294                         readFreq.pack();
00295 
00296                         //stimuli read frequency text entry placement
00297                         GridData gridReadStimFreqEntry = new GridData();
00298                         gridReadStimFreqEntry.widthHint = 100;
00299                         gridReadStimFreqEntry.verticalSpan = 8;
00300                         gridReadStimFreqEntry.verticalAlignment = SWT.BOTTOM;
00301                         
00302                         //stimuli read frequency text entry
00303                         inputFreqEntry = new Text(freqGroup, SWT.RIGHT);
00304                         inputFreqEntry.setLayoutData(gridReadStimFreqEntry);
00305                         inputFreqEntry.pack();
00306 
00307                         //stimuli read frequency unit label placement
00308                         GridData gridReadStimFreqUnit = new GridData();
00309                         gridReadStimFreqUnit.verticalSpan = 8;
00310                         gridReadStimFreqUnit.verticalAlignment = SWT.BOTTOM;
00311                         
00312                         //stimuli read frequency unit label
00313                         Label readFreqUnit = new Label(freqGroup, SWT.NONE);
00314                         readFreqUnit.setLayoutData(gridReadStimFreqUnit);
00315                         readFreqUnit.setText("MHz");
00316                         readFreqUnit.pack();
00317                         
00318                         readFreq.setToolTipText(M2MToolTips.SIMPROPERTIES_INPUTFREQ);
00319                         inputFreqEntry.setToolTipText(M2MToolTips.SIMPROPERTIES_INPUTFREQ);
00320                         
00321 
00322                         
00323 
00324                         
00325                         //reference sample frequency label placement
00326                         GridData gridRefSample = new GridData();
00327                         gridRefSample.verticalSpan = 8;
00328                         gridRefSample.verticalAlignment = SWT.BOTTOM;
00329                         
00330                         //reference sample frequency label
00331                         Label refSampleFreq = new Label(freqGroup, SWT.NONE);
00332                         refSampleFreq.setText("Output frequency :");
00333                         refSampleFreq.setLayoutData(gridRefSample);
00334                         refSampleFreq.pack();
00335                         
00336                         //reference sample frequency text entry placement
00337                         GridData gridRefSampleEntry = new GridData();
00338                         gridRefSampleEntry.widthHint = 100;
00339                         gridRefSampleEntry.verticalSpan = 8;
00340                         gridRefSampleEntry.verticalAlignment = SWT.BOTTOM;
00341                         
00342                         //reference sample frequency text entry
00343                         outputFreqEntry = new Text(freqGroup, SWT.RIGHT);
00344                         outputFreqEntry.setLayoutData(gridRefSampleEntry);
00345                         outputFreqEntry.pack();
00346 
00347 
00348                         //reference sample frequency unit label placement
00349                         GridData gridRefSampleUnit = new GridData();
00350                         gridRefSampleUnit.verticalSpan = 8;
00351                         gridRefSampleUnit.verticalAlignment = SWT.BOTTOM;
00352                         
00353                         //reference sample frequency unit label
00354                         Label refSampleUnit = new Label(freqGroup, SWT.NONE);
00355                         refSampleUnit.setText("MHz");
00356                         refSampleUnit.setLayoutData(gridRefSampleUnit);
00357                         refSampleUnit.pack();
00358                         
00359                         refSampleFreq.setToolTipText(M2MToolTips.SIMPROPERTIES_OUTPUTFREQ);
00360                         outputFreqEntry.setToolTipText(M2MToolTips.SIMPROPERTIES_OUTPUTFREQ);
00361                         
00362                         
00363                         
00364                         
00365                         
00366 
00367                         
00368                         //inactivity timeout label placement
00369                         GridData gridInactivityTimeout = new GridData();
00370                         gridInactivityTimeout.verticalSpan = 8;
00371                         gridInactivityTimeout.verticalAlignment = SWT.BOTTOM;
00372                         
00373                         //inactivity timeout label
00374                         Label inactivityTimeoutFreq = new Label(freqGroup, SWT.NONE);
00375                         inactivityTimeoutFreq.setText("Inactivity timeout :");
00376                         inactivityTimeoutFreq.setLayoutData(gridInactivityTimeout);
00377                         inactivityTimeoutFreq.pack();
00378                         
00379                         //inactivity timeout text entry placement
00380                         GridData gridInactivityTimeoutEntry = new GridData();
00381                         gridInactivityTimeoutEntry.widthHint = 100;
00382                         gridInactivityTimeoutEntry.verticalSpan = 8;
00383                         gridInactivityTimeoutEntry.verticalAlignment = SWT.BOTTOM;
00384                         
00385                         //inactivity timeout text entry
00386                         inactivityTimeoutEntry = new Text(freqGroup, SWT.RIGHT);
00387                         inactivityTimeoutEntry.setLayoutData(gridInactivityTimeoutEntry);
00388                         inactivityTimeoutEntry.pack();
00389                         
00390                         //inactivity timeout unit label placement
00391                         GridData gridInactivityTimeoutUnit = new GridData();
00392                         gridInactivityTimeoutUnit.verticalSpan = 8;
00393                         gridInactivityTimeoutUnit.verticalAlignment = SWT.BOTTOM;
00394                         
00395                         //inactivity timeout unit label
00396                         Label inactivityTimeoutUnit = new Label(freqGroup, SWT.NONE);
00397                         inactivityTimeoutUnit.setText("Clock cycles");
00398                         inactivityTimeoutUnit.setLayoutData(gridInactivityTimeoutUnit);
00399                         inactivityTimeoutUnit.pack();
00400 
00401                         inactivityTimeoutFreq.setToolTipText(M2MToolTips.SIMPROPERTIES_INACTIVITY);
00402                         inactivityTimeoutEntry.setToolTipText(M2MToolTips.SIMPROPERTIES_INACTIVITY);
00403 
00404                         this.refreshSimulationPage();
00405                         
00406                         return parent;
00407                 }
00408 
00409 
00410                 private boolean validate() {
00411                         try {
00412                                 if (calcPres.getText() != null) {
00413                                         simProp.setSimulationCalcPrecision(Integer.parseInt(calcPres.getText()));
00414                                 }
00415                                 if (nbSamplesEntry.getText() != null) {
00416                                         simProp.setNumberOfSamples(Integer.parseInt(nbSamplesEntry.getText()));
00417                                 }
00418                                 if (inputFreqEntry.getText() != null) {
00419                                         simProp.setSystemFrequency(Float.parseFloat(systemFreqEntry.getText()));
00420                                 }
00421                                 if (inputFreqEntry.getText() != null) {
00422                                         simProp.setInputFrequency(Float.parseFloat(inputFreqEntry.getText()));
00423                                 }
00424                                 if (outputFreqEntry.getText() != null) {
00425                                         simProp.setOutputFrequency(Float.parseFloat(outputFreqEntry.getText()));
00426                                 }
00427                                 if (outputFreqEntry.getText() != null) {
00428                                         simProp.setInactivityTimeout(Integer.parseInt(inactivityTimeoutEntry.getText()));
00429                                 }
00430                                 
00431                                 return true;
00432                         }
00433                         catch (NumberFormatException e){
00434 
00435                                 MessageBox mess=new MessageBox(this.getShell(), SWT.ICON_ERROR | SWT.OK);
00436                                 mess.setMessage("Error in the one of the input field");
00437                                 mess.setText("Error");
00438                                 mess.open();
00439                                 return false;
00440                         }
00441                 }
00442 
00443                 protected void okPressed() {
00444                         saveSimulationProperties();
00445                         pressedOnOk=true;
00446                         this.close();
00447                 }
00448                 
00449                 public boolean pressedOk() {
00450                         return pressedOnOk;
00451                 }
00452                 
00456                 private void saveSimulationProperties() {
00457                         if (!validate())
00458                                 return;
00459                         
00460                         if (calcPres.getText() != null) {
00461                                 simProp.setSimulationCalcPrecision(Integer.parseInt(calcPres.getText()));
00462                         }
00463                         if (nbSamplesEntry.getText() != null) {
00464                                 simProp.setNumberOfSamples(Integer.parseInt(nbSamplesEntry.getText()));
00465                         }
00466                         if (inputFreqEntry.getText() != null) {
00467                                 simProp.setSystemFrequency(Float.parseFloat(systemFreqEntry.getText()));
00468                         }
00469                         if (inputFreqEntry.getText() != null) {
00470                                 simProp.setInputFrequency(Float.parseFloat(inputFreqEntry.getText()));
00471                         }
00472                         if (outputFreqEntry.getText() != null) {
00473                                 simProp.setOutputFrequency(Float.parseFloat(outputFreqEntry.getText()));
00474                         }
00475                         if (inactivityTimeoutEntry.getText() != null) {
00476                                 simProp.setInactivityTimeout(Integer.parseInt(inactivityTimeoutEntry.getText()));
00477                         }
00478                 }
00479 
00485                 public void setSimulationProperties(SimulationProperties simProp) {
00486                         this.simProp = simProp;
00487                 }
00488 
00492                 public void refreshSimulationPage() {
00493                         if (simProp instanceof SimulationProperties) {
00494                                 calcPres.setText(String.valueOf(simProp.getSimulationCalcPrecision()));
00495                                 nbSamplesEntry.setText(String.valueOf(simProp.getNumberOfSamples()));
00496                                 systemFreqEntry.setText(String.valueOf(simProp.getSystemFrequency()));
00497                                 inputFreqEntry.setText(String.valueOf(simProp.getInputFrequency()));
00498                                 outputFreqEntry.setText(String.valueOf(simProp.getOutputFrequency()));
00499                                 inactivityTimeoutEntry.setText(String.valueOf(simProp.getInactivityTimeout()));
00500                         }
00501                 }
00502         }
00503 }
 All Classes Namespaces Files Functions Variables Enumerations