Statistics
| Revision:

gvsig-projects-pool / org.gvsig.vcsgis / trunk / org.gvsig.vcsgis / org.gvsig.vcsgis.swing / org.gvsig.vcsgis.swing.impl / src / main / java / org / gvsig / vcsgis / swing / impl / registerWorkspace / VCSGisJRegisterWorkspaceImpl.java @ 3458

History | View | Annotate | Download (6.57 KB)

1
/*
2
 * To change this license header, choose License Headers in Project Properties.
3
 * To change this template file, choose Tools | Templates
4
 * and open the template in the editor.
5
 */
6
package org.gvsig.vcsgis.swing.impl.registerWorkspace;
7

    
8
import java.awt.Cursor;
9
import java.awt.Dimension;
10
import java.awt.event.ActionEvent;
11
import java.util.Map;
12
import javax.swing.DefaultListCellRenderer;
13
import javax.swing.DefaultListModel;
14
import javax.swing.ImageIcon;
15
import javax.swing.JComponent;
16
import javax.swing.JOptionPane;
17
import javax.swing.ListSelectionModel;
18
import javax.swing.event.ListSelectionEvent;
19
import org.gvsig.fmap.dal.DALLocator;
20
import org.gvsig.fmap.dal.DataServerExplorer;
21
import org.gvsig.fmap.dal.store.jdbc.JDBCServerExplorerParameters;
22
import org.gvsig.fmap.dal.store.jdbc2.JDBCServerExplorer;
23
import org.gvsig.fmap.dal.swing.DALSwingLocator;
24
import org.gvsig.fmap.dal.swing.jdbc.JDBCConnectionDialog;
25
import org.gvsig.tools.ToolsLocator;
26
import org.gvsig.tools.i18n.I18nManager;
27
import org.gvsig.tools.swing.api.Component;
28
import org.gvsig.tools.swing.api.ToolsSwingLocator;
29
import org.gvsig.tools.swing.api.ToolsSwingManager;
30
import org.gvsig.tools.swing.api.windowmanager.Dialog;
31
import org.gvsig.vcsgis.lib.VCSGisLocator;
32
import org.gvsig.vcsgis.lib.workspace.VCSGisWorkspace;
33
import org.gvsig.vcsgis.lib.workspace.VCSGisWorkspaceDescriptor;
34
import org.gvsig.vcsgis.swing.VCSGisJRegisterWorkspace;
35
import org.gvsig.vcsgis.swing.impl.VCSGisSwingManagerImpl;
36
import static org.gvsig.vcsgis.swing.impl.VCSGisSwingManagerImpl.ICON_GROUP_NAME;
37
import static org.gvsig.vcsgis.swing.impl.VCSGisSwingManagerImpl.ICON_PROVIDER_NAME;
38
import static org.gvsig.vcsgis.swing.impl.VCSGisSwingManagerImpl.registerIcons;
39
import org.slf4j.LoggerFactory;
40

    
41
/**
42
 *
43
 * @author fdiaz
44
 */
