Changeset 313:596757734ce3


Ignore:
Timestamp:
Jul 5, 2012, 10:07:30 AM (12 years ago)
Author:
Evgeny Stambulchik <Evgeny.Stambulchik@…>
Branch:
default
Phase:
public
Message:

A simplified import/export functionality implemented.

Location:
source
Files:
2 added
1 edited

Legend:

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

    r295 r313  
    24672467        createSaveLoadDialog : function()
    24682468        {
    2469             var w, rc1, e, btn;
     2469            var w, layout, rc1, e, btn;
    24702470            // "Save as..." dialog
    24712471            w = new pf.ui.DialogWindow();
     
    24822482            var btn_rename = new qx.ui.toolbar.Button("Rename",
    24832483                "pf/image/rename.png");
     2484            var btn_export = new qx.ui.toolbar.Button("Export",
     2485                "pf/image/export.png");
     2486            var btn_import = new qx.ui.toolbar.Button("Import",
     2487                "pf/image/import.png");
    24842488            btn_delete.setEnabled(false);
    24852489            btn_rename.setEnabled(false);
     2490            btn_export.setEnabled(false);
    24862491            tbpart.add(btn_delete);
    24872492            tbpart.add(btn_rename);
     2493            tbpart.add(new qx.ui.toolbar.Separator());
     2494            tbpart.add(btn_export);
     2495            tbpart.add(btn_import);
    24882496            tb.add(tbpart);
    24892497            w.add(tb);
     
    25172525            var sm = lv.getSelectionModel();
    25182526            sm.setSelectionMode(qx.ui.table.selection.Model.SINGLE_SELECTION);
     2527           
     2528            // Export/import window
     2529            var eiw = new pf.ui.DialogWindow();
     2530            eiw.set({
     2531                width:  350,
     2532                height: 400
     2533            });
     2534            eiw.setResizable(true);
     2535            eiw.setLayout(new qx.ui.layout.VBox(0));
     2536            eiw.setContentPadding(0);
     2537           
     2538            var note = new qx.ui.basic.Label("Label", {height: 20});
     2539            eiw.add(note);
     2540               
     2541            var text_area = new qx.ui.form.TextArea();
     2542            text_area.setWrap(true);
     2543            eiw.add(text_area, {flex: 1});
     2544
     2545
     2546            layout = new qx.ui.layout.HBox(10, "right");
     2547            rc1 = new qx.ui.container.Composite(layout);
     2548            rc1.setMargin(10, 10, 10, 10);
     2549            eiw.add(rc1);
     2550
     2551            btn = new qx.ui.form.Button("Cancel", "pf/image/cancel.png");
     2552            btn.addListener("execute", function(ev) {
     2553                    eiw.close();
     2554                }, this);
     2555            rc1.add(btn);
     2556
     2557            btn = new qx.ui.form.Button("OK", "pf/image/ok.png");
     2558            btn.addListener("execute", function(ev) {
     2559                    var type = eiw.getUserData("type");
     2560                    if (type == "import") {
     2561                        var configstr = text_area.getValue();
     2562                       
     2563                        var config;
     2564                        try {
     2565                            config = qx.lang.Json.parse(configstr);
     2566                        } catch (err) {
     2567                            this.error(err);
     2568                        }
     2569
     2570                        if (config) {
     2571                            var name = config.name;
     2572                           
     2573                            var d = new Date();
     2574                            var time = d.getTime();
     2575           
     2576                            configPtr = new Object;
     2577                            configPtr.name = name;
     2578                            configPtr.hash = time;
     2579                            configPtr.time = time;
     2580                           
     2581                            this.prefs.configPtrs.push(configPtr);
     2582                           
     2583                            var cookie_name = "pf_config_" + configPtr.hash;
     2584                            qx.bom.Cookie.set(cookie_name, configstr, 3650);
     2585                           
     2586                            this.savePreferences();
     2587                            this.updateSaveLoadList();
     2588                           
     2589                            eiw.close();
     2590                        } else {
     2591                            this.msgWindow.error("Cannot parse the configuration!");
     2592                        }
     2593                    } else {
     2594                        eiw.close();
     2595                    }
     2596                }, this);
     2597            rc1.add(btn);
     2598           
     2599            this.doc.add(eiw);
    25192600
    25202601            btn_delete.addListener("execute", function(ev) {
     
    25432624                        var name = rowData[0];
    25442625                       
    2545                        
    25462626                        this.promptDialog.prompt("Rename \"" + name + "\" to",
    25472627                            name, function(newname) {
     
    25592639                }, this);
    25602640
     2641            btn_export.addListener("execute", function(ev) {
     2642                    if (!sm.isSelectionEmpty()) {
     2643                        var index = sm.getLeadSelectionIndex();
     2644                        var rowData = tm.getRowData(index);
     2645                        var name = rowData[0];
     2646                       
     2647                        var configPtr = this.getConfig(name);
     2648                        if (!configPtr) {
     2649                            return false;
     2650                        }
     2651
     2652                        var cookie_name = "pf_config_" + configPtr.hash;
     2653
     2654                        var configstr = qx.bom.Cookie.get(cookie_name);
     2655                        if (!configstr) {
     2656                            return false;
     2657                        }
     2658
     2659                        var config = qx.lang.Json.parse(configstr);
     2660                        config.name = name;
     2661
     2662                        text_area.setValue(
     2663                            qx.lang.Json.stringify(config, undefined, 4));
     2664                       
     2665                        eiw.setCaption("Export configuration")
     2666                        eiw.setIcon("pf/image/export.png");
     2667                        eiw.setUserData("type", "export");
     2668                       
     2669                        text_area.setReadOnly(true);
     2670                       
     2671                        var nstr =
     2672                            "Copy the contents below to a text editor and save";
     2673                        note.setValue(nstr);
     2674                       
     2675                        eiw.open();
     2676                    }
     2677                }, this);
     2678
     2679            btn_import.addListener("execute", function(ev) {
     2680                    eiw.setCaption("Import configuration")
     2681                    eiw.setIcon("pf/image/import.png");
     2682                    eiw.setUserData("type", "import");
     2683
     2684                    text_area.setReadOnly(false);
     2685                    text_area.setValue("");
     2686
     2687                    var nstr =
     2688                        "Copy a previously saved config to the space below";
     2689                    note.setValue(nstr);
     2690
     2691                    eiw.open();
     2692                }, this);
     2693
    25612694            e = new qx.ui.form.TextField();
    25622695            e.setMarginTop(1);
     
    25692702                        btn_delete.setEnabled(false);
    25702703                        btn_rename.setEnabled(false);
     2704                        btn_export.setEnabled(false);
    25712705                    } else {
    25722706                        var index = sm.getLeadSelectionIndex();
     
    25752709                        btn_rename.setEnabled(true);
    25762710                        btn_delete.setEnabled(true);
     2711                        btn_export.setEnabled(true);
    25772712                    }
    25782713                });
    25792714           
    2580             var layout = new qx.ui.layout.HBox(10, "right");
     2715            layout = new qx.ui.layout.HBox(10, "right");
    25812716            rc1 = new qx.ui.container.Composite(layout);
    25822717            rc1.setMargin(10, 10, 10, 10);
     
    28402975            this.bl_top = new qx.ui.container.Composite(layout);
    28412976
    2842             this.doc.add(this.bl_top, {width :'100%', height: "100%"});
     2977            this.doc.add(this.bl_top, {width :"100%", height: "100%"});
    28432978
    28442979            // The menubar
Note: See TracChangeset for help on using the changeset viewer.