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 @ 8713

History | View | Annotate | Download (9.2 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.event.ActionEvent;
10
import java.util.ArrayList;
11
import java.util.Collections;
12
import java.util.List;
13
import java.util.Map;
14
import javax.swing.DefaultListCellRenderer;
15
import javax.swing.DefaultListModel;
16
import javax.swing.ImageIcon;
17
import javax.swing.JComponent;
18
import javax.swing.JOptionPane;
19
import javax.swing.ListSelectionModel;
20
import javax.swing.event.ListSelectionEvent;
21
import org.gvsig.fmap.dal.DALLocator;
22
import org.gvsig.fmap.dal.DataServerExplorer;
23
import org.gvsig.fmap.dal.store.jdbc.JDBCServerExplorerParameters;
24
import org.gvsig.fmap.dal.store.jdbc2.JDBCServerExplorer;
25
import org.gvsig.fmap.dal.swing.DALSwingLocator;
26
import org.gvsig.fmap.dal.swing.jdbc.JDBCConnectionDialog;
27
import org.gvsig.tools.ToolsLocator;
28
import org.gvsig.tools.i18n.I18nManager;
29
import org.gvsig.tools.swing.api.Component;
30
import org.gvsig.tools.swing.api.ToolsSwingLocator;
31
import org.gvsig.tools.swing.api.ToolsSwingManager;
32
import org.gvsig.tools.swing.api.ToolsSwingUtils;
33
import org.gvsig.tools.swing.api.threadsafedialogs.ThreadSafeDialogsManager;
34
import org.gvsig.tools.swing.api.windowmanager.Dialog;
35
import org.gvsig.tools.util.CompareUtils;
36
import org.gvsig.vcsgis.lib.VCSGisLocator;
37
import org.gvsig.vcsgis.lib.workspace.VCSGisWorkspace;
38
import org.gvsig.vcsgis.lib.workspace.VCSGisWorkspaceDescriptor;
39
import org.gvsig.vcsgis.swing.VCSGisJRegisterWorkspace;
40
import org.gvsig.vcsgis.swing.impl.VCSGisSwingImplLibrary;
41
import org.gvsig.vcsgis.swing.impl.VCSGisSwingManagerImpl;
42
import static org.gvsig.vcsgis.swing.impl.VCSGisSwingManagerImpl.ICON_GROUP_NAME;
43
import static org.gvsig.vcsgis.swing.impl.VCSGisSwingManagerImpl.ICON_PROVIDER_NAME;
44
import static org.gvsig.vcsgis.swing.impl.VCSGisSwingManagerImpl.registerIcons;
45
import org.slf4j.LoggerFactory;
46

    
47
/**
48
 *
49
 * @author gvSIG Team
50
 */
51
@SuppressWarnings("UseSpecificCatch")
52
public class VCSGisJRegisterWorkspaceImpl extends VCSGisJRegisterWorkspaceView implements Component, VCSGisJRegisterWorkspace {
53

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

    
56
    private Dialog dialog;
57

    
58
    public VCSGisJRegisterWorkspaceImpl() {
59
        translate();
60
        initComponents();
61
    }
62

    
63
    private void initComponents() {
64
        this.btnAdd.setCursor(Cursor.getPredefinedCursor(Cursor.HAND_CURSOR));
65
        this.btnRemove.setCursor(Cursor.getPredefinedCursor(Cursor.HAND_CURSOR));
66
        
67
        fillWorkspaces();
68

    
69
        this.lstWorkspaces.addListSelectionListener((ListSelectionEvent e) -> {
70
            doUpdateEnableComponents();
71
        });
72
        this.lstWorkspaces.addListSelectionListener((ListSelectionEvent e) -> {
73
            if( e.getValueIsAdjusting() ) {
74
                return;
75
            }
76
            doWorkspaceSelected();
77
        });
78
        this.btnAdd.addActionListener((ActionEvent e) -> {
79
            registerWorkspace();
80
            fillWorkspaces();
81
        });
82

    
83
        this.btnRemove.addActionListener((ActionEvent e) -> {
84
            deregisterWorkspace();
85
            fillWorkspaces();
86
        });
87

    
88
        ToolsSwingUtils.ensureRowsCols(this, 11, 60);
89
        
90
//        SwingUtilities.invokeLater(() -> this.txtMsg.setText(""));
91

    
92
    }
93

    
94
    @Override
95
    public void registerWorkspace() {
96
        
97
        I18nManager i18n = ToolsLocator.getI18nManager();
98
        try {
99
            JDBCConnectionDialog connectionDialog = DALSwingLocator.getDataSwingManager().createJDBCConectionDialog();
100
            connectionDialog.showDialog();
101
            if (connectionDialog.isCanceled()) {
102
                return;
103
            }
104
            
105
            JDBCServerExplorerParameters serverExplorerParameters = connectionDialog.getServerExplorerParameters();
106
            DataServerExplorer serverExplorer = DALLocator.getDataManager().openServerExplorer(serverExplorerParameters.getProviderName(), serverExplorerParameters);
107
            VCSGisWorkspace ws = VCSGisLocator.getVCSGisManager().openWorkspace((JDBCServerExplorer) serverExplorer);
108
            if(ws == null){
109
                ToolsSwingLocator.getThreadSafeDialogsManager().messageDialog(
110
                        i18n.getTranslation("_Selected_connection_is_not_a_valid_workingcopy"), 
111
                        i18n.getTranslation("_Register_workingcopy"), 
112
                        JOptionPane.WARNING_MESSAGE);
113
                return;
114
            }
115
            VCSGisLocator.getVCSGisManager().registerWorkspace(ws);
116
            String url = ws.getExplorerParameters().getUrl();
117
            LOGGER.info("Register working copy '"+ws.getLabel()+"' ("+url+")");
118
            
119
        } catch (Exception ex) {
120
            LOGGER.warn(i18n.getTranslation("_Cant_register_workingcopy"),ex);
121
            
122
            ToolsSwingLocator.getThreadSafeDialogsManager().messageDialog(
123
                    i18n.getTranslation("_Cant_register_workingcopy"), 
124
                    i18n.getTranslation("_Register_workingcopy"), 
125
                    JOptionPane.WARNING_MESSAGE);
126
        }
127
    }
128

    
129
    @Override
130
    public void deregisterWorkspace() {
131
        I18nManager i18n = ToolsLocator.getI18nManager();
132
        ThreadSafeDialogsManager dialogs = ToolsSwingLocator.getThreadSafeDialogsManager();
133

    
134
        VCSGisWorkspaceDescriptor descriptor = (VCSGisWorkspaceDescriptor) lstWorkspaces.getSelectedValue();
135
        if( descriptor==null ) {
136
            return;
137
        }
138
        String url = descriptor.getExplorerParameters().getUrl();
139
        String msg = i18n.getTranslation("_You_will_delete_from_the_registry_XXX",new String[] {descriptor.getLabel()}) +
140
                "\n\n("+url+")\n\n" +
141
                i18n.getTranslation("_Are_you_sure");
142
        int n = dialogs.confirmDialog(
143
                msg, 
144
                i18n.getTranslation("_Working_copies"), 
145
                JOptionPane.YES_NO_OPTION, 
146
                JOptionPane.QUESTION_MESSAGE, 
147
                "_VCSGis_You_will_delete_from_the_registry"
148
        );
149
        if( n == JOptionPane.YES_OPTION ) {
150
            LOGGER.info("Desregister working copy '"+descriptor.getLabel()+"' ("+url+")");
151
            VCSGisLocator.getVCSGisManager().deregisterWorkspace(descriptor.getCode());        
152
        }
153
    }
154

    
155
    @Override
156
    public void setDialog(Dialog dialog) {
157
        this.dialog = dialog;
158
        this.doUpdateEnableComponents();
159
    }
160

    
161
    private void doUpdateEnableComponents() {
162

    
163
        if (this.lstWorkspaces.getSelectedIndex() != -1) {
164
            btnRemove.setEnabled(true);
165
        } else {
166
            btnRemove.setEnabled(false);
167
        }
168
    }
169

    
170
    @Override
171
    public JComponent asJComponent() {
172
        return this;
173
    }
174

    
175
    private void translate() {
176
        ToolsSwingManager swingManager = ToolsSwingLocator.getToolsSwingManager();
177
        swingManager.translate(this.btnAdd);
178
        swingManager.translate(this.btnRemove);
179
        swingManager.translate(this.lstWorkspaces);
180
    }
181

    
182
    private void fillWorkspaces() {
183
        
184
        int n = this.lstWorkspaces.getSelectedIndex();
185
        lstWorkspaces.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);
186

    
187
        lstWorkspaces.getSelectionModel().addListSelectionListener((ListSelectionEvent e) -> {
188
            doUpdateEnableComponents();
189
        });
190

    
191
        Map<String, VCSGisWorkspaceDescriptor> workspaces_map = VCSGisLocator.getVCSGisManager().getWorkspaces();
192
        List<VCSGisWorkspaceDescriptor> workspaces = new ArrayList<>(workspaces_map.values());
193
        Collections.sort(workspaces, CompareUtils.EQUALS_IGNORECASE_COMPARATOR);
194
        DefaultListModel<VCSGisWorkspaceDescriptor> model = new DefaultListModel<>();
195
        for (VCSGisWorkspaceDescriptor workspace : workspaces) {
196
            model.addElement(workspace);
197
        }
198
        lstWorkspaces.setModel(model);
199
        lstWorkspaces.setCellRenderer(new DefaultListCellRenderer());
200
        try {
201
            if( n<0 ) {
202
                n = 0;
203
            }
204
            if( n>=this.lstWorkspaces.getModel().getSize() ) {
205
                n = this.lstWorkspaces.getModel().getSize()-1;
206
            }
207
            this.lstWorkspaces.setSelectedIndex(n);
208
        } catch(Exception ex) {
209
            LOGGER.debug("",ex);
210
        }
211
    }
212

    
213
    @Override
214
    public ImageIcon loadImage(String imageName) {
215
        return VCSGisSwingManagerImpl.loadImage(imageName);
216
    }
217
    
218
    public static void selfRegister() {
219
        ToolsSwingUtils.registerIcons(
220
                VCSGisSwingImplLibrary.class, 
221
                "/org/gvsig/vcsgis/swing/impl/images",
222
                ICON_PROVIDER_NAME,
223
                new String[]{ ICON_GROUP_NAME, "vcsgis-workspace-add", "preferences"},
224
                new String[]{ ICON_GROUP_NAME, "vcsgis-workspace-remove", "preferences"}
225
        );  
226
    }
227

    
228
    @Override
229
    public boolean isProcessing() {
230
        return false;
231
    }
232

    
233
    private void doWorkspaceSelected() {
234
        VCSGisWorkspaceDescriptor descriptor = (VCSGisWorkspaceDescriptor) lstWorkspaces.getSelectedValue();
235
        if( descriptor==null ) {
236
            return;
237
        }
238
        String url = descriptor.getExplorerParameters().getUrl();
239
        this.txtMsg.setText(url);
240
        this.txtMsg.setCaretPosition(0);
241
    }
242

    
243
}