Ignore:
Location:
source
Files:
16 added
4 edited

Legend:

Unmodified
Added
Removed
  • source/class/pf/Application.js

    r20 r29  
    1717
    1818var plasma_entities = new Array(
     19    {
     20        name      : "Plasma frequency",
     21        dimension : "frequency",
     22        nspecies  : 1,
     23        section   : "fundamental",
     24        formula   : "%s1.getPlasmaFrequency()"
     25    },
    1926    {
    2027        name      : "Gyrofrequency",
     
    2330        section   : "fundamental",
    2431        formula   : "%s1.getGyroFrequency(this.B)"
    25     },
    26     {
    27         name      : "Plasma frequency",
    28         dimension : "frequency",
    29         nspecies  : 1,
    30         section   : "fundamental",
    31         formula   : "%s1.getPlasmaFrequency()"
    3232    },
    3333
     
    379379    if (isFinite(v)) {
    380380        this.B = v;
     381        this.updateGUI();
     382    }
     383}
     384
     385function viewMenuCB(ev)
     386{
     387    var explorer_is_seen;
     388   
     389    if (this.entity_tree.isSeeable()) {
     390        explorer_is_seen = true;
     391    } else {
     392        explorer_is_seen = false;
     393    }
     394   
     395    this.showSectionsButton.setEnabled(explorer_is_seen);
     396    this.showSpeciesButton.setEnabled(explorer_is_seen);
     397}
     398
     399function editMenuCB(ev)
     400{
     401    var explorer_is_seen;
     402   
     403    if (this.entity_tree.isSeeable()) {
     404        explorer_is_seen = true;
     405    } else {
     406        explorer_is_seen = false;
     407    }
     408
     409    var tree = this.entity_tree;
     410    var leaf = tree.getSelectedElement();
     411
     412    if (leaf && explorer_is_seen) {
     413        if (this.isFavorite(leaf)) {
     414            this.editMenuButtonAddToFav.setEnabled(false);
     415            this.editMenuButtonRemFromFav.setEnabled(true);
     416        } else {
     417            this.editMenuButtonAddToFav.setEnabled(true);
     418            this.editMenuButtonRemFromFav.setEnabled(false);
     419        }
     420    } else {
     421        this.editMenuButtonAddToFav.setEnabled(false);
     422        this.editMenuButtonRemFromFav.setEnabled(false);
    381423    }
    382424}
     
    396438                if (this.isFavorite(leaf)) {
    397439                    this.treeMenuButtonAddToFav.setEnabled(false);
    398                     this.treeMenuButtonRemoveFromFav.setEnabled(true);
     440                    this.treeMenuButtonRemFromFav.setEnabled(true);
    399441                } else {
    400442                    this.treeMenuButtonAddToFav.setEnabled(true);
    401                     this.treeMenuButtonRemoveFromFav.setEnabled(false);
     443                    this.treeMenuButtonRemFromFav.setEnabled(false);
    402444                }
    403 
    404                 menu.setUserData("leaf", leaf);
    405445            } else {
    406446                this.treeMenuButtonAddToFav.setEnabled(false);
    407                 this.treeMenuButtonRemoveFromFav.setEnabled(false);
    408                 menu.setUserData("leaf", null);
     447                this.treeMenuButtonRemFromFav.setEnabled(false);
    409448            }
    410449           
     
    452491function addToFavCB(ev)
    453492{
    454     var leaf = this.treeMenu.getUserData("leaf");
     493    var tree = this.entity_tree;
     494    var leaf = tree.getSelectedElement();
     495
     496    if (!leaf) {
     497        return;
     498    }
     499
    455500    leaf.setTextColor("red");
    456501
    457502    // Add to the list of favorites
    458503    var fav = new Array;
    459     fav.entity = leaf.getUserData("entity");
     504    fav.entity  = leaf.getUserData("entity");
    460505    fav.species = leaf.getUserData("species");
    461506    this.favorites.push(fav);
     507   
     508    // Update the list of favorites
     509    this.updateFavoritesListView();
    462510}
    463511
    464512function removeFromFavCB(ev)
    465513{
    466     var leaf = this.treeMenu.getUserData("leaf");
     514    var tree = this.entity_tree;
     515    var leaf = tree.getSelectedElement();
     516
     517    if (!leaf) {
     518        return;
     519    }
    467520    leaf.setTextColor("black");
    468521
     
    470523    var species = leaf.getUserData("species");
    471524
     525    // Remove from the list of favorites
    472526    for (var k = 0; k < this.favorites.length; k++) {
    473527        var fav = this.favorites[k];
     
    478532    }
    479533
     534    // Update the list of favorites
     535    this.updateFavoritesListView();
    480536}
    481537
     
    485541    var entity = e.getUserData("entity");
    486542   
    487     // keep the old value of the units
    488     var combo = this.gui_entity_units;
    489    
    490     var old_dimension = combo.getUserData("dimension");
    491     if (old_dimension != entity.dimension) {
    492         var list = combo.getList();
    493        
    494         // clear everything
    495         list.removeAll();
    496 
    497         var selected;
    498 
    499         switch (entity.dimension) {
    500         case "frequency":
    501                        combo.addNumItem("Rad/s", 2*Math.PI);
    502             selected = combo.addNumItem("Hz",    1.0);
    503             break;
    504         case "length":
    505                        combo.addNumItem("A",  1.0e8);
    506                        combo.addNumItem("nm", 1.0e7);
    507             selected = combo.addNumItem("cm", 1.0);
    508                        combo.addNumItem("m",  1.0e-2);
    509             break;
    510         case "velocity":
    511             selected = combo.addNumItem("cm/s", 1.0);
    512                        combo.addNumItem("m/s",  1.0e-2);
    513                        combo.addNumItem("v/c",  1.0/3e10);
    514             break;
    515         case "energy":
    516             selected = combo.addNumItem("cm^-1", 1.0);
    517                        combo.addNumItem("eV",    1.0/8065.5);
    518                        combo.addNumItem("erg",   1.9864e-16);
    519             break;
    520         case "efield":
    521                        combo.addNumItem("V/m",      1.0e2);
    522             selected = combo.addNumItem("V/cm",     1.0);
    523                        combo.addNumItem("StatV/cm", 1.0/300);
    524                        combo.addNumItem("MV/cm",    1.0e-6);
    525             break;
    526         case "none":
    527             selected = combo.addNumItem("---", 1.0);
    528             break;
    529         default:
    530             selected = combo.addNumItem("???", 1.0);
    531             break;
    532         }
    533 
    534         if (selected) {
    535             combo.setSelected(selected);
    536         }
    537     }
    538 
    539     combo.setUserData("dimension", entity.dimension);
     543    this.gui_entity_units.update(entity.dimension);
    540544   
    541545    this.updateEntityValue();
     
    615619            this.gui_T_r.setNumValue(this.r.getT());
    616620            this.gui_Zcore.setValue(this.r.getQ() + 1);
     621           
     622            // Update the currently selecte entity
     623            this.updateEntityValue();
     624           
     625            // Update the list of favorites
     626            this.updateFavoritesListView();
    617627        },
    618628       
     
    769779        },
    770780       
    771         updateEntityValue : function(entity, species)
    772         {
    773             var tree = this.entity_tree;
    774             var e = tree.getSelectedElement();
    775            
    776             if (!e) {
    777                 return;
    778             }
    779            
    780             var entity = e.getUserData("entity");
    781             var species = e.getUserData("species");
    782            
     781        getEntityFullName : function (entity, species)
     782        {
    783783            var name = entity.name;
    784784            if (entity.nspecies == 1) {
     
    795795                }
    796796            }
    797             this.gui_entity_name.setValue(name);
    798 
    799             this.gui_entity_section.setValue(entity.section);
    800            
     797           
     798            return name;
     799        },
     800       
     801        evaluateEntityValue : function(entity, species)
     802        {
    801803            var formula;
    802804            if (entity.nspecies == 1) {
     
    806808                formula = entity.formula;
    807809            }
     810            var v = eval(formula);
     811           
     812            return v;
     813        },
     814       
     815        updateEntityValue : function()
     816        {
     817            var tree = this.entity_tree;
     818            var leaf = tree.getSelectedElement();
     819           
     820            if (!leaf) {
     821                return;
     822            }
     823           
     824            var entity  = leaf.getUserData("entity");
     825            var species = leaf.getUserData("species");
     826           
     827            var name = this.getEntityFullName(entity, species);
     828            this.gui_entity_name.setValue(name);
     829
     830            this.gui_entity_section.setValue(entity.section);
     831           
     832            var v = this.evaluateEntityValue(entity, species);
    808833
    809834            var scale = this.gui_entity_units.getSelected().getValue();
    810835
    811             var v = eval(formula);
    812836            this.gui_entity_value.setNumValue(v*scale);
    813837        },
     
    886910
    887911                        leaf = new qx.ui.tree.TreeFile(entity.name, icon);
    888                         leaf.addEventListener("click", clickEntityCB, this);
    889                         leaf.addEventListener("mouseup", treeMenuCB, this);
     912                        leaf.addEventListener("changeSelected", clickEntityCB, this);
     913                        leaf.addEventListener("contextmenu", treeMenuCB, this);
    890914                        leaf.setUserData("entity", entity);
    891915                        leaf.setUserData("species", s);
     
    901925                    leaf = new qx.ui.tree.TreeFile(entity.name,
    902926                        "pf/image/all_small.png");
    903                     leaf.addEventListener("click", clickEntityCB, this);
    904                     leaf.addEventListener("mouseup", treeMenuCB, this);
     927                    leaf.addEventListener("changeSelected", clickEntityCB, this);
     928                    leaf.addEventListener("contextmenu", treeMenuCB, this);
    905929                    leaf.setUserData("entity", entity);
    906930
     
    947971        },
    948972
    949         /**
    950          * TODOC
    951          *
    952          * @type member
    953          * @param e {Event} TODOC
    954          * @return {void}
    955          */
    956         main : function(e)
    957         {
    958             this.base(arguments);
    959            
    960             // Define alias for custom resource path
    961             qx.io.Alias.getInstance().add("pf",
    962                 qx.core.Setting.get("pf.resourceUri"));
    963 
    964             // Defaults
    965            
    966             this.r = new pf.base.Species("r", 1.0,           0, 0,    1.0, null);
    967             this.e = new pf.base.Species("e", (1.0/1836.2), -1, 1e16, 1.0, this.r);
    968             this.i = new pf.base.Species("i", 1.0,          +1, 1e16, 1.0, this.r);
    969            
    970             this.P_r = 0;
    971 
    972             this.B   = 0;
    973            
    974             this.n_u = 2;
    975             this.n_l = 1;
    976            
    977             if (this.updatePlasmaParameters() != true) {
    978                 alert("Error!");
    979             }
    980            
    981             // Favorites
    982             this.favorites = new Array;
    983 
    984             // Top-level container
    985             this.bl_top = new qx.ui.layout.VerticalBoxLayout("vertical");
    986             this.bl_top.setWidth("100%");
    987             this.bl_top.setHeight("auto");
    988 
    989             this.bl_top.addToDocument();
    990 
    991 
    992             // The toolbar
    993             var tb = new qx.ui.toolbar.ToolBar;
    994             this.bl_top.add(tb);
    995 
    996             // ... and the buttons themselves
    997 
    998             var sep = new qx.ui.toolbar.Separator;
    999             tb.add(sep);
    1000 
    1001             var btn = new qx.ui.toolbar.Button("About...");
    1002             tb.add(btn);
    1003             // btn.addEventListener("execute", this.aboutCB, this);
    1004 
    1005             var tf1 = new qx.ui.pageview.tabview.TabView;
    1006             this.bl_top.add(tf1);
    1007 
    1008             this.tabbar  = tf1.getBar();
    1009             this.tabpane = tf1.getPane();
    1010             this.tabpane.setPadding(0, 0, 0, 0);
    1011 
     973
     974        updateFavoritesListView : function()
     975        {
     976            var lv = this.favoritesListView;
     977            var rowData = lv.getData();
     978            rowData.length = 0;
     979           
     980            var dimension = this.gui_compare_dim.getSelectedValue();
     981           
     982            var scale = this.gui_compare_units.getSelectedValue();
     983           
     984            for (var i = 0; i < this.favorites.length; i++) {
     985                var fav = this.favorites[i];
     986                var entity = fav.entity;
     987               
     988                if (entity.dimension != dimension) {
     989                    continue;
     990                }
     991               
     992                var species = fav.species;
     993
     994                var icon;
     995                if (species) {
     996                    icon = "pf/image/" + species.id + "_small.png";
     997                } else {
     998                    icon = "pf/image/all_small.png";
     999                }
     1000                var name = this.getEntityFullName(entity, species);
     1001                var value = scale*this.evaluateEntityValue(entity, species);
     1002
     1003                rowData.push({ s_icon   : {icon       : icon,
     1004                                           iconWidth  : 16,
     1005                                           iconHeight : 16             },
     1006                               name     : {text       : name           },
     1007                               section  : {text       : entity.section },
     1008                               value    : {text       : NumPrint(value)}
     1009                             });
     1010            }
     1011           
     1012            lv.updateSort();
     1013            lv.update();
     1014        },
     1015
     1016
     1017        renderTabPage : function(label, icon, checked)
     1018        {
    10121019            var tab_id, page_id;
    1013             var fr, gl;
    1014             var l, e;
    1015            
    1016             var tab_id = new qx.ui.pageview.tabview.Button("Parameters",
    1017                 "pf/image/tab-parameters.png");
     1020           
     1021            tab_id = new qx.ui.pageview.tabview.Button(label, icon);
    10181022            this.tabbar.add(tab_id);
    10191023            page_id = new qx.ui.pageview.tabview.Page(tab_id);
     
    10231027            this.tabpane.add(page_id);
    10241028
     1029            if (checked) {
     1030                tab_id.setChecked(true);
     1031            }
     1032           
     1033            return page_id;
     1034        },
     1035
     1036        renderParametersTab : function()
     1037        {
     1038            var page_id = this.renderTabPage("Parameters",
     1039                "pf/image/tab-parameters.png", true);
     1040
     1041            var fr, gl;
     1042           
    10251043            fr = new qx.ui.groupbox.GroupBox("Electrons",
    10261044                "pf/image/e_small.png");
     
    10411059
    10421060            fr.add(gl);
     1061
     1062            var l, e;
    10431063
    10441064            // N_e
     
    11761196
    11771197
    1178             fr = new qx.ui.groupbox.GroupBox("Fields");
     1198            fr = new qx.ui.groupbox.GroupBox("Fields",
     1199                "pf/image/field_small.png");
    11791200            fr.setDimension("auto", "auto");
    11801201            fr.setBackgroundColor("#ffffdd");
     
    12431264            gl.add(e, 1, 2);
    12441265            e.addEventListener("change", changeN_l, this);
    1245 
    1246             tab_id.setChecked(true);
    1247 
    1248 
    1249             tab_id = new qx.ui.pageview.tabview.Button("Explorer",
     1266        },
     1267
     1268        renderExplorerTab : function()
     1269        {
     1270            var page_id = this.renderTabPage("Explorer",
    12501271                "pf/image/tab-explorer.png");
    1251             this.tabbar.add(tab_id);
    1252             page_id = new qx.ui.pageview.tabview.Page(tab_id);
    1253             page_id.setHeight("auto");
    1254             page_id.setPadding(10, 10, 10, 10);
    1255             page_id.setBackgroundColor("white");
    1256             this.tabpane.add(page_id);
    1257            
    1258             var pageLayout = new qx.ui.layout.CanvasLayout;
    1259             pageLayout.set(
    1260             {
    1261                 width:  "100%",
    1262                 height: 600,
    1263                 backgroundColor: "grey"
    1264             });
    1265             page_id.add(pageLayout);
    12661272           
    12671273            var sp = new qx.ui.splitpane.HorizontalSplitPane(300, "1*");
     
    12761282                showKnob        : true
    12771283            });
    1278             pageLayout.add(sp);
     1284            page_id.add(sp);
    12791285                       
    12801286            var left_pane  = sp.getLeftArea();
     
    12871293                border          : "inset-thin",
    12881294                overflow        : "scroll",
    1289                 height          : "100%",
     1295                height          : 500,
    12901296                width           : "100%",
    12911297                paddingLeft     : 4,
    12921298                paddingTop      : 4
    12931299            });
    1294             tree.addEventListener("mouseup", treeMenuCB, this);
     1300            // tree.addEventListener("contextmenu", treeMenuCB, this);
    12951301            left_pane.add(tree);
    12961302           
     
    13371343            var button;
    13381344           
     1345            button = new qx.ui.menu.Button("Add to Favorites",
     1346                "pf/image/favorite-add.png");
     1347            button.addEventListener("execute", addToFavCB, this);
     1348            this.treeMenu.add(button);
     1349            this.treeMenuButtonAddToFav = button;
     1350            button = new qx.ui.menu.Button("Remove from Favorites",
     1351                "pf/image/favorite-delete.png");
     1352            button.addEventListener("execute", removeFromFavCB, this);
     1353            this.treeMenu.add(button);
     1354            this.treeMenuButtonRemFromFav = button;
     1355           
     1356            var doc = qx.ui.core.ClientDocument.getInstance();
     1357            doc.add(this.treeMenu);
     1358
     1359
     1360            var gl = new qx.ui.layout.GridLayout;
     1361            gl.set(
     1362            {
     1363                left:   4,
     1364                right:  4,
     1365                top:    4
     1366            });
     1367           
     1368            gl.setVerticalSpacing(4);
     1369            gl.setHorizontalSpacing(6);
     1370            gl.setColumnCount(3);
     1371            gl.setColumnWidth(0, "15%");
     1372            gl.setColumnWidth(1, "60%");
     1373            gl.setColumnWidth(2, "20%");
     1374            gl.setRowCount(3);
     1375            gl.setRowHeight(0, 30);
     1376            gl.setRowHeight(1, 30);
     1377            gl.setRowHeight(2, 30);
     1378
     1379            var l, e;
     1380
     1381            l = new qx.ui.basic.Label("Name:");
     1382            gl.add(l, 0, 0);
     1383            e = new qx.ui.form.TextField();
     1384            e.setReadOnly(true);
     1385            this.gui_entity_name = e;
     1386            gl.add(e, 1, 0);
     1387
     1388            l = new qx.ui.basic.Label("Value:");
     1389            gl.add(l, 0, 1);
     1390            e = new pf.ui.TextField("");
     1391            e.setReadOnly(true);
     1392            gl.add(e, 1, 1);
     1393            this.gui_entity_value = e;
     1394
     1395            e = new pf.UnitSelector();
     1396            e.addEventListener("changeSelected", changeUnitsCB, this);
     1397            gl.add(e, 2, 1);
     1398            this.gui_entity_units = e;
     1399
     1400            l = new qx.ui.basic.Label("Section:");
     1401            gl.add(l, 0, 2);
     1402            e = new qx.ui.form.TextField();
     1403            e.setReadOnly(true);
     1404            this.gui_entity_section = e;
     1405            gl.add(e, 1, 2);
     1406
     1407            right_pane.add(gl);
     1408        },
     1409       
     1410        renderCompareTab : function()
     1411        {
     1412            var page_id = this.renderTabPage("Compare",
     1413                "pf/image/tab-compare.png");
     1414           
     1415            var bl = new qx.ui.layout.VerticalBoxLayout("vertical");
     1416            bl.setWidth("100%");
     1417            bl.setHeight("100%");
     1418            bl.setSpacing(10);
     1419            page_id.add(bl);
     1420           
     1421            var rc = new qx.ui.layout.HorizontalBoxLayout;
     1422            rc.setWidth("100%");
     1423            rc.setHeight("auto");
     1424            rc.setSpacing(10);
     1425            bl.add(rc);
     1426
     1427            var l, e;
     1428            l = new qx.ui.basic.Label("Dimension:");
     1429            e = new pf.ui.ComboBox;
     1430            e.add(new qx.ui.form.ListItem("Frequency", null, "frequency"));
     1431            e.add(new qx.ui.form.ListItem("Length", null, "length"));
     1432            e.add(new qx.ui.form.ListItem("Velocity", null, "velocity"));
     1433            e.add(new qx.ui.form.ListItem("Energy", null, "energy"));
     1434            e.add(new qx.ui.form.ListItem("Electric field", null, "efield"));
     1435            e.add(new qx.ui.form.ListItem("None", null, "none"));
     1436            e.addEventListener("changeSelected", function(ev) {
     1437                    var dimension = this.gui_compare_dim.getSelectedValue();
     1438                    this.gui_compare_units.update(dimension);
     1439                    this.updateFavoritesListView();
     1440                }, this);
     1441            rc.add(l, e);
     1442            this.gui_compare_dim = e;
     1443
     1444            l = new qx.ui.basic.Label("Units:");
     1445            e = new pf.UnitSelector;
     1446            e.addEventListener("changeSelected", function(ev) {
     1447                    this.updateFavoritesListView();
     1448                }, this);
     1449            rc.add(l, e);
     1450            this.gui_compare_units = e;
     1451
     1452            var lc =
     1453            {
     1454                s_icon   : { label      : "",
     1455                             width      : 24,
     1456                             type       : "iconHtml",
     1457                             align      : "center",                   
     1458                             sortable   : false                         },
     1459                name     : { label      : "Name",
     1460                             width      : 300,
     1461                             type       : "text",
     1462                             align      : "left",
     1463                             sortable   : true,
     1464                             sortProp   : "text"                        },
     1465                section  : { label      : "Section",
     1466                             width      : 120,
     1467                             type       : "text",
     1468                             align      : "left",
     1469                             sortable   : true,
     1470                             sortProp   : "text"                        },
     1471                value    : { label      : "Value",
     1472                             width      : 120,
     1473                             type       : "text",
     1474                             align      : "right",
     1475                             sortable   : true,
     1476                             sortProp   : "text",
     1477                             sortMethod : qx.util.Compare.byFloatString }
     1478            };
     1479
     1480            var lv = new qx.ui.listview.ListView(new Array, lc);
     1481
     1482            lv.setWidth("100%");
     1483            lv.setHeight(400);
     1484            lv.setBackgroundColor("white");
     1485            lv.setBorder("dark-shadow");
     1486
     1487            bl.add(lv);
     1488           
     1489            this.favoritesListView = lv;
     1490        },
     1491       
     1492        aboutCB : function(ev)
     1493        {
     1494            this.aboutWindow.open();
     1495        },
     1496       
     1497        renderPlotTab : function()
     1498        {
     1499            var page_id = this.renderTabPage("Plot",
     1500                "pf/image/tab-plot.png");
     1501        },
     1502
     1503
     1504        buildMenu : function()
     1505        {
     1506            var menubar = this.menubar;
     1507            var doc = qx.ui.core.ClientDocument.getInstance();
     1508           
     1509            var submenu, btn;
     1510
     1511            var bg = "#efebec";
     1512           
     1513            submenu = new qx.ui.menu.Menu;
     1514            submenu.setBackgroundColor(bg);
     1515            doc.add(submenu);
     1516            btn = new qx.ui.menu.Button("Open...", "pf/image/open.png");
     1517            btn.addEventListener("execute", function (ev) {
     1518                alert("Not implemented yet")}, this);
     1519            submenu.add(btn);
     1520            btn = new qx.ui.menu.Button("Save...", "pf/image/save.png");
     1521            btn.addEventListener("execute", function (ev) {
     1522                alert("Not implemented yet")}, this);
     1523            submenu.add(btn);
     1524            submenu.add(new qx.ui.menu.Separator);
     1525            btn = new qx.ui.menu.Button("Exit", "pf/image/exit.png");
     1526            btn.addEventListener("execute", function (ev) {
     1527                window.close()}, this);
     1528            submenu.add(btn);
     1529               
     1530            btn = new qx.ui.menubar.Button("File", submenu);
     1531            btn.set({ paddingLeft : 7, paddingRight : 7 });
     1532            menubar.add(btn);
     1533
     1534
     1535            submenu = new qx.ui.menu.Menu;
     1536            submenu.setBackgroundColor(bg);
     1537            submenu.addEventListener("beforeAppear", editMenuCB, this);
     1538            doc.add(submenu);
     1539            btn = new qx.ui.menu.Button("Add to Favorites",
     1540                "pf/image/favorite-add.png");
     1541            btn.addEventListener("execute", addToFavCB, this);
     1542            this.editMenuButtonAddToFav = btn;
     1543            submenu.add(btn);
     1544            btn = new qx.ui.menu.Button("Remove from Favorites",
     1545                "pf/image/favorite-delete.png");
     1546            btn.addEventListener("execute", removeFromFavCB, this);
     1547            this.editMenuButtonRemFromFav = btn;
     1548            submenu.add(btn);
     1549            submenu.add(new qx.ui.menu.Separator);
     1550            btn = new qx.ui.menu.Button("Preferences",
     1551                "pf/image/preferences.png");
     1552            btn.addEventListener("execute", function (ev) {
     1553                alert("Not implemented yet")}, this);
     1554            submenu.add(btn);
     1555
     1556            btn = new qx.ui.menubar.Button("Edit", submenu);
     1557            btn.set({ paddingLeft : 7, paddingRight : 7 });
     1558            menubar.add(btn);
     1559
     1560
     1561            submenu = new qx.ui.menu.Menu;
     1562            submenu.setBackgroundColor(bg);
     1563            submenu.addEventListener("beforeAppear", viewMenuCB, this);
     1564
    13391565            var subMenu1 = new qx.ui.menu.Menu;
     1566            subMenu1.setBackgroundColor(bg);
    13401567            button = new qx.ui.menu.CheckBox("Fundamental",
    13411568                null, this.showFundamental);
     
    13461573            button.addEventListener("execute", showSpectroscopyCB, this);
    13471574            subMenu1.add(button);
    1348             this.treeMenu.add(new qx.ui.menu.Button("Show sections",
    1349                 null, null, subMenu1));
    1350            
    1351             this.treeMenu.add(new qx.ui.menu.Separator);
     1575            this.showSectionsButton = new qx.ui.menu.Button("Show Sections",
     1576                null, null, subMenu1);
     1577            submenu.add(this.showSectionsButton);
     1578           
     1579            submenu.add(new qx.ui.menu.Separator);
    13521580
    13531581            var subMenu2 = new qx.ui.menu.Menu;
     1582            subMenu2.setBackgroundColor(bg);
    13541583            button = new qx.ui.menu.CheckBox("Electrons",
    13551584                null, this.showElectrons)
     
    13641593            button.addEventListener("execute", showRadiatorsCB, this);
    13651594            subMenu2.add(button);
    1366             this.treeMenu.add(new qx.ui.menu.Button("Show species",
    1367                 null, null, subMenu2));
    1368            
    1369             this.treeMenu.add(new qx.ui.menu.Separator);
    1370 
    1371             button = new qx.ui.menu.Button("Add to favorites");
    1372             button.addEventListener("execute", addToFavCB, this);
    1373             this.treeMenu.add(button);
    1374             this.treeMenuButtonAddToFav = button;
    1375             button = new qx.ui.menu.Button("Remove from favorites");
    1376             button.addEventListener("execute", removeFromFavCB, this);
    1377             this.treeMenu.add(button);
    1378             this.treeMenuButtonRemoveFromFav = button;
    1379            
    1380             var doc = qx.ui.core.ClientDocument.getInstance();
    1381             doc.add(this.treeMenu, subMenu1, subMenu2);
    1382 
    1383 
    1384             gl = new qx.ui.layout.GridLayout;
    1385             gl.set(
    1386             {
    1387                 left:   4,
    1388                 right:  4,
    1389                 top:    4
    1390             });
    1391            
    1392             gl.setVerticalSpacing(4);
    1393             gl.setHorizontalSpacing(6);
    1394             gl.setColumnCount(3);
    1395             gl.setColumnWidth(0, "15%");
    1396             gl.setColumnWidth(1, "60%");
    1397             gl.setColumnWidth(2, "20%");
    1398             gl.setRowCount(3);
    1399             gl.setRowHeight(0, 30);
    1400             gl.setRowHeight(1, 30);
    1401             gl.setRowHeight(2, 30);
    1402 
    1403             l = new qx.ui.basic.Label("Name:");
    1404             gl.add(l, 0, 0);
    1405             e = new qx.ui.form.TextField();
    1406             e.setReadOnly(true);
    1407             this.gui_entity_name = e;
    1408             gl.add(e, 1, 0);
    1409 
    1410             l = new qx.ui.basic.Label("Value:");
    1411             gl.add(l, 0, 1);
    1412             e = new pf.ui.TextField("");
    1413             e.setReadOnly(true);
    1414             gl.add(e, 1, 1);
    1415             this.gui_entity_value = e;
    1416 
    1417             e = new pf.ui.ComboBox();
    1418             e.addEventListener("changeSelected", changeUnitsCB, this);
    1419             gl.add(e, 2, 1);
    1420             this.gui_entity_units = e;
    1421 
    1422             l = new qx.ui.basic.Label("Section:");
    1423             gl.add(l, 0, 2);
    1424             e = new qx.ui.form.TextField();
    1425             e.setReadOnly(true);
    1426             this.gui_entity_section = e;
    1427             gl.add(e, 1, 2);
    1428 
    1429             right_pane.add(gl);
     1595            this.showSpeciesButton = new qx.ui.menu.Button("Show Species",
     1596                null, null, subMenu2);
     1597            submenu.add(this.showSpeciesButton);
     1598           
     1599            doc.add(submenu, subMenu1, subMenu2);
     1600
     1601            btn = new qx.ui.menubar.Button("View", submenu);
     1602            btn.set({ paddingLeft : 7, paddingRight : 7 });
     1603            menubar.add(btn);
     1604
     1605
     1606            submenu = new qx.ui.menu.Menu;
     1607            submenu.setBackgroundColor(bg);
     1608            doc.add(submenu);
     1609            btn = new qx.ui.menu.Button("Help Contents",
     1610                "pf/image/help.png");
     1611            btn.addEventListener("execute", function (ev) {
     1612                alert("Not implemented yet")}, this);
     1613            submenu.add(btn);
     1614            btn = new qx.ui.menu.Button("NRL Plasma Formulary",
     1615                "pf/image/nrl.png");
     1616            btn.addEventListener("execute", function (ev) {
     1617                    var w = new qx.client.NativeWindow("http://wwwppd.nrl.navy.mil/nrlformulary/");
     1618                    w.setDimension(800, 600);
     1619                    w.open();
     1620                }, this);
     1621            submenu.add(btn);
     1622            submenu.add(new qx.ui.menu.Separator);
     1623            btn = new qx.ui.menu.Button("About Plasma Formulary",
     1624                "pf/image/about.png");
     1625            btn.addEventListener("execute", this.aboutCB, this);
     1626            submenu.add(btn);
     1627
     1628            btn = new qx.ui.menubar.Button("Help", submenu);
     1629            btn.set({ paddingLeft : 7, paddingRight : 7 });
     1630            menubar.add(btn);
     1631        },
     1632
     1633        /**
     1634         * TODOC
     1635         *
     1636         * @type member
     1637         * @param e {Event} TODOC
     1638         * @return {void}
     1639         */
     1640        main : function(e)
     1641        {
     1642            this.base(arguments);
     1643           
     1644            // Define alias for custom resource path
     1645            qx.io.Alias.getInstance().add("pf",
     1646                qx.core.Setting.get("pf.resourceUri"));
     1647
     1648            this.doc = qx.ui.core.ClientDocument.getInstance();
     1649           
     1650            // Defaults
     1651           
     1652            this.r = new pf.base.Species("r", 1.0,           0, 0,    1.0, null);
     1653            this.e = new pf.base.Species("e", (1.0/1836.2), -1, 1e16, 1.0, this.r);
     1654            this.i = new pf.base.Species("i", 1.0,          +1, 1e16, 1.0, this.r);
     1655           
     1656            this.P_r = 0;
     1657
     1658            this.B   = 0;
     1659           
     1660            this.n_u = 2;
     1661            this.n_l = 1;
     1662           
     1663            if (this.updatePlasmaParameters() != true) {
     1664                alert("Error!");
     1665            }
     1666           
     1667            // Favorites
     1668            this.favorites = new Array;
     1669
     1670            // Top-level container
     1671            this.bl_top = new qx.ui.layout.VerticalBoxLayout("vertical");
     1672            this.bl_top.setWidth("100%");
     1673            this.bl_top.setHeight("100%");
     1674
     1675            this.bl_top.addToDocument();
     1676
     1677            // The menubar
     1678            this.menubar = new qx.ui.menubar.MenuBar;
     1679            this.bl_top.add(this.menubar);
     1680           
     1681            // The menu items
     1682            this.buildMenu();
     1683           
     1684            var tf1 = new qx.ui.pageview.tabview.TabView;
     1685            tf1.set({ width : '100%', height : 'auto' });
     1686
     1687            this.bl_top.add(tf1);
     1688
     1689            this.tabbar  = tf1.getBar();
     1690            this.tabpane = tf1.getPane();
     1691            this.tabpane.setHeight('auto');
     1692            this.tabpane.setPadding(0, 0, 0, 0);
     1693
     1694            // The "Parameters" tab
     1695            this.renderParametersTab();
     1696           
     1697            // The "Explorer" tab
     1698            this.renderExplorerTab();
     1699           
     1700            // The "Compare" tab
     1701            this.renderCompareTab();
     1702           
     1703            // The "Plot" tab
     1704            this.renderPlotTab();
     1705
     1706            // "About..." dialog
     1707            var w = new qx.ui.window.Window("About Plasma Formulary",
     1708                "pf/image/about.png");
     1709            w.setSpace(200, "auto", 100, "auto");
     1710            w.setModal(true);
     1711            w.setShowMinimize(false);
     1712            w.setShowMaximize(false);
     1713           
     1714            str = 'Plasma Formulary Interactive.<br/>'         +
     1715                  '$Revision$.'                         +
     1716                  '<p>Written by Evgeny Stambulchik.</p>'      +
     1717                  '<p>Based on the Qooxdoo-' + qx.core.Version +
     1718                  ' toolkit.</p>';
     1719
     1720            var a = new qx.ui.basic.Atom(str);
     1721            a.set({ top: 4, left: 4 });
     1722            w.add(a);
     1723
     1724            this.doc.add(w);
     1725            this.aboutWindow = w;
     1726           
     1727
     1728
    14301729        },
    14311730   
  • source/class/pf/base/Species.js

    r5 r28  
    123123        getAlfvenVelocity: function(B)
    124124        {
    125             return 2.18e15*B/Math.sqrt(this._m*this._n);
     125            if (B == 0) {
     126                return 0;
     127            } else {
     128                return 2.18e15*B/Math.sqrt(this._m*this._n);
     129            }
    126130        },
    127131       
  • source/class/pf/ui/ComboBox.js

    r12 r23  
    1111           
    1212            return item;
     13        },
     14       
     15        getSelectedValue: function()
     16        {
     17            var item = this.getSelected();
     18            if (item) {
     19                return item.getValue();
     20            } else {
     21                return null;
     22            }
    1323        }
    1424    }
  • source/index.html

    r19 r30  
    55    <script type="text/javascript" src="script/pf.js"></script>
    66    <script type="text/javascript" src="sprintf.js"></script>
     7    <script type="text/javascript" src="wz_jsgraphics.js"></script>
    78    <script type="text/javascript">
    89        qx.log.Logger.ROOT_LOGGER.setMinLevel(qx.log.Logger.LEVEL_WARN);
Note: See TracChangeset for help on using the changeset viewer.