Statistics
| Revision:

gvsig-projects-pool / org.gvsig.online / trunk / org.gvsig.online / org.gvsig.online.swing / org.gvsig.online.swing.impl / src / main / java / org / gvsig / online / swing / impl / registerWorkspace / OnlineJRegisterWorkspaceImpl.java @ 9515

History | View | Annotate | Download (9.76 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.online.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.online.lib.api.OnlineLocator;
28
import org.gvsig.online.lib.api.workingcopy.OnlineWorkingcopy;
29
import org.gvsig.online.lib.api.workingcopy.OnlineWorkingcopyDescriptor;
30
import org.gvsig.online.swing.api.OnlineJRegisterWorkspace;
31
import org.gvsig.online.swing.impl.OnlineSwingLibraryImpl;
32
import org.gvsig.online.swing.impl.OnlineSwingManagerImpl;
33
import static org.gvsig.online.swing.impl.OnlineSwingManagerImpl.ICON_GROUP_NAME;
34
import static org.gvsig.online.swing.impl.OnlineSwingManagerImpl.ICON_PROVIDER_NAME;
35
import org.gvsig.tools.ToolsLocator;
36
import org.gvsig.tools.i18n.I18nManager;
37
import org.gvsig.tools.swing.api.Component;
38
import org.gvsig.tools.swing.api.ToolsSwingLocator;
39
import org.gvsig.tools.swing.api.ToolsSwingManager;
40
import org.gvsig.tools.swing.api.ToolsSwingUtils;
41
import org.gvsig.tools.swing.api.threadsafedialogs.ThreadSafeDialogsManager;
42
import org.gvsig.tools.swing.api.windowmanager.Dialog;
43
import org.gvsig.tools.util.CompareUtils;
44
//import org.gvsig.vcsgis.lib.OnlineLocator;
45
//import org.gvsig.vcsgis.lib.workspace.OnlineWorkspace;
46
//import org.gvsig.vcsgis.lib.workspace.OnlineWorkspaceDescriptor;
47
//import org.gvsig.vcsgis.swing.OnlineJRegisterWorkspace;
48
//import org.gvsig.vcsgis.swing.impl.OnlineSwingImplLibrary;
49
//import org.gvsig.vcsgis.swing.impl.OnlineSwingManagerImpl;
50
//import static org.gvsig.vcsgis.swing.impl.OnlineSwingManagerImpl.ICON_GROUP_NAME;
51
//import static org.gvsig.vcsgis.swing.impl.OnlineSwingManagerImpl.ICON_PROVIDER_NAME;
52
//import static org.gvsig.vcsgis.swing.impl.OnlineSwingManagerImpl.registerIcons;
53
import org.slf4j.LoggerFactory;
54

    
55
/**
56
 *
57
 * @author gvSIG Team
58
 */
59
@SuppressWarnings("UseSpecificCatch")
60
public class OnlineJRegisterWorkspaceImpl extends OnlineJRegisterWorkspaceView implements Component, OnlineJRegisterWorkspace {
61

    
62
    private static final org.slf4j.Logger LOGGER = LoggerFactory.getLogger(OnlineJRegisterWorkspaceImpl.class);
63

    
64
    private Dialog dialog;
65

    
66
    public OnlineJRegisterWorkspaceImpl() {
67
        translate();
68
        initComponents();
69
    }
70

    
71
    private void initComponents() {
72
        this.btnAdd.setCursor(Cursor.getPredefinedCursor(Cursor.HAND_CURSOR));
73
        this.btnRemove.setCursor(Cursor.getPredefinedCursor(Cursor.HAND_CURSOR));
74
        
75
        fillWorkspaces();
76

    
77
        this.lstWorkspaces.addListSelectionListener((ListSelectionEvent e) -> {
78
            doUpdateEnableComponents();
79
        });
80
        this.lstWorkspaces.addListSelectionListener((ListSelectionEvent e) -> {
81
            if( e.getValueIsAdjusting() ) {
82
                return;
83
            }
84
            doWorkspaceSelected();
85
        });
86
        this.btnAdd.addActionListener((ActionEvent e) -> {
87
            registerWorkspace();
88
            fillWorkspaces();
89
        });
90

    
91
        this.btnRemove.addActionListener((ActionEvent e) -> {
92
            deregisterWorkspace();
93
            fillWorkspaces();
94
        });
95

    
96
        ToolsSwingUtils.ensureRowsCols(this, 11, 60);
97
        
98
//        SwingUtilities.invokeLater(() -> this.txtMsg.setText(""));
99

    
100
    }
101

    
102
    @Override
103
    public void registerWorkspace() {
104
        
105
        I18nManager i18n = ToolsLocator.getI18nManager();
106
        try {
107
            JDBCConnectionDialog connectionDialog = DALSwingLocator.getDataSwingManager().createJDBCConectionDialog();
108
            connectionDialog.showDialog();
109
            if (connectionDialog.isCanceled()) {
110
                return;
111
            }
112
            
113
            JDBCServerExplorerParameters serverExplorerParameters = connectionDialog.getServerExplorerParameters();
114
            DataServerExplorer serverExplorer = DALLocator.getDataManager().openServerExplorer(serverExplorerParameters.getProviderName(), serverExplorerParameters);
115
            OnlineWorkingcopy ws = OnlineLocator.getOnlineManager().openWorkingcopy((JDBCServerExplorer) serverExplorer);
116
            if(ws == null){
117
                ToolsSwingLocator.getThreadSafeDialogsManager().messageDialog(
118
                        i18n.getTranslation("_Selected_connection_is_not_a_valid_workingcopy"), 
119
                        i18n.getTranslation("_Register_workingcopy"), 
120
                        JOptionPane.WARNING_MESSAGE);
121
                return;
122
            }
123
            OnlineLocator.getOnlineManager().registerWorkingcopy(ws);
124
            String url = ws.getExplorerParameters().getUrl();
125
            LOGGER.info("Register working copy '"+ws.getLabel()+"' ("+url+")");
126
            
127
        } catch (Exception ex) {
128
            LOGGER.warn(i18n.getTranslation("_Cant_register_workingcopy"),ex);
129
            
130
            ToolsSwingLocator.getThreadSafeDialogsManager().messageDialog(
131
                    i18n.getTranslation("_Cant_register_workingcopy"), 
132
                    i18n.getTranslation("_Register_workingcopy"), 
133
                    JOptionPane.WARNING_MESSAGE);
134
        }
135
    }
136

    
137
    @Override
138
    public void deregisterWorkspace() {
139
        I18nManager i18n = ToolsLocator.getI18nManager();
140
        ThreadSafeDialogsManager dialogs = ToolsSwingLocator.getThreadSafeDialogsManager();
141

    
142
        OnlineWorkingcopyDescriptor descriptor = (OnlineWorkingcopyDescriptor) lstWorkspaces.getSelectedValue();
143
        if( descriptor==null ) {
144
            return;
145
        }
146
        String url = descriptor.getExplorerParameters().getUrl();
147
        String msg = i18n.getTranslation("_You_will_delete_from_the_registry_XXX",new String[] {descriptor.getLabel()}) +
148
                "\n\n("+url+")\n\n" +
149
                i18n.getTranslation("_Are_you_sure");
150
        int n = dialogs.confirmDialog(
151
                msg, 
152
                i18n.getTranslation("_Working_copies"), 
153
                JOptionPane.YES_NO_OPTION, 
154
                JOptionPane.QUESTION_MESSAGE, 
155
                "_Online_You_will_delete_from_the_registry"
156
        );
157
        if( n == JOptionPane.YES_OPTION ) {
158
            LOGGER.info("Desregister working copy '"+descriptor.getLabel()+"' ("+url+")");
159
            OnlineLocator.getOnlineManager().deregisterWorkingcopy(descriptor.getCode());        
160
        }
161
    }
162

    
163
    @Override
164
    public void setDialog(Dialog dialog) {
165
        this.dialog = dialog;
166
        this.doUpdateEnableComponents();
167
    }
168

    
169
    private void doUpdateEnableComponents() {
170

    
171
        if (this.lstWorkspaces.getSelectedIndex() != -1) {
172
            btnRemove.setEnabled(true);
173
        } else {
174
            btnRemove.setEnabled(false);
175
        }
176
    }
177

    
178
    @Override
179
    public JComponent asJComponent() {
180
        return this;
181
    }
182

    
183
    private void translate() {
184
        ToolsSwingManager swingManager = ToolsSwingLocator.getToolsSwingManager();
185
        swingManager.translate(this.btnAdd);
186
        swingManager.translate(this.btnRemove);
187
        swingManager.translate(this.lstWorkspaces);
188
    }
189

    
190
    private void fillWorkspaces() {
191
        
192
        int n = this.lstWorkspaces.getSelectedIndex();
193
        lstWorkspaces.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);
194

    
195
        lstWorkspaces.getSelectionModel().addListSelectionListener((ListSelectionEvent e) -> {
196
            doUpdateEnableComponents();
197
        });
198

    
199
        Map<String, OnlineWorkingcopyDescriptor> workspaces_map = OnlineLocator.getOnlineManager().getWorkingcopy();
200
        List<OnlineWorkingcopyDescriptor> workspaces = new ArrayList<>(workspaces_map.values());
201
        Collections.sort(workspaces, CompareUtils.EQUALS_IGNORECASE_COMPARATOR);
202
        DefaultListModel<OnlineWorkingcopyDescriptor> model = new DefaultListModel<>();
203
        for (OnlineWorkingcopyDescriptor workspace : workspaces) {
204
            model.addElement(workspace);
205
        }
206
        lstWorkspaces.setModel(model);
207
        lstWorkspaces.setCellRenderer(new DefaultListCellRenderer());
208
        try {
209
            if( n<0 ) {
210
                n = 0;
211
            }
212
            if( n>=this.lstWorkspaces.getModel().getSize() ) {
213
                n = this.lstWorkspaces.getModel().getSize()-1;
214
            }
215
            this.lstWorkspaces.setSelectedIndex(n);
216
        } catch(Exception ex) {
217
            LOGGER.debug("",ex);
218
        }
219
    }
220

    
221
    @Override
222
    public ImageIcon loadImage(String imageName) {
223
        return OnlineSwingManagerImpl.loadImage(imageName);
224
    }
225
    
226
    public static void selfRegister() {
227
        ToolsSwingUtils.registerIcons(
228
                OnlineSwingLibraryImpl.class, 
229
                "/org/gvsig/vcsgis/swing/impl/images",
230
                ICON_PROVIDER_NAME,
231
                new String[]{ ICON_GROUP_NAME, "vcsgis-workspace-add", "preferences"},
232
                new String[]{ ICON_GROUP_NAME, "vcsgis-workspace-remove", "preferences"}
233
        );  
234
    }
235

    
236
    @Override
237
    public boolean isProcessing() {
238
        return false;
239
    }
240

    
241
    private void doWorkspaceSelected() {
242
        OnlineWorkingcopyDescriptor descriptor = (OnlineWorkingcopyDescriptor) lstWorkspaces.getSelectedValue();
243
        if( descriptor==null ) {
244
            return;
245
        }
246
        String url = descriptor.getExplorerParameters().getUrl();
247
        this.txtMsg.setText(url);
248
        this.txtMsg.setCaretPosition(0);
249
    }
250

    
251
}