45
public class VCSGisJRegisterWorkspaceImpl extends VCSGisJRegisterWorkspaceView implements Component, VCSGisJRegisterWorkspace {
46

    
47
    private static final org.slf4j.Logger LOGGER = LoggerFactory.getLogger(VCSGisJRegisterWorkspaceImpl.class);
48

    
49
    private Dialog dialog;
50

    
51
    public VCSGisJRegisterWorkspaceImpl() {
52
        translate();
53
        initComponents();
54
    }
55

    
56
    private void initComponents() {
57
        this.btnAdd.setCursor(Cursor.getPredefinedCursor(Cursor.HAND_CURSOR));
58
        this.btnRemove.setCursor(Cursor.getPredefinedCursor(Cursor.HAND_CURSOR));
59
        
60
        fillWorkspaces();
61

    
62
        this.lstWorkspaces.addListSelectionListener((ListSelectionEvent e) -> {
63
            doUpdateEnableComponents();
64
        });
65

    
66
        this.btnAdd.addActionListener((ActionEvent e) -> {
67
            registerWorkspace();
68
            fillWorkspaces();
69
        });
70

    
71
        this.btnRemove.addActionListener((ActionEvent e) -> {
72
            deregisterWorkspace();
73
            fillWorkspaces();
74
        });
75

    
76
        this.setPreferredSize(
77
                new Dimension(520, 320)
78
        );
79

    
80
    }
81

    
82
    @Override
83
    public void registerWorkspace() {
84
        
85
        I18nManager i18n = ToolsLocator.getI18nManager();
86
        try {
87
            JDBCConnectionDialog connectionDialog = DALSwingLocator.getDataSwingManager().createJDBCConectionDialog();
88
            connectionDialog.showDialog();
89
            if (connectionDialog.isCanceled()) {
90
                return;
91
            }
92
            
93
            JDBCServerExplorerParameters serverExplorerParameters = connectionDialog.getServerExplorerParameters();
94
            DataServerExplorer serverExplorer = DALLocator.getDataManager().openServerExplorer(serverExplorerParameters.getProviderName(), serverExplorerParameters);
95
            VCSGisWorkspace ws = VCSGisLocator.getVCSGisManager().openWorkspace((JDBCServerExplorer) serverExplorer);
96
            if(ws == null){
97
                ToolsSwingLocator.getThreadSafeDialogsManager().messageDialog(
98
                        i18n.getTranslation("_Selected_connection_is_not_a_valid_workspace"), 
99
                        i18n.getTranslation("_Register_workspace"), 
100
                        JOptionPane.WARNING_MESSAGE);
101
                return;
102
            }
103
            VCSGisLocator.getVCSGisManager().registerWorkspace(ws);
104
            
105
        } catch (Exception ex) {
106
            LOGGER.warn(i18n.getTranslation("_Cant_register_workspace"),ex);
107
            
108
            ToolsSwingLocator.getThreadSafeDialogsManager().messageDialog(
109
                    i18n.getTranslation("_Cant_register_workspace"), 
110
                    i18n.getTranslation("_Register_workspace"), 
111
                    JOptionPane.WARNING_MESSAGE);
112
        }
113
    }
114

    
115
    @Override
116
    public void deregisterWorkspace() {
117
        VCSGisWorkspaceDescriptor descriptor = (VCSGisWorkspaceDescriptor) lstWorkspaces.getSelectedValue();
118
        VCSGisLocator.getVCSGisManager().deregisterWorkspace(descriptor.getCode());
119
    }
120

    
121
    @Override
122
    public void setDialog(Dialog dialog) {
123
        this.dialog = dialog;
124
        this.doUpdateEnableComponents();
125
    }
126

    
127
    private void doUpdateEnableComponents() {
128

    
129
        if (this.lstWorkspaces.getSelectedIndex() != -1) {
130
            btnRemove.setEnabled(true);
131
        } else {
132
            btnRemove.setEnabled(false);
133
        }
134
    }
135

    
136
    @Override
137
    public JComponent asJComponent() {
138
        return this;
139
    }
140

    
141
    private void translate() {
142
        ToolsSwingManager swingManager = ToolsSwingLocator.getToolsSwingManager();
143
        swingManager.translate(this.btnAdd);
144
        swingManager.translate(this.btnRemove);
145
        swingManager.translate(this.lstWorkspaces);
146
    }
147

    
148
    private void fillWorkspaces() {
149
        
150
        
151
        lstWorkspaces.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);
152

    
153
        lstWorkspaces.getSelectionModel().addListSelectionListener((ListSelectionEvent e) -> {
154
            doUpdateEnableComponents();
155
        });
156

    
157
        DefaultListModel<VCSGisWorkspaceDescriptor> model = new DefaultListModel<>();
158
        Map<String, VCSGisWorkspaceDescriptor> workspaces = VCSGisLocator.getVCSGisManager().getWorkspaces();
159
        workspaces.entrySet().forEach(entry -> {
160
            model.addElement(entry.getValue());
161
        });
162
        lstWorkspaces.setModel(model);
163
        lstWorkspaces.setCellRenderer(new DefaultListCellRenderer());
164
    }
165

    
166
    @Override
167
    public ImageIcon loadImage(String imageName) {
168
        return VCSGisSwingManagerImpl.loadImage(imageName);
169
    }
170
    
171
    public static void selfRegister() {
172
        String[][] iconsInfo = new String[][]{
173
            new String[]{ICON_PROVIDER_NAME, ICON_GROUP_NAME, "vcsgis-workspace-plus"},
174
            new String[]{ICON_PROVIDER_NAME, ICON_GROUP_NAME, "vcsgis-workspace-minus"},
175
        };
176
        registerIcons(iconsInfo);
177
        
178
    }
179

    
180
    @Override
181
    public boolean isProcessing() {
182
        return false;
183
    }
184

    
185
}