Statistics
| Revision:

svn-gvsig-desktop / trunk / org.gvsig.desktop / org.gvsig.desktop.plugin / org.gvsig.app / org.gvsig.app.mainplugin / src / main / java / org / gvsig / app / extension / copytable / CopyTableExtension.java @ 47202

History | View | Annotate | Download (4.86 KB)

1
package org.gvsig.app.extension.copytable;
2

    
3
import java.awt.GridBagConstraints;
4
import java.awt.event.ActionEvent;
5
import java.awt.event.ActionListener;
6
import java.util.Collections;
7
import javax.swing.JComponent;
8
import javax.swing.SwingUtilities;
9
import org.gvsig.andami.plugins.Extension;
10
import org.gvsig.app.ApplicationLocator;
11
import org.gvsig.fmap.dal.swing.DALSwingLocator;
12
import org.gvsig.fmap.dal.swing.jdbc.JDBCConnectionDialog;
13
import org.gvsig.tools.ToolsLocator;
14
import org.gvsig.tools.dispose.DisposeUtils;
15
import org.gvsig.tools.i18n.I18nManager;
16
import org.gvsig.tools.swing.api.ToolsSwingLocator;
17
import org.gvsig.tools.swing.api.windowmanager.Dialog;
18
import org.gvsig.tools.swing.api.windowmanager.WindowManager;
19
import org.gvsig.tools.swing.api.windowmanager.WindowManager_v2;
20
import org.gvsig.tools.task.SimpleTaskStatus;
21

    
22
/**
23
 *
24
 * @author jjdelcerro
25
 */
26
public class CopyTableExtension extends Extension {
27

    
28
    @Override
29
    public void initialize() {
30
    }
31

    
32
    @Override
33
    public void execute(String actionCommand) {
34
        switch(actionCommand.toLowerCase()) {
35
        case "tools-copytable":
36
            doCopyTable2();
37
            break;
38
        case "tools-dbconnections":
39
            doConnections();
40
            break;
41
        }
42
        
43
    }
44
    
45
    private void doConnections() {
46
        I18nManager i18n = ToolsLocator.getI18nManager();
47
        JDBCConnectionDialog dialog = DALSwingLocator.getSwingManager().createJDBCConectionDialog();
48
//        dialog.showDialog(
49
//                i18n.getTranslation("_Connections"),
50
//                WindowManager.MODE.WINDOW
51
//        );
52
        
53
        WindowManager_v2 winmgr = (WindowManager_v2) ToolsSwingLocator.getWindowManager();
54
        winmgr.showWindow(
55
                dialog.asJComponent(), 
56
                i18n.getTranslation("_Connections"),
57
                WindowManager.MODE.WINDOW,
58
                Collections.singletonMap("align", GridBagConstraints.CENTER)
59
        );        
60
    }
61

    
62
    @Override
63
    public boolean isEnabled() {
64
        return true;
65
    }
66

    
67
    @Override
68
    public boolean isVisible() {
69
        return true;
70
    }
71

    
72
    @SuppressWarnings("Convert2Lambda")
73
    private void doCopyTable2() {
74
        WindowManager_v2 windowManager = (WindowManager_v2) ToolsSwingLocator.getWindowManager();
75
        CopyTable2Panel panel = new CopyTable2Panel();
76
        I18nManager i18n = ToolsLocator.getI18nManager();
77
        Dialog dialog = windowManager.createDialog(
78
                panel,
79
                i18n.getTranslation("_Copy_table"), 
80
                "Copia datos de una tabla a otra",
81
                WindowManager_v2.BUTTONS_OK_CANCEL
82
        );
83
        dialog.setAutoclose(false);
84
        dialog.setButtonLabel(WindowManager_v2.BUTTON_OK, "Copiar datos");
85
        dialog.setButtonLabel(WindowManager_v2.BUTTON_CANCEL, "Cerrar");
86
        dialog.addActionListener(new ActionListener() {
87
            @Override
88
            public void actionPerformed(ActionEvent e) {
89
                switch( dialog.getAction()) {
90
                    case WindowManager_v2.BUTTON_OK:
91
                        dialog.setButtonEnabled(WindowManager_v2.BUTTON_OK, false);                        
92
                        CopyTable2Process process = CopyTable2Process.createProcess();
93
                        CopyTable2ProcessParameters params = process.createParameters();
94
                        panel.fetch(params);
95
                        panel.addHistory(params);
96
                        process
97
                            .setParameters(params)
98
                            .setStatus(panel.getStatus())
99
                            .setPostProcess(()->{
100
                                postProcess(dialog, process, panel);
101
                                DisposeUtils.dispose(params);
102
                            });
103
                        process.start();
104
                        break;
105

    
106
                    case WindowManager_v2.BUTTON_CANCEL:
107
                        ((JComponent)dialog).setVisible(false);
108
                        break;
109
                }
110
            }
111
        });
112
        dialog.show(WindowManager.MODE.WINDOW, 
113
                Collections.singletonMap("align", GridBagConstraints.CENTER)
114
        );    
115
    }
116
    
117
    public void postProcess(Dialog dialog, CopyTable2Process process, CopyTable2Panel panel){
118
        if(SwingUtilities.isEventDispatchThread()){
119
            SwingUtilities.invokeLater(()->{postProcess(dialog, process, panel);});
120
            return;
121
        }
122
        CopyTable2ProcessParameters params = process.getParameters();
123
        ApplicationLocator.getApplicationManager().refreshDocument(params.getTargetStore());
124
        dialog.setButtonEnabled(WindowManager_v2.BUTTON_OK, true);      
125
        SimpleTaskStatus status = process.getStatus();
126
        if(status.isCancelled()){
127
            panel.message("Copia cancelada.");
128
        } else if(!status.isAborted()){
129
            panel.message("Copia completada.");
130
        }
131

    
132
        
133
    }
134

    
135
